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 工作效率。


↙↙↙阅读原文可查看相关链接,并与作者交流