(Jenkins 1.556, Email-ext plugin 2.37.2.2)
Pre-send Script とは?
Pre-send Script はメール送信前にメッセージなどの編集ができる機能です。そのまんまですね。Pre-send Script では以下のオブジェクトが扱えます。
msg | MimeMessage オブジェクト |
logger | ログ書き込みオブジェクト |
build | ビルドオブジェクト |
cancel | boolean, 送信キャンセル |
msg はメールの内容を扱う MimeMessage オブジェクトです。宛先の追加やメッセージの追加などができます。
logger はログ出力用のオブジェクトです。logger.println でビルドログに出力できます。
build はビルド情報を扱うオブジェクトです。結果や変更点などビルドに関わる情報をここから取得できます。
cancel に true をセットすると、その名の通りメールの通知がキャンセルされます。
設定方法
拡張e-mail通知の「Advanced Settings...」を開くと「Pre-send Script」の項目があるので、ここの groovy でスクリプトを書き込みます。注意が必要なのは Pre-send の前に宛先が空だと Pre-send Script は実行されず "An attempt to send an e-mail to empty list of recipients, ignored." でメールが送信されませんので、宛先を編集する場合は気をつけてください。
Examples
上流ビルドのコミッタ-にメール通知する
上流ビルドのコミッタ-にメール通知する方法 - akira0622's blog特定のログが含まれる場合にメール通知をキャンセル
def log = build.getLog() pattern = /test/ if( log=~pattern ) { logger.println("キャンセルした") cancel |= true }
ユーザーがビルドを実行した場合にメール通知をキャンセル
def cause = build.getCause(hudson.model.Cause.UserIdCause.class) if( cause ) { logger.println("キャンセルした") cancel |= true }
定期ビルドの場合に宛先を追加
import javax.mail.Message.RecipientType def cause = build.getCause(hudson.triggers.TimerTrigger.TimerTriggerCause.class) if( cause ) { msg.addRecipients(RecipientType.TO, "hogehoge@hoge.co.jp") }
その他の使い方は公式の Recipe を参照してください。
https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+Recipes
0 件のコメント:
コメントを投稿