Downstreamジョブから情報を収集する
JenkinsにおいてジョブAから別のジョブBを呼び出した後、ジョブAの中でジョブBに関連する情報を参照したいケースがあったりしますよね。例えば、ジョブBの中でAMIを作成し、ジョブAでは作成されたAMIのami-idを知りたいとか。こんな時どうするか。
ざっくり言うと下記。 - 取得したい情報をジョブBの中で環境変数に設定する - ジョブAでは、ジョブBのジョブ情報から環境変数を取得する
下記がジョブのサンプル。 - ジョブB (呼び出される側)
node { stage("set env") { env.DOWNSTREAM_MSG = "Hello, upstream" echo env.DOWNSTREAM_MSG } }
- ジョブA (呼び出す側)
node { stage('call downstream') { def my_job = build job: 'downstream-job', wait: true echo my_job.getBuildVariables().DOWNSTREAM_MSG } }
- ジョブAでは、
build job
を利用してジョブBを呼び出している - このbuild stepは、RunWrapperオブジェクトを返す
- RunWrapperオブジェクトにある
getBuildVariables()
メソッドは当該ジョブ(downstreamジョブ)の中で設定された環境変数のmapを返す - keyは環境変数名で、valueがその値
- このmapから取得する