Pages

搜尋此網誌

2014年4月26日 星期六

jenkins CI 持續整合服務: plugins 使用以 node.js 為例

jenkins: plugins 使用以 node.js 為例

最近因為工作的關係,有機會使用 node.js 來做開發,剛好之前在用 java 開發使有使用過利用 jenkins 來進行持續整合,以確保開發的系統能夠自動化測試與部屬,進而加快開發的步驟,趁這個機會也將 nodejs 的自動開發部屬環境建置完成,與大家分享過程中所使用的套件,能夠大大減少自己撰寫 bash command 的時間,一些屬於建置環境上的問題,若知道使用對應的 plugin 將可以簡單許多,底下一一介紹:

首先,在開始建置 node.js 時,我們需要 node.js 的開發環境使用下列 plugin

NodeJS Plugin

enter image description here

在這裡可以設定你要安裝的 node 版本,以及 global 的套件。

接著因為在專案 css 編譯的部份使用 scss 所以會用的 ruby 的套件,因此我們需要 ruby 的環境,還好也有對應的 plugin 來幫助我們將 ruby 的環境建置好,使用下列套件。

ruby-runtime, Rvm

enter image description here

在專案的建置中,就可以指定你要安裝的 ruby 版本與 node 版本,在這邊要注意的是 node 與 ruby 若同時開啟,會造成 node 設定失效,所以只要在第一次建置時將 ruby 環境建置完成,之後就可以不需要在勾選安裝 ruby 環境,以 node 為主

接著我們需要從版本控管取得原始碼來進行編譯建置,所以使用到 git 的 plugin 如下

Gitlab Hook Plugin

目前架設在內部的使用 Gitlab,若有需要也可以使用 github 對應的套件

如果你希望你的程式碼 push 到 gitlab 可同時觸動 jenkins 進行編譯可參考: Trigger jenkins from Gitlab push hook

再來,系統進行測試或編譯時,會希望可以提供各種不同的環境變數,一般來說我們會放置一個設定檔來進行統一管理,參考下面的 plugin 說明

Config File Provider Plugin

剛好在 jenkins 有對應的套件讓你不用再額外進行處理,如下圖:

enter image description here

如此你就可以同時管理多份設定檔,針對不同狀況指定不同的參數環境

最後一旦測試跑完,要將程式碼打包,並且將壓縮檔傳送到遠端主機,並且對遠端進行系統重啟相關指令時,將可以透過下面套件來完成。

Publish Over SSH

enter image description here

圖中可以看到除了指定傳送的檔案以及對應的路徑之外,還可以進行指令的執行,如此就可以清楚區分在遠端系統以及編譯環境所執行指令的不同

最後若希望每次的編譯結果都可以通知相關人員,可以使用 slack,類似 telnet,不過是網路版本,除了 message 功能外,可以設定聊天群組,也提供 api 與各種不同的軟體進行溝通,如 gitlab push 通知,redmind ticket 建立通知,當然也可以進行 jenkins build status 通知啦,參考下列 plugin

Slack Notification Plugin

slack 註冊之後你可以在這網址找到設置的資訊 Jenkins CI integration with slack,設定上非常簡單,一旦設定完成,在 jenkins 的建置專案設定中,要記得在建置完成後執行 slack 通知,如下圖

enter image description here

大致上有用到的套件就如上面所介紹的,相信不管是 nodejs 或是其他語言,這些套件都可以大大減少在建置上所需花費的時間與步驟,善用這些前人開發的工具,可以更快將整個持續整合環境建置完成,雖然 CI 並不是程式碼的產出,但相信我,一旦有 CI 的輔助,將可以大大節省在開發流程中所需花費的時間與人力,一試就回不去了…

前陣子同事分享了一篇文章:Happy Teams:The Checklist,介紹一個快樂的開發團隊所要具備的條件,其中一項

Continuous Integration / Deployment

為了團隊的幸福,趕快動手建置屬於你們的 CI 環境,花一次功,可以重覆享用,何樂而不為!

找時間在來分享建置的 script …

張貼留言