如何為 Slack 設定 Jenkins 通知 ?
讓 Slack 成為 CI 的訊息中心
Contents
當 Jenkins 的 job 執行失敗時,我們希望在 Slack 的 channel 能收到通知,如此可避免所有訊息都透過 Email,只有真正與人相關的訊息才使用 Email,讓 Slack 成為持續整合的訊息中心。
Version
macOS High Sierra 10.13.3
Docker for Mac 17.20.0-ce-mac49 (21995)
Jenkins 2.89.4
Slack 3.0.5
設定 Slack
新增 Channel
- 按下
Channels
右側的+
新增 channel
- Privacy : 設定為
Public
或Private
channel - Name : 設定 channel 名稱
- Purpose : channel 的功能描述,可以不輸入
- Send invites to : 設定 channel 成員,可以稍後再設定
- 按
Create Channel
開始建立 channel
- 按
Got It!
進入 channel
- 正式進入 channel,將來 Jenkins 訊息會傳進此 channel
新增 Notification
- 選擇右上方的
option
- 選擇
Add an app
新增 Jenkins App
Slack 將開啟瀏覽器
- 稍微往下捲輸入
Jenkins
- 選擇
Jenkins CI
新增 Configuration
- 按
Add Configuration
加入 Jenkins CI
新增 Integration
- 按
Add Jenkins CI Integration
正式加入整合 Jenkins
Slack 設定完成
- 介紹 Jenkins 設定流程
Slack 部分已經設定完成,接下來是 Jenkins 的設定
Slack 網頁先不要關閉,稍後會用到
設定 Jenkins
Manage Jenkins
- 左側選擇
Manage Jenkins
- 右側選擇
Manage Plugins
安裝 Slack Plugin
- 選擇
Avaliable
tab - 選擇
Slack Notification Plugin
- 按
Download now and Install after restart
新增 Webhook
- 左側選擇
Manage Jenkins
- 右側選擇
Configure System
在 Global Slack Notifier Settings
下設定
- Base URL : 貼一段 Slack 所提供的 URL
- Integration Token : 貼一段 Slack 所提供的 token
Q : 要貼什麼 Base URL 與 token 呢 ?
回到 Slack 最後的網頁往下捲到 Step 3
- 將
Base URL
與Integration Token
複製貼上
最後按 Save
存檔。
設定 Job
- 選擇要發 Slack 通知的 job
- 按
Configure
設定
在 Jenkins 執行完 build
動作後,無論成功或失敗,將結果通知 Slack
- 選擇
Post-build Actions
- 選擇
Add post-build action
- 選擇
Slack Notification
選擇希望 Jenkins 通知 Slack 的動作 :
- 選擇
Notify Failure
、Notify Success
與Notify Unstable
建議不用選擇太多 action,
success
確認 Jenkins 還活著,Failure
與Unstable
確認 CI 失敗即可
新增一個 Git commit,就可發現 Slack 收到 Jenkins 測試成功 綠燈
的訊息。
Conclusion
- Slack 提供了一個不錯的 CI 訊息平台,讓訊息從 Email 解放