GitHub
Jenkins
CI
JenkinsPipeline

Jenkinsの画面からselect box(コンボボックス)を使ってパラメタを渡す

ダウンロード.png

ども、keita69sawada です。

ジョブを実行するときにパラメタ情報を渡したいと思ったことないですか?
同じようなジョブを大量に作成すると管理が大変だし、修正も大変です。

じゃ、「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が表示されます。

image.png

参考URL