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

デプロイ後にメールで通知しなければならない場合があります。Jenkins で自動デリバリーを実施しているのであれば、この作業も Jenkins に取り込みたいと思うはずです。しかし、Jenkins に標準で備わっているメール通知だけでは通知する内容が不足してしまうことが多々あります。

ではどうすれば良いか?

そう、Jenkins が送信するメールをカスタマイズすれば良いのです。カスタマイズするには Email-ext プラグインを使います。

Email-ext プラグインとは?

Jenkins が送信するメールをカスタマイズするプラグインで宛先や Reply-To 、形式(text や html)、件名、本文、いつ送信(ビルド前、ビルド後など)などをカスタマイズできます。特に、ビルドの失敗やテストの失敗、ビルドの正常への復帰などの状況に応じて送信するメールを個別にカスタマイズできるのが特徴で、2015年3月現在のバージョンは 2.39 です。

インストール

[Jenkins の管理]→[プラグインの管理]→[利用可能タブ]を選択して、Email-ext plugin を選択してインストールします。

設定方法

共通設定と、各 Job 固有設定に分けて行えます。各 Job 固有設定で上書き可能なので、全 Job の管理者ではない場合は各 Job 固有設定のみ変更します。

以下は、各 Job 固有設定です。

  • Disable Extended Email Publisher : ここをチェックすると、標準の設定を上書き
  • Project Recipient List : 送信対象者リスト
  • Project Reply-To List : Reply-To リスト
  • コンテンツ形式 : text/plain 形式なのか、text/html 形式なのか
  • デフォルトサブジェクト : メールのデフォルトの件名
  • デフォルトコンテンツ : メールのデフォルトの本文、利用可能なトークン(置換用の文字列)は大量にあるので後述
  • Attachments : 添付ファイル
  • Attach Build Log : ビルドログを添付するのかどうか
  • トークンリファレンス : 利用可能なトークンの一覧
  • Pre-send Script : 送信前に実行するスクリプト
  • Additional groovy classpath : groovy へのクラスパス(利用する場合のみ)
  • Save to Workspace : ここをチェックすると、ワークスペースを保存する
  • Triggers : いつ送信するのかの定義。Always、Before Build など多数

以下は利用可能なトークンです。

${DEFAULT_SUBJECT} : デフォルトの件名
${DEFAULT_CONTENT} : デフォルトの本文
${DEFAULT_PRESEND_SCRIPT} : デフォルトの Pre-send Script
${PROJECT_DEFAULT_SUBJECT} : プロジェクトのデフォルトの件名
${PROJECT_DEFAULT_CONTENT} : プロジェクトのデフォルトの本文
${BUILD_ID} : ビルド ID
${BUILD_NUMBER} : ビルド番号
${PROJECT_URL} : プロジェクトの URL
${BUILD_URL} : ビルドの URL
${JENKINS_URL} : Jenkinsの URL
${PROJECT_NAME} : プロジェクト名
${PROJECT_DISPLAY_NAME} : プロジェクトの表示名
${JOB_DESCRIPTION} : ジョブの説明
${CHANGES_SINCE_LAST_UNSTABLE} : 最後にビルドが不安定になった以降の変更点
${BUILD_STATUS} : ビルド状態(成功、失敗他)
${SVN_REVISION} : Subversion のリビジョン番号
${SCRIPT} : groovy script を使ってのカスタムメッセージを挿入できる
${CHANGES} : 前回のビルドからの変更点
${BUILD_LOG_REGEX} : ビルドログを正規表現で抽出できる
${BUILD_LOG_EXCERPT} : ビルドログからの抜粋
${BUILD_LOG} : ビルドログ
${JELLY_SCRIPT,template="TEMPLATE_NAME"} : Jelly スクリプトをメールのテンプレートとして読み込んでそれを挿入できる
${TEST_COUNTS,var="TYPE"} : テストの数、TYPEの部分は total や fail など
${BUILD_LOG_MULTILINE_REGEX} : ビルドログを正規表現で抽出できる
${CAUSE} : ビルドが失敗した原因
${FAILED_TESTS} : 失敗したテスト
${FILE,path="PATH"} : 添付ファイル、PATH にはワークスペースからのパスを記載する
${CHANGES_SINCE_LAST_SUCCESS} : 最後にビルドが成功した以降に更新されたファイル
${ANALYSIS_FIXED} : フィックスされた分析の数
${ANALYSIS_NEW} : 新規追加の分析の数
${ANALYSIS_COUNT} : 分析数
${ANALYSIS_RESULT} : プラグインによる分析結果
${CHECKSTYLE_RESULT} : Checkstyle の分析結果
${CHECKSTYLE_COUNT} : Checkstyle での警告の数
${CHECKSTYLE_FIXED} : Checkstyle でフィックスされた警告の数
${CHECKSTYLE_NEW} : Checkstyle で新規追加の警告の数
${GIT_BRANCH} : Git のブランチ名
${GIT_REVISION} : Git のリビジョン番号
${WARNINGS_FIXED} : フィックスされた警告の数
${WARNINGS_NEW} : 新規追加の警告の数
${WARNINGS_COUNT} : 警告数
${WARNINGS_RESULT} : プラグインによる警告結果
${BUILD_NUMBER} : ビルド番号
${ENV,var="VARIABLENAME"} : 環境変数。VARIABLENAME に環境変数名を記載する
${PROPFILE,file="FILENAME",property="PROPERTYNAME"} : プロパティファイル、FILENAME にはワークスペースからのパスを記載する

実際に設定して送信されたメールは以下になります。

各位
お疲れ様です。
12:00 頃に hogehoge の hugahuga をリリースしました。
# Change log
#1: サンプルチケット
よろしくお願いします。