Pipelineから別のジョブを実行する
Jenkinsにおいて、あるジョブA(upstream)から別のジョブB(downstream)を呼ぶ方法を調べたのでメモ。 呼ばれる側のジョブB(downstream job)が下記のようなケースを考える。
- ジョブB
// 下記変数はJenkinsのパラメタとして定義してあるとする FIRST_MESSAGE: (default/string) hello SECOND_MESSAGE: (default/string) how are you THIRD_MESSAGE: (default/string) good-bye node { stage('print parameters') { print FIRST_MESSAGE print SECOND_MESSAGE print THIRD_MESSAGE } }
上記のジョブを別のジョブA(upstream job)から実行したい場合、buildステップを利用する。以下、サンプル。呼び出されるジョブBの名前をprint_message
としているケース。
- ジョブA
node { stage('chain job (no params)') { build job: 'print-message', wait: true } stage('chain job (pass params)') { build job: 'print-message', parameters: [ string(name: 'FIRST_MESSAGE', value: 'This is a message from parents') ], wait: true } }
- 1つめの
build job
はパラメタなしでジョブを呼び出し - 2つめの
build job
はパラメタFIRST_MESSAGE
を設定してジョブを呼び出し