Jenkins BlueOcean初探

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:
Jenkins BlueOcean初探_第1张图片

我们新建一个Pipeline项目,配置如下:
Jenkins BlueOcean初探_第2张图片

其中最重要的是定义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:

Jenkins BlueOcean初探_第3张图片

配置完任务后,进入BlueOcean,点击Run:
Jenkins BlueOcean初探_第4张图片

开始执行pipeline:
Jenkins BlueOcean初探_第5张图片

执行结束后,pipeline顺利通过:
Jenkins BlueOcean初探_第6张图片

查看Tests结果(对应pipeline script中junit 'target/surefire-reports/TEST-*.xml'):
Jenkins BlueOcean初探_第7张图片

查看打包结果(对应pipeline script中archive 'target/*.jar'):
Jenkins BlueOcean初探_第8张图片

执行过程很流畅,每个步骤通过清晰的可视化过程,使用者能快速的定位流程中的问题。

3.BlueOcean Roadmap

现在BlueOcean还是beta版本,支持的功能比较局限,比如不支持参数化,不支持指定具体slave执行等等,我们看下BlueOcean Roadmap:

Jenkins BlueOcean初探_第9张图片

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

你可能感兴趣的:(Jenkins)