持續整合JenkinsBlueOcean初探

科技小能手發表於2017-11-12

1. BlueOcean是什麼?

Jenkins是一款Java開發的跨平臺持續整合和持續釋出的開源專案,它具有如下特徵:

  1. 安裝及遷移方便:安裝直接部署war包,遷移只需替換JENKINS_HOME目錄。

  2. 配置方便:視覺化後臺操作。

  3. 豐富的外掛生態圈:比如git, junit, jacoco等。

  4. 可擴充套件:自定義外掛。

  5. 分散式:支援Master-Slave。

Jenkins已經作為各大公司進行CI/CD的首選工具。

Jenkins UI從2006年-2016年,幾乎沒有變化。

為了適應Jenkins Pipeline和 Freestyle jobs任務,Jenkins推出了BlueOcean UI,其目的就是讓程式設計師執行任務時,降低工作流程的複雜度和提升工作流程的清晰度,它具有如下特徵:

  1. 清晰的視覺化,對CI/CD pipelines, 可以快速直觀的觀察專案pipeline狀態。

  2. pipeline可編輯(開發中),視覺化編輯pipeline,現在只能通過配置中Pipeline的Pipeline script編輯。

  3. pipeline精確度,通過UI直接介入pipeline的中間問題。

  4. 整合程式碼分支和pull請求。

2. BlueOcean使用

BlueOcean是以外掛的形式存在,需要Jenkins版本2.7.*以上,目前還是beta版本,功能不是很完善。

安裝步驟:

系統管理->管理外掛->可選外掛,選擇BlueOcean beta->restart。

安裝完畢後,BlueOcean入口在選單欄居中: “Open Blue Ocean”,進去後可以看到全新的UI:

我們新建一個Pipeline專案,配置如下:

其中最重要的是定義pipeline script:

node {
   stage(`Clone Code`) { // for display purposes
      // Get some code from a GitHub repository
      git `https://github.com/trautonen/coveralls-maven-plugin.git/`
   }
   stage(`Code Analysis`) {
       sh "mvn clean"
       sh "infer -- mvn compile"
   }
   stage(`Testing`) {
       sh "mvn test"
       junit `target/surefire-reports/TEST-*.xml`
   }
   stage(`Package`) {
       sh "`mvn` -Dmaven.test.skip=true package"
       archive `target/*.jar`
   }
   stage(`Deploy`) {
       echo `pipeline success`
   }
}

pipeline script定義了整個Pipeline的流程,stage(`Clone Code`)Clone Code就是pipeline中的第一步,依次類推。

每一步做具體任務,比如git `https://github.com/trautonen/coveralls-maven-plugin.git/`就是去拉原始碼,具體的語法可以參考Pipeline Syntax:

配置完任務後,進入BlueOcean,點選Run:

開始執行pipeline:

執行結束後,pipeline順利通過:

檢視Tests結果(對應pipeline script中junit `target/surefire-reports/TEST-*.xml`):

檢視打包結果(對應pipeline script中archive `target/*.jar`):

執行過程很流暢,每個步驟通過清晰的視覺化過程,使用者能快速的定位流程中的問題。

3.BlueOcean Roadmap

現在BlueOcean還是beta版本,支援的功能比較侷限,比如不支援引數化,不支援指定具體slave執行等等,我們看下BlueOcean Roadmap:

相信Jenkins BlueOcean功能會越來越完善,而使用Jenkins BlueOcean會大大提高CI/CD工作效率。

本文轉自 msj0905 51CTO部落格,原文連結:http://blog.51cto.com/sky66/1934597


相關文章