Jenkins2からSlackへ通知する場合の覚え書き。
Slack側の設定
https://my.slack.com/apps から Jenkins
で検索。 Jenkins CI を選択し、Install
- Post to Channel
- Jenkinsからの通知するデフォルトチャネル。
Jenkins側でチャネルを明示しなかった場合に利用される。
Add Jenkins CI Integration を押下して登録完了。
登録が完了すると Jenkins CI Integration
のコンフィグレーションページが表示されるのでページ中の Token
の値をメモしておく。
後述のJenkins側の設定で利用する。
Jenkins側の設定
Slack通知用認証情報の作成
認証情報 -> System -> グローバルドメイン -> 認証情報の追加
- 種類
- Secret text
- スコープ
- グローバル
- Secret
- Slack側Jenkins CI IntegrationのTokenを指定
- ID
slack
- 説明
Slack通知用トークン
Slack Notification Pluginのインストール
Jenkinsにログインし、Jenkinsの管理 -> プラグインの管理 -> 利用可能 タブから Slack Notification Plugin
をインストール。
Slack Notification Pluginの設定
Jenkinsの管理 -> システム設定 -> Global Slack Notifier Settings から以下を設定。
- Base URL
- 指定なし
- Team Subdomain
- Slackのチーム名
- Integration Token
- 指定なし
- Integration Token Credential ID
Slack通知用トークン
- Is Bot User?
- オフ
- Channel
- 通知するSlackチャネル名。
JenkinsからSlackへ通知する際のチャネル名。
以上で Test connection を押下して実際に通知できるかテストをする。
成功すると指定チャネルに Jenkin CIからSlack/Jenkins plugin: you're all set on ...
というメッセージが送信される。
JenkinsジョブからSlackへ通知する
Jenkinsジョブの設定 -> General タブ -> ビルド後の処理追加 -> Slack Notifications から
- Notify Build Start
- Notify Aborted
- Notify Failure
- Notify Not Built
- Notify Success
- Notify Unstable
- Notify Regression
- Notify Back To Normal
Slackへ通知するトリガを選択する。
また 高度な設定… からジョブ毎に通知先チャネルやメッセージをカスタマイズできる。
Jenkins piplelineからSlackへ通知する
piplelineからはslackSend
ステップを利用してSlackへ通知する。
- 単純な通知
slackSend "hello!
- チャネルを指定して通知
slackSend channel:"#random", message: "hello random!"
- 色を指定して通知
slackSend color:"#ff0000", message: "hello red!"
ちなみにSlackへの通知に失敗した場合でもパイプライン自体は成功となる。
通知失敗時にパイプラインを失敗させたい場合はfailOnErrorオプションを真に設定する。
slackSend failOnError:true, message: "hello!"
ステップの詳細は Slack Notification Plugin を参照。
チャネルの指定と優先順位
通知するチャネルの指定は、
- Slack側Jenkins CI Integration設定
- Jenkins側システム設定
- Jenkins側ジョブ設定
の三カ所で行うことが出来る。優先順位は
Jenkins側ジョブ設定
-> Jenkins側システム設定
-> Slack側Jenkins CI Integration設定
の順となっている。