讓 Slack 成為 CI 的訊息中心

當 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

slack013

  1. 按下 Channels 右側的 + 新增 channel

slack014

  1. Privacy : 設定為 PublicPrivate channel
  2. Name : 設定 channel 名稱
  3. Purpose : channel 的功能描述,可以不輸入
  4. Send invites to : 設定 channel 成員,可以稍後再設定
  5. Create Channel 開始建立 channel

slack015

  1. Got It! 進入 channel

slack016

  1. 正式進入 channel,將來 Jenkins 訊息會傳進此 channel

新增 Notification

slack017

  1. 選擇右上方的 option
  2. 選擇 Add an app

新增 Jenkins App

slack018

Slack 將開啟瀏覽器

  1. 稍微往下捲輸入 Jenkins
  2. 選擇 Jenkins CI

新增 Configuration

slack019

  1. Add Configuration 加入 Jenkins CI

新增 Integration

slack020

  1. Add Jenkins CI Integration 正式加入整合 Jenkins

Slack 設定完成

slack021

  1. 介紹 Jenkins 設定流程

Slack 部分已經設定完成,接下來是 Jenkins 的設定

Slack 網頁先不要關閉,稍後會用到

設定 Jenkins


Manage Jenkins

slack022

  1. 左側選擇 Manage Jenkins
  2. 右側選擇 Manage Plugins

安裝 Slack Plugin

slack023

  1. 選擇 Avaliable tab
  2. 選擇 Slack Notification Plugin
  3. Download now and Install after restart

新增 Webhook

slack024

  1. 左側選擇 Manage Jenkins
  2. 右側選擇 Configure System

slack025

Global Slack Notifier Settings 下設定

  1. Base URL : 貼一段 Slack 所提供的 URL
  2. Integration Token : 貼一段 Slack 所提供的 token

Q : 要貼什麼 Base URL 與 token 呢 ?

slack026

回到 Slack 最後的網頁往下捲到 Step 3

  1. Base URLIntegration Token 複製貼上

最後按 Save 存檔。

設定 Job

slack027

  1. 選擇要發 Slack 通知的 job
  2. Configure 設定

slack028

在 Jenkins 執行完 build 動作後,無論成功或失敗,將結果通知 Slack

  1. 選擇 Post-build Actions
  2. 選擇 Add post-build action
  3. 選擇 Slack Notification

slack029

選擇希望 Jenkins 通知 Slack 的動作 :

  1. 選擇 Notify FailureNotify SuccessNotify Unstable

建議不用選擇太多 action,success 確認 Jenkins 還活著,FailureUnstable 確認 CI 失敗即可

slack030

新增一個 Git commit,就可發現 Slack 收到 Jenkins 測試成功 綠燈 的訊息。

Conclusion


  • Slack 提供了一個不錯的 CI 訊息平台,讓訊息從 Email 解放
2018-03-07