Jenkinsの画面からselect box(コンボボックス)を使ってパラメタを渡す方法
ども、k69 です。
ジョブを実行するときにパラメタ情報を渡したいと思ったことないですか?
同じようなジョブを大量に作成すると管理が大変だし、修正も大変です。
じゃ、「Jenkinsの画面からselect box(コンボボックス)を使ってパラメタを渡そう!」と
ウニウニしたがこの記事です。
対象読者
- jenkinsのジョブ実行時にパラメタ指定し、処理を分岐したい人
- 似て非なるジョブをたくさん作りたくない人
- Jenkinsを使ってciしたい人
前提条件
- GitHubなどを使ってjenkinsfileを登録・連携している人
手順
1. jenkinsファイルを作成
ポイントは2つ。
- その1 タイムアウトの指定
ジョブ実行時にselect boxを表示するため、待ち合わせが発生します。
永遠に待ち続けないようにタイムアウトを設定しましょう。 - その2 選択した値を変数格納
下記の例だと、selected
変数にselect boxで選択された値を格納しています。
:warning:def selected
とするとローカル変数になるため、echo "${selected}"
で変数が参照できないくなり、エラーとなるので注意!
jenkinsfile
pipeline {
agent any
stages {
stage('Stage1') {
steps {
script {
try {
timeout(time:3, unit:'SECONDS') {
selected = input message: 'Please select target branch !', parameters: [choice(choices: "develop\nmaster\n", description: 'this job create image for target brach !', name: 'branch')]
}
} catch(Exception e){
selected = "Timeout !!"
}
}
}
}
stage('Stage2') {
steps {
echo "${selected}"
}
}
}
}
2. 実行結果
下図の"Stage1"の"187ms"あたりをクリックするとselect boxが表示されます。
参考URL
- Fail to generate correct input step with choice param syntax from snippet generator
https://issues.jenkins-ci.org/browse/JENKINS-34590