以前Pipeline Plugin
として呼び出されていたWorkflow Plugin
をインストールしました。
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin
Job Dslを使用してPipeline
タイプのジョブを作成および構成する方法を知りたい
pipelineJob
を使用する必要があります。
pipelineJob('job-name') {
definition {
cps {
script('logic-here')
sandbox()
}
}
}
ロジックをインラインで定義できます:
pipelineJob('job-name') {
definition {
cps {
script('''
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
echo 'logic'
}
}
stage('Stage 2') {
steps {
echo 'logic'
}
}
}
}
}
'''.stripIndent())
sandbox()
}
}
}
または、ワークスペースにあるファイルからロードします。
pipelineJob('job-name') {
definition {
cps {
script(readFileFromWorkspace('file-seedjob-in-workspace.jenkinsfile'))
sandbox()
}
}
}
例:
シードジョブファイルの構造:
jobs
\- productJob.groovy
logic
\- productPipeline.jenkinsfile
productJob.groovy
コンテンツ:
pipelineJob('product-job') {
definition {
cps {
script(readFileFromWorkspace('logic/productPipeline.jenkinsfile'))
sandbox()
}
}
}
この質問は、Job DSLを使用して、プロジェクトのJenkinsfileを参照するパイプラインジョブを作成する方法を求めているものと考えており、これまでの回答で示されているように、ジョブの作成と詳細なステップ定義を組み合わせていませんこれは理にかなっています:Jenkinsのジョブの作成とメタデータの構成(説明、トリガーなど)はJenkinsの管理者に属することができますが、開発チームはジョブの実際の動作を制御する必要があります。
@meallhour、あなたが望んでいるのは以下ですか? (Job DSL 1.64で機能します)
pipelineJob('DSL_Pipeline') {
def repo = 'https://github.com/path/to/your/repo.git'
triggers {
scm('H/5 * * * *')
}
description("Pipeline for $repo")
definition {
cpsScm {
scm {
git {
remote { url(repo) }
branches('master', '**/feature*')
scriptPath('misc/Jenkinsfile.v2')
extensions { } // required as otherwise it may try to tag the repo, which you may not want
}
// the single line below also works, but it
// only covers the 'master' branch and may not give you
// enough control.
// git(repo, 'master', { node -> node / 'extensions' << '' } )
}
}
}
}
Job DSL pipelineJobを参照します: https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob で、ハッキングして http:// job- dsl.herokuapp.com/ 生成された構成を確認します。
この例はうまくいきました。私のために働いたものに基づいた別の例を次に示します。
pipelineJob('Your App Pipeline') {
def repo = 'https://github.com/user/yourApp.git'
def sshRepo = '[email protected]:user/yourApp.git'
description("Your App Pipeline")
keepDependencies(false)
properties{
githubProjectUrl (repo)
rebuild {
autoRebuild(false)
}
}
definition {
cpsScm {
scm {
git {
remote { url(sshRepo) }
branches('master')
scriptPath('Jenkinsfile')
extensions { } // required as otherwise it may try to tag the repo, which you may not want
}
}
}
}
UIを介して最初にパイプラインを構築する場合、config.xmlファイルとJenkinsドキュメントを使用できます https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob パイプラインジョブを作成します。
Job DSLでは、パイプラインはまだワークフローと呼ばれます。 workflowJob を参照してください。
次のJob DSLリリースには、パイプラインのいくつかの機能強化が含まれます。 JENKINS-32678 。
Gitリポジトリを使用している場合は、リポジトリのルートディレクトリにJenkinsfileというファイルを追加します。これには、ジョブのDSLが含まれている必要があります。