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を設定してジョブを呼び出し

参考