ツール

Jenkinsのビルドパラメータにgitのブランチ一覧をプルダウンで表示する

Jenkins でデプロイタスクを実行する際に、git のブランチ名を入力できるようにしていましたが、どうせならプルダウンで選択できるようにした方がいいかなっと思い、プラグインを使って実現しました。

今回はその方法を紹介します。

プラグインを活用する

Jenkins のプラグインは似たようなものがいくつかありましたが、設定時に Exception が出るプラグイン(Extended Choice Parameter Plug-In)などもありましたので、今回は下記のプラグインを採用しました。

上記プラグインは、特定の文字列で区切られた文字列をセパレートして複数の選択肢を生成してくれます。

よって、テキストファイルなどに以下のようなブランチリストの文字列を用意することで設定可能です。

物理ファイルが作りたくない場合は、動的に文字列を吐き出すプログラムなどを設置しておいてもいいですね。あっ、http で参照可能かどうかは別途調べておきます。

repo_list = origin/master,origin/test

ブランチリストの作成

ブランチリストは git コマンドで該当のリポジトリからブランチの一覧を取得し、それを加工します。

「git ls-remote –heads –tags」でタグを含めた一覧が取得できますが、デプロイ時に指定したい origin/master は refs/heads/master になっているので、前列のリビジョン番号のハッシュ文字列と一緒にそれを置換してあげます。

その後、改行をカンマに変換して、冒頭の通り repo_list の変数に代入するようなフォーマットで出力します。

注釈が付いているタグの場合、{} で終わるタグ名が付いたものが一緒に取得されるので、それを除外しています。

下記のシェルを実行するタスクを用意して、ビルド・トリガの「定期的に実行」で「H 10-19 * * 1-5」を設定しておくと 1 時間に 1 回、最新のブランチリストが作成されます。

残業や休日出勤がないと仮定して、業務時間中だけ動作するようにしています(笑)

一部、以下のサイトを参考にさせて頂きました。

Jenkinsのタスク設定

Jenkins タスクの設定方法は、タスクの画面で「ビルドのパラメータ化」にチェックを入れ、パラメータの追加ボタンから「Moded Extended Choice Parameter」を選択します。

以下、設定内容ですが、「Property File」と「Property Key」は、それぞれ上記のブランチリストのファイルパスと、カンマ区切りの文字列を代入した repo_list を指定します。デフォルトは用途に合わせて変更してください。

Name・・・branch_name(何でも構いません)
Description・・・デプロイ対象のブランチ(何でも構いません)
Parameter Type・・・Single Select
Property File・・・/var/lib/jenkins/plugins/dynamic_extended_choice_parameter/branch_list.hoge
Property Key・・・repo_list
Default Value・・・origin/master(他のブランチでも構いません)
Number of Visible Items・・・5(何でも構いません)
Delimiter・・・,(カンマ)
Bind with field・・・””(空文字にしないとJSでbindfieldnameの変数の影響でエレメントがundefinedになる)

後は、「ソースコード管理」の項目で Branches to build の Branch Specifier に、上記の Name で指定した「${branch_name}」を設定すれば完了です。

実際にデプロイタスクの「パラメータ付きビルド」の画面で、プルダウンにブランチが表示されていれば成功です。