在 Drone 上設置 Slack 和 Email 通知
前後端工程師,善用 JavaScript、HTML 5、CSS 3 和 Golang 與 PHP、Node.js 、C#。目前正為台灣的社群網站進行趕工,然而這東西卻趕了很久。

Drone 是一個持續整合工具,這能夠自動測試你的程式,並且在成功時自動發佈,先前有特別寫了一篇「安裝 Drone 0.5 自動測試平台並與 Github 連結」可以仔細參閱。

這篇文章主要是敘述如何在 Drone 中設置 Slack 和電子郵件通知,如此一來你就不需要自己打開 Drone 網頁然後檢查建置是否成功,十分地方便。

在 Drone 中你甚至可以自訂什麼時候要進行通知,如成功、失敗⋯⋯等。


與 Slack 進行連結

首先你需要到自己的 Slack 團隊中的「Incoming WebHooks」分頁建立一個新的掛鉤,這讓 Drone 有辦法傳遞訊息到 Slack,這樣 Drone 才可以發送一些建置訊息。

在這個頁面中你需要選擇一個頻道,通常來說你可以建立一個 #build 頻道,並把此頻道用來當作建置訊息用途,這樣建置訊息就不會打擾到一般的聊天頻道。

取得掛鉤網址

當你按下下一步之後,就會來到這個掛鉤的詳細設定頁面,你能夠在這裡設定大頭貼、名稱⋯⋯等,讓其他人比較好識別 Drone 稍後在 Slack 中的身份。

其中有一個「Webhook URL」是最重要的網址,也不可外露,把這部分複製下來,稍後會在 Drone 中用到。

更改 .drone.yml 設置

接著在 .drone.yml 中像下面這樣新增一個 notify 設置。

pipeline:  
  notify:
    image: plugins/slack
    # 剛才複製的 `Webhook URL` 掛鉤網址。
    webhook: https://hooks.slack.com/services/39bAS25/d3e01325/129ef739bbe0076d38a0b636d3e01325
    # Slack 頻道名稱。
    channel: build
    # Slack 掛鉤使用者名稱。
    username: Drone CI
    when:
      status: [ success, failure ]

不過要注意的是如果你的倉庫是公開的,這可能暴露了你的 Slack 機密資料,有心人士可能會以此操弄你的掛鉤,關於這部分如何隱藏相關資料,可能需要額外參考官方文件:「How to use secrets with plugins」。

當你更改好了 .drone.yml,重新推送到遠端倉庫,接著你就能夠在 Slack 中收到通知了。

與電子郵件進行連結

在這個部分我們採用 Mailgun 當作郵件寄送伺服器,這部分可參考「在 Gitea 或 Gogs 上使用 Mailgun 當 SMTP Server」,這部分只要有 Mailgun 資料,步驟就變得很簡單了,只需要像下面這樣更改 .drone.yml 檔案。

pipeline:  
  email:
    image: drillster/drone-email
    # 郵件寄送者,這會作為郵件發送的來源地址。
    from: [email protected]
    host: smtp.mailgun.org
    # 在下面這一欄貼上 Mailgun 中的 Default SMTP Login 資料。
    username: [email protected]
    # 在下面這一欄貼上 Mailgun 中的 Default Password 資料。
    password: 129ef739bbe0076d38a0b636d3e01325 
    when:
      status: [ success, failure ]
    # 電子郵件通知收件者信箱地址。
    recipients:
      - [email protected]

修改好之後重新推送變更到遠端倉庫,接著就可以坐等電子郵件通知了。


用了 Drone 一陣子,發現速度其實比起 Travis CI 快上很多,而且還能夠平行執行好幾個建置(Travis CI 也可以,不過價格還蠻昂貴的)。