このブログをご覧のみなさん、こんにちは。

前回の記事で 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 が完了するまで、ビルドの処理を実行しません
  • Trigger When build is : ビルドの結果に応じて次のビルドを実行するかどうかを制御できます(Stable, Unstable 他)
  • Trigger build without parameters : ここをチェックすると、Jenkins 標準の「他のプロジェクトのビルド」と同じ機能になります
  • Add Parameters : ビルド後に Job を起動する と同様
  • Add ParameterFactories : 起動する Job をパラメーターを変えて連続して実行できます

まとめ

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