希望在 Pipeline 異常的時候通知你?透過 Slack Notifier 完成目的
首先要到 slack 的 apps 管理頁面,https://xxx.slack.com/apps/manage
,其中 xxx 請代入自己的組織名稱,接著在上方搜尋的地方輸入 jenkins
會出現 Jenkins CI
點選進入 Jenkins CI Apps 頁面,左方有個 Install
按下去
接著會問你想要發訊息到哪一個 Channel,其實隨便選都可以,之後可以在 Jenkins 修改,這邊我選了 #general
頻道
按下之後會有完整的圖文教學,首先要到 Jenkins 管理頁面安裝 Slack Notification Plugin,我使用的 Jenkins 版本跟教學的圖片不一樣,會省略 Plugin 文字,所以要搜尋的話最好只用前面的 Slack Notification 會比較好找到。
安裝完外掛之後,要到管理 Jenkins,設定系統的Global Slack Notifier Settings 貼上從 Jenkins CI App 教學頁面給的設定
設定後可以按一下 Test Connection,成功時 Slack 會出現測試訊息
因為訊息的發佈應該是跨越 stage 的,所以我們在 stages 平行新增一個 post 宣告。當 pipeline 失敗的時候,使用 failure 宣告發送失敗的訊息
color 可以定義發佈訊息旁的顏色標示,失敗時用紅色
message 就是發佈的訊息內容,為了提醒所有人注意到東西壞掉了,可以加上 @channel,太吵的話可以拿掉,或是討論一下為什麼常常壞掉。還可以透過 Jenkins 的變數提供有用的訊息,像是 env.JOB_BASE_NAME 可以提供專案名稱,env.BUILD_URL 則是提供本次建置的網址
failure {
slackSend color: '#FF0000',
message: "@channel ${env.JOB_BASE_NAME} failure. (${env.BUILD_URL})"
}
除了壞掉的時候發出訊息通知外,我們也可以發送一些好消息,像是 fixed 代表東西修好了,也就是原先建置失敗的專案,第一次建置成功的時候發出通知。這次的顏色用綠色,訊息則簡單的說明哪個專案回到建置成功的狀態
fixed {
slackSend color: '#00FF00',
message: "@channel ${env.JOB_BASE_NAME} back to success."
}
因為完整的 Jenkinsfile 很長,這次不貼到文章上,直接給連結
因為成功的建置不會發送訊息,所以我們先故意用一個壞掉的來建置
同樣是 https://github.com/allyusd/jenkins-pipeline.git,branch 是 slack-notifier-fail
建置失敗,slack 收到了失敗通知
接著換成正確的 branch slack-notifier 然後再建置一次
這次建置成功,因為前一個建置失敗,所以 slack 收到修復通知
本文同步發表在部落格 Jenkins - Pipeline as Code - Slack Notifier - Jian-Ching 記事本