trunk-logo-white

最新消息

Jenkins 2.0 初體驗:Pipeline 的使用

Share This Post

分享在 facebook
分享在 linkedin
分享在 twitter
分享在 email

就在幾天前 Jenkins 2.0 alpha 發佈了。

本來想說 Jenkins 的應用差不多就是這樣,讓我覺得比較新奇的,就是在,Container Summit 2015 參考之前寫的文章,中提到的:

使用 groovy 腳本進行建置流程

jenkins workflow-plugin

https://github.com/jenkinsci/workflow-plugin/blob/master/TUTORIAL.md

這樣的特性,本來想說有空要來試試看,但一直沒有機會,這次看到 jenkins 2.0 已經把它當作預設套件,Well,不應該再繼續忽視,就來玩玩看,也就是因為如此寫了這篇文章。

使用前須知

就如同一開始介紹的,該語言是 groovy 的語法,對於沒有寫過的可能有點陌生,筆者剛好幾年前有用過使用 groovy 的類 rails 框架 Grails,所以對該語言還算有經驗,不過也因為很久沒用了,有些語法糖還需要再熟悉。

對於沒使用過的讀者,把他想做 java 界的動態語言就會比較理解其特性,若對 Javascript 熟悉的朋友相信也不難上手。

想要更進一步的認識 groovy 可以參考 lyhcode 所撰寫的系列文章 Groovy Tutorial,相信會有更多的收穫。

Pipeline

Pipeline 的前身就是 workflow-plugin,所以相關文件都可以參考 workflow-plugin,唯網路上的文件還是有點少,有些地方需要自己在踩踩看,感受一下相關的使用情境。

基本上 Pipeline 就是把建置流程使用 DSL(Domain-Specific Languages) 進行抽象化,讓相關領域操作能夠提高可讀性,並且更容易操作。

Jnkins 2.0

話不多說,就來安裝 Jnkins 2.0,下面是剛安裝好的初始畫面,若點選預裝 Plugin 就會聯同 Pipeline 一併安裝。

安裝完成後,我們就可以新建一個 task 可以看到就有 Pipeline 的選項可以進行操作。

新的介面好看許多,之前落落長的設定畫面也用 Tab 將其分類清楚,如此就可以根據需求點選所許的建置方式。

此次要做的當然就是 Pipeline 這個主角,在這邊就以 Node.js 為例,來進行到建置完成,下面是 Pipeline 的 sample Groovy script,也是我人生第一個 Pipeline Task 🙂

node {
   // Mark the code checkout 'stage'....
   def nvmSource = '. ~/.bashrc && '
   stage 'Checkout'
   // Get some code from a GitHub repository
   git url: 'https://github.com/TrunkWorkshop/sailsSample.git'
   stage 'check'
   sh "${nvmSource} node -v && npm -v"
   stage 'Build'
   sh "${nvmSource} npm i"
}

其實應該也不太需要解釋 :D,因為 DSL 的特性在語意上就已經非常的清楚。

第一步使用變數 nvmSource 將 nvm source 指令宣告完成,以便往後執行相關建置時有 node 可以使用。

第二步使用 git url checkout,這邊就不需要再透過 Jenkins 的 UI 來定義。

第三步 check 檢查相關 environment 是否正確,可以看到 "${nvmSource} node -v && npm -v" 就是 Groovy 的語法糖,可以將變數直接再 string 中使用,相關其他語法可以參考 Strings

環境 ready 了以後,後續就可以通行無阻了,最後面再用 npm i 來將相關套件完成,執行畫面如下:

結論

目前 Jenkins 2.0 還在 alpha 階段,嚐鮮的話還可以,若要用於正式環境,還是建議大家可以先試用看看,就筆者而言也算是使用不到 1 小時,所以或許有些什麼雷還沒有踩到,不過若是熟習 CI 流程的話,在使用上應該也不會太難才是,畢竟概念大同小異,只是用不同的方式完成而已。

Pipeline 這樣的 CI 流程,就我來看比傳統使用 UI 設置的方式來說,門檻較高,但也有其優點,其實就是整個 CI flow 可讀性更高,且更容易進行板控,再檢視 CI flow 時也可以不用每個 Task 一個一個釐清,一個檔案就可以一目了然。

另外可以想到的,若搭配 Docker 想必相得益彰 :),雖然還沒有真的搭配 Docker 使用,不過光想想就覺得很方便呢!

看來相關的 Jenkins 跟 Docker 教材也要在與時俱進一下了!

相關課程可以密切注意創科資訊的粉絲專頁。

產品資訊
tilda.lu

產品資訊

Ut Elit Tellus, Luctus Nec Ullamcorper Mattis, Pulvinar Dapibus Leo. Donec Sodales Sagittis Magna. Sed Consequat, Leo Eget Bibendum Sodales, Augue Velit Cursus Nunc, Quis Gravida Magna Mi A Libero. Lorem Ipsum Dolor Sit Amet, Consectetur Adipiscing.Ut Elit Tellus, Luctus Nec Ullamcorper Mattis, Pulvinar Dapibus Leo. Donec Sodales Sagittis Magna. Sed Consequat, Leo Eget Bibendum Sodales, Augue Velit Cursus Nunc, Quis Gravida Magna Mi A Libero. Lorem Ipsum Dolor Sit Amet, Consectetur Adipiscing.

閱讀更多 »

Do You Want To Boost Your Business?​

Drop Us A Line And Keep In Touch​