Jenkins 下流ジョブから上流ジョブのパラメータを取得する方法
Docker Imageをビルドしている上流ジョブの終了をトリガーに、
できたてほやほやのイメージ使ってテストするジョブを作ろうと思い、下流ジョブから上流ジョブのビルドパラメータを取る方法を調べたのでカキコ
準備
- [Jenkinsの管理] -> [In-process Script Approval] をクリック
- 以下のように"method hudson.model.Run getEnvironment"と"method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild"を承認欄に追加
スクリプト
以下の行ををジョブに組み込めば、環境変数経由で上流ジョブのパラメータの取得が可能
stage('Get Upstream Parameter') {
steps {
script {
upstreamBuilds = currentBuild.upstreamBuilds
if (upstreamBuilds.isEmpty()) {
// Job is run by manually -> Do nothing.
} else {
// Job is run by trigger of upstream success.
def upstream = upstreamBuilds[0].rawBuild
def upstreamEnv = upstream.environment
echo upstreamEnv["container_name"]
echo upstreamEnv["branch_name"]
}
}
}
}
方法2:上流ジョブから、パラメータ付きで下流ジョブを実行
こっちは簡単で、以下のように書くだけでOK。
build job: 'DownstreamJob', parameters: [
[$class: 'StringParameterValue', name: 'container_name', value: "${params.container_name}"]
]
ただ、上流側に呼び出し処理を実装すると、
今回のDocker image buildみたいに不特定多数のテストジョブの上流になる場合、
テストジョブが増えるたびに上流スクリプトに更新がかかることになるので、
「上流から下流へパラメータつきでジョブを実行する」のか「下流から上流のパラメータを取りにいく」のかは、作ろうとしてるテストから考えた方がよさそう
参考資料
Jenkinsの仕様を扱った資料少ないなぁ思ってたけど、探してみると意外と出てきますね(単なる勉強不足だった..)
Author And Source
この問題について(Jenkins 下流ジョブから上流ジョブのパラメータを取得する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/yusukeh0710/items/0e4a1204422329355e8e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .