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

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

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

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

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

Dynamic 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] 選択肢からGitのブランチを選んでJenkinsビルドできるようにする方法

#!/bin/sh

git ls-remote --heads --tags リポジトリ(hoge@hoge.com:/fuga/test.git) "tags/*[^}]" "heads/*" | sed -e "s|.*refs/||g" | sed -e "s|heads|origin|g" | tr "\n" "," | sed -e "s|,$||" | xargs echo "repo_list=" > /var/lib/jenkins/plugins/dynamic_extended_choice_parameter/branch_list.hoge

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}」を設定すれば完了です。実際にデプロイタスクの「パラメータ付きビルド」の画面で、プルダウンにブランチが表示されていれば成功です。


参考カテゴリ

オススメ記事

最新の投稿やよく見られているのオススメ記事一覧です。

AmazonLinuxでEC2起動時にスワップ領域の割り当てに失敗

EC2 起動時のスワップ領域割り当てですが、これまでは以下の記事を参考に、/etc/rc.local を使って行っていました。 ・ Amazon EC2(Linux)のswap領域ベストプラクティス しかし、最近になって、EC2 イン...

>>記事を確認する

【5分でできる】Laravel5.4から5.5へバージョンアップ

Laravel5.5 がついにリリースされたので、5.4 ベースで作っていたものをバージョンアップしてみました。 composer.json の以下の部分を 5.5.* に変更するだけですが、依存関係のパッケージも問題なくアップデ...

>>記事を確認する

【30分でできる】AWSのEC2にgoofysを入れてS3をマウント

過去に携わったプロジェクトで、S3FS の通信状態が悪い時があるので、アプリ側のプログラムを AWS SDK を使ったものに置き換えていこうという施策がありました。 S3FS の導入には関わっていなかったので、導...

>>記事を確認する

【30分でできる】ぐるなびAPIで飲食店の店舗情報取得

過去に作成した「ぐるなびAPI」のプログラムや、ぐるなびの Web Service が新しくなったこともあり、API からの情報取得プログラムを書き換えてみました。 以前の記事は下記になります。 ・ ぐるなびAPIで...

>>記事を確認する

NginxのFastCGIキャッシュで白い画面がキャッシュされる

以前から、トップページにアクセスすると、レスポンスステータスは 200 で返ってくるのに、画面に何も表示されない現象が稀に見受けられたので調査してみました。 さすがに機会損失にも繋がるということで、...

>>記事を確認する

Laravel5.4の認証ユーザーのパスワードハッシュについて

Laravel で用意されている認証モジュールを利用する際、ユーザーモデル(User.php)経由で登録されるパスワードのハッシュ方法について調べてみました。 Laravel 上ではパスワード文字列を bcrypt() のヘルパー...

>>記事を確認する

Laravel5.4のコントローラコンストラクタでAuth::user()が取得できない

Laravel5.4 で認証を通したアクセスに対して、コントローラのコンストラクタでユーザモデルの値を取得しようと思ったら、なぜか Auth::user() の値が取得できなくて悩みました。 public function __construc...

>>記事を確認する

NginxのHSTS(HTTP Strict-Transport-Security)の設定

「Let's Encrypt」のおかげで、全サイト SSL 化していますが、これまで nginx の設定では、http のアクセスがあった場合に https に 301 リダイレクトさせていました。 この場合、Googlebot に http のアク...

>>記事を確認する

GoogleMapのAPIキーの認証情報にリファラURL設定

昔は API キーを指定することで、JavaScript で GoogleMap が表示できていましたが、何年か前に、そのキーに対して認証情報の追加が推奨されました。 新規で発行する場合は必須になっているかもしれませんが...

>>記事を確認する

【30分でできる】AmazonLinuxでApache2.4+php7.1+Laravel5.5

先日、「 VagrantでCentOS6.9のイメージを使う 」の通り、CentOS6.9 には Apache2.4 と PHP7.1 で Laravel のフレームワークが使える環境を構築しました。 ただ、将来的には AWS かつ Amazon Linux 上で動か...

>>記事を確認する