Jenkinsによるパラメーター連携の自動化

前回、Jenkinsでカスタマイズしたメール通知ができるようになった。では1つのJobでデプロイとメール通知をすれば良いかと言うと、メンテナンス性(=個別のJobにデプロイとメール通知を定義すると、後からメールの設定を弄る際にすべてのJobを弄る必要がある)のためには分けた方が良いのと、似たようなJobを量産しない、マイクロサービス化しないためである。Jenkinsでは標準でJob起動後に別のJobを起動できる仕組みがあるが、残念ながらパラメーターを引き継げない。そのため、メール通知する際にどのサービスがどのタグ、どういった変更をリリースしたのか渡すことができない。

ではどうすれば良いか?

Jenkinsをパラメータを次のJobに引き継げるようにカスタマイズすれば良い。カスタマイズするにはParameterized Triggerプラグインを使う。

Parameterized Triggerプラグインとは?

別のJobをいつ起動するか、どんなパラメータを渡すかなどをカスタマイズできる。

特に、ビルドの失敗やテストの失敗、ビルドの正常への復帰などのビルドの状況に応じて起動するJobをカスタマイズできるのが特徴で、2015年3月現在のバージョンは2.26。

インストール

[Jenkinsの管理]→[プラグインの管理]→[利用可能タブ]を選択して、Parameterized Trigger Pluginを選択してインストール。

設定方法

ビルド後にJobを起動する

ビルド後にJobを起動する場合は「Trigger parameterized build on other projects」で設定する。

  • Projects to build:ビルドするプロジェクト名(Job名)
  • Trigger When build is:ビルドの結果に応じて次のビルドを実行するかどうかを制御できる(Stable, Unstable他)
  • Trigger build without parameters:ここをチェックすると、Jenkins標準の「他のプロジェクトのビルド」と同じ機能になる
  • Add Parameters:どのパラメータを次のJobに渡すのかを指定できる。
    • Boolean parameters:true/falseのパラメーターを設定できる
    • Build on the same node:次のJobを同じnode(=スレーブ)でビルドできる
    • Current build parameters:このビルドのパラメータをそのまま次のJobに引き継げる
    • Parameters from properties file:プロパティファイルに設定されたパラメーターを次のJobに引き継げる
    • Predefined parameters:次のJobに渡すパラメーターを定義できる
    • Restrict matrix execution to a subset:Groovy filterを設定できる * Subversion revision:Subversionのリビジョン番号を引き継げる

ビルド中にJobを起動する

Parameterized Trigger Pluginではビルド後ではなく、ビルド中にもJobを起動できる。ビルド中にJobを起動する場合は「Trigger/call builds on other projects」で設定する。

  • Projects to build:ビルドするプロジェクト名(Job名)
  • Block until the triggered projects finish their builds:ここをチェックすると、起動した別Jobが完了するまで、ビルドの処理を実行しない
    ルドの結果に応じて次のビルドを実行するかどうかを制御できる(Stable, Unstable他)
  • Trigger build without parameters:ここをチェックすると、Jenkins標準の「他のプロジェクトのビルド」と同じ機能になる
  • Add Parameters:ビルド後にJobを起動すると同様
  • Add ParameterFactories:起動するJobをパラメーターを変えて連続して実行できる

まとめ

これらを駆使することで、デプロイ後にメール通知がJenkinsで自動的に可能となる。