使用 Hubot 製作 Slack 機器人幫你上 Code

前陣子看到 Tesla 製作出來的電動車已經支援 召喚 功能,讓一直想要把一些 懶得做 經常使用 的功能交給機器的人念頭又再次浮起,畢竟 李麥克 在1982年就可以呼叫 夥計 了,在2016年的今天叫機器人幫忙把網站上線,應該也不是太過於困難的事情吧!? 那要做到這件事情最快速的方法就是使用現成已經開發好的模組來幫忙,剛好之前也研究過 Github 使用 CoffeeScript 所開發的 Hubot ,就讓我們試試看使用 Hubot 來製作 Slack 機器人幫我們上 Code 吧!

環境需求

在進行開始之前,因為我們要做的事情是透過 Slack 呼叫機器人,然後讓機器人幫我們呼叫 Jenkins 執行對應的 Job,因此必須確認以下環境是正常運作的。

  1. node.js v5.4.1
  2. 自己的 Slack Channel 或是 Admin 權限
  3. Jenkins 與可以執行上 Code 的 Job

製作機器人

  1. 安裝 hubot 需要的套件

    npm install -g hubot coffee-script yo generator-hubot
  2. 打開 Terminal ,切換到想要放機器人的目錄

    cd c:\code\robot
  3. 使用 yo 產生機器人

    yo hubot
  4. 按照順序輸入產生機器人需要的資訊,記得 Bot Adapter 要選 Slack

    Info

  5. 安裝 hubot-slack 套件,用來將 hubot 掛載到 Slack 上

    npm install hubot-slack --save
  6. 嘗試執行機器人

    bin\hubot
  7. 我們來測試一下機器人是否正常運作,可以使用以下指令使機器人發出訊息

    [機器人名稱] echo [想要發出的訊息] 
    hubot echo hello
  8. 如果成功的話機器人會按照指令執行動作

    echo

整合 Jenkins

  1. 首先我們必須要有一個 Jenkins 站台,並且設定好 Job

    job

  2. 進入機器人的資料夾,打開 hubot-scripts.json ,修改內容啟用 jenkins plugin

    ["jenkins.coffee"]
  3. 設定環境變數 HUBOTJENKINSURL,設定 Jenkins 的網址

    env

  4. 重新啟動機器人,嘗試列出 Jenkins 目前的 Job 清單

    [機器人名稱] jenkins list
    hubot jenkins list
  5. 若設定正確,機器人會顯示 Jenkins 上所有的 Job

    list job

整合 hubot 至 Slack

  1. 打開 Slack 頁面,新增一組 Custom Integration,選擇 BOT

    Custom Integration

  2. 輸入機器人名稱

    Robot Name

  3. 調整機器人資訊,並取得 Api Key

    Api Key

  4. 設定環境變數 HUBOTSLACKTOKEN,設定 Api Key

    Api Token

  5. 重新執行 hubot 並指定 adapter 為 slack

    bin\hubot --adapter slack
  6. 執行之後,我們就可以發現機器人出現在 Slack ,我們也可以直接在 Channel 中命令機器人建置專案了!

    Build

  7. 觀察 Jenkins ,網站有成功被部署

    Build Success

小結

透過機器人,可以解決把許多我們日常要進行的工作包裝起來,甚至不需要開啟瀏覽器或是編輯器就可以進行系統的操作,例如 詢問午餐吃什麼? 機器的自動重開或是重啟網站等等,還能夠享受到自製機器人的優越感,也是增加日常 Coding 生活的樂趣囉!關於以上內容有問題歡迎大家一起討論喔!