JenkinsのSlack Notificationプラグインを利用することで、PipelineスクリプトからSlackに通知を飛ばせます(他のプラグイン同様、設定画面からインストール可能)。
エラー通知は例外処理で分岐させる
slackSendの基本的な使い方は、デバッグログのように実行したい場所に置くだけですが、素朴に処理の最後でslackSendすると正常終了するケースでは通知されますが、処理途中でエラーが起きるとslackSendに到達することなくジョブが終了します。
エラーの際にも通知したい場合には、groovyのtry – catch構文を利用して、tryブロックに正常系、catchブロックのエラーハンドリングの中で、エラー通知用のslackSendを実装する手があります。
以下のように例外処理と組み合わせることで、成功/失敗の表現を分かりやすく切り分けられます。
node {
try {
stage 'Checkout build repo'
checkout scm
stage 'Stage 1'
sh('make')
sh('make install')
slackSend(color: "good", message: "Build Completed = ${env.JOB_NAME} ${env.BUILD_NUMBER}")
} catch(err) {
slackSend(color: "danger", message: "Build Failed = ${env.JOB_NAME} ${env.BUILD_NUMBER}: ${err}")
throw(err)
} finally {
}
}
SlackのコマンドはslackSend
です。
colorについては、#439EF0といった16進表記の指定のほか、good / warning / danger の3種類が事前定義されています。
slackSendのその他のオプションは、 公式ドキュメントにリファレンスがあります。
なお、Slackではなく例外処理の話題になりますが、上記のようにcatch{}節に処理を記述するとエラー処理できたと見なされて正常終了するので、最後にthrow(err)で再度エラーを発生させています。
⁋ 2017/09/09↻ 2024/12/18
中馬崇尋
Chuma Takahiro
Chuma Takahiro