LoginSignup
3
1

More than 1 year has passed since last update.

Jenkinsの「Active Choices」プラグインでビルドジョブのパラメーターをダイナミックに変更する

Last updated at Posted at 2022-11-17

概要

Jenkins Pipelineでパラメーターの数が多くなると入力の手間がかかるので、使いやすいようにパラメーターの選択肢をAPIから取得したり、他のパラメーターの値を参照しダイナミックに変更したりしたいと思いました。
「Active Choices」のプラグインを利用すれば、Groovyスクリプトで色々なパラメーター変動が可能になります。

プラグインのインストール

Manage Jenkins → Manage Plugins → Availableタブを選択 → 「Active Choices」を検索しプラグインをインストールします。
001.png

インストールが完了したら、ビルドジョブの設定画面に新たなパラメーター種類が3つ追加されます。
002.png

1. Active Choices パラメーター
Groovyスクリプトでダイナミックにパラメター選択を表示することができます。

2. Active Choices Reactive パラメーター
「Active Choices」のようにGroovyスクリプトでダイナミックに選択肢を表示することもできる上に、スクリプトの処理でユーザーが入力した他のパラメーターの値を参照することも可能です。

3. Active Choices Reactive Reference パラメーター
機能としては「Active Choices Reactive」と同じですが、見た目をカスタムHTML等で見やすくすることができます。

ジョブの設定

今回は1と2を利用してみます。

1. Active Choices パラメーター

Add Parameter → Active Choices Parameter でパラメーターを追加します
003.png

とりあえずシンプルなスクリプトを書いてみました。
表示方法も色々ありますが、今回はラジオボタンにします。
004.png

設定が適用されたら、ジョブ実行する時のパラメーター入力画面でラジオボタンが表示されます。
005.png

次のサンプルでは、APIからパラメーターを取得してドロップダウンリストで表示してみたいと思います。

サンプルのために国一覧を返してくれる「REST Countries」APIを利用します。jsonのレスポンスには他のデーターも含まれますが、国名だけ表示したいので、Groovyスクリプトで自由にいじれるのがとても便利です。
006.png

上記の設定が適用されたら、APIから取得した国名の一覧をパラメーターとして選択できるようになります。
007.png

他に、gitブランチの一覧を取得すること等にもよく利用しています。gitブランチが多くなるとドロップダウンリストが長くなりますが、スクリプトで絞ることも可能ですので色々便利でいじるのも楽しいです。

2. Active Choices Reactive パラメーター

Add Parameter → Active Choices Reactive Parameter でパラメーターを追加します。
先ほど1で追加したCONFIGパラメーターの入力を参照し、サーバー一覧をドロップダウンで表示したいと思います。
008.png

【大事!】 CONFIGの値を参照するためには、その下部にある「Referenced parameters」という欄に「CONFIG」を入力しなければなりません。
複数パラメーターを参照したい時は「,」で複数パラメーター名を入力すればいけます(例:「CONFIG, COUNTRY, AAA, BBB」
009.png

設定が適応されると以下のようにSERVERのドロップダウンリストの中身が選択されたCONFIGによって変動することになります。
g001.gif

最後に、国一覧のサンプルも値を参照しActive Choices Reactive Parameterで利用してみます。
選択された国によって言語選択のチェックボックスが変動するようにします。このサンプルのための各国の言語一覧もREST Countries APIから取得します。
010.png

忘れずに「Referenced parameters」の欄には参照したいCOUNTRYパラメーターを追加します。
011.png

上記の設定が適応されたら、ジョブ実行時のパラメーター入力画面では、国を選択した時に言語のチェックボックス内容が変動するようになります。
g002.gif

最後に

「Active Choices」プラグインのスクリプトは自由度が高く、日々の手動入力の手間を削減するために色々できるので便利です。
一方、API取得や他のパラメーター参照などにより画面のロードが長くなることと、パラメーター切り替え時に一瞬フリーズが感じてしまう現象もありますので、不要なパラメーターでは利用しないように気を付けていただければと思います。

リンク

Active Choices - Jenkins Plugins
REST Countries

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1