由於現在使用 Slack 作為溝通平台的開發團隊越來越多,所以將 Jenkins 的建置結果傳送到 Slack 頻道內也是一個相當方便的通知做法。讀者可以先自行在 Slack 申請一個帳號並建立一個 workspace 作為測試。
申請好帳號及 workspace 後,在瀏覽器上瀏覽 https://{workspace-url}.slack.com/apps
並搜尋 Jenkins CI 這個應用程式進行安裝:
安裝好後,選擇想要將 Jenkins 通知傳送到哪一個頻道 (channel) 內:
這邊我以 #general 這個頻道作為示範,如果讀者想要建立一個獨立的頻道來接收訊息也完全沒有問題。完成後點選 Add Jenkins CI integration,接著應該就會看到非常詳細的 Jenkins 端設定教學:
在 Step 3 中,我們會看到這裡有一個 Base URL 與 Integration Token,這是等等要串接 Jenkins 時會用到的資訊。接著點擊最下面的 Save Settings 後儲存離開。
接著回到 Jenkins 的管理外掛程式頁面,選擇 Slack Notification Plugin 點擊安裝:
註:如果是直接使用在 Ansible 章節的範例來安裝 Jenkins,這個插件已經在 plugins.txt 中被我預先搭載了。讀者可以根據自己的需求修改這份安裝列表,或是利用 Ansible 的 jenkins_plugin 模組來管理 Jenkins 插件。
安裝好之後,回到管理 Jenkins 下的設定系統,找到 Global Slack Notifier Settings,並依序將剛剛在 Slack 安裝應用程式中的 Base URL 與 Integration Token 分別填入對應位置:
這裡也可以設定預設的通知頻道,設定完後可以點選 Test Connection 來測試連線。如果設定一切都沒意外,應該就會在 Slack 裡看到 Jenkins 的測試通知如下:
設定完成後點選儲存離開。最後,回到專案組態設定,在建置後動作的欄位選擇 Slack Notification:
在這裡我們可以選擇要建置作業在何種情況下發送通知,同時如果有不同於全域的 Slack 設定,可以在進階中覆寫掉。依據需求選擇好建置情況後,點選儲存離開組態設定,並執行建置。建置完成後,我們應該會在 Slack 頻道中看到這次的建置結果類似下圖的效果:
這樣一來,Slack 與 Jenkins 的整合就大功告成了!