持续交付-Blue Ocean 应用

203 阅读3分钟

获取更多技术文章分享

Blue Ocean 提供了一套可视化操作界面来帮助创建、编辑 Pipeline 任务。 Blue Ocean 特性:

  • 流水线编辑器:用于创建贯穿始终的持续交付流水线,是一种直观并可视化的流水线编辑器。
  • 流水线的可视化:对流水线的可视化表示,提高了全企业范围内持续交付过程的清晰度。
  • 流水线的诊断:即刻定位自动化问题,无需持续扫描日志或关注多个屏幕。
  • 个性化仪表盘:用户可以自定义仪表盘,只显示与自身相关的流水线。

安装与启动 Blue Ocean

Blue Ocean 是 Jenkins 插件之一,在系统管理->插件管理,"可选插件" 中搜索 "Blue Ocean" 可以看到如下结果: 选中 Blue Ocean,然后单击 Install 按钮进行安装。安装完成之后重启 Jenkins 进程,之后就可以在 Jenkins 页面上看到 Blue Ocean 的图标。单击 Blue Ocean 图标启动即可启动 Blue Ocean。

在 Blue Ocean 中创建 Pipeline

在 Blue Ocean 中单击 New Pipeline 创建新的流水线。 创建 Pipeline

如果你的仓库根目录有 Jenkinsfile,则直接开始第一次构建过程。如果仓库中不含 Jenkinsfile 则开启 pipeline-editor,图形化编辑工作流。 Blue Ocean 图形化编辑工作流

编辑完后会生成 Jenkinsfile,并提交到你的代码库根目录,你可以选择提交到 master 分支或者提交到一个新创建的分支。提交成功之后就会开始执行一次完整的构建过程。

Blue Ocean 创建 Pipeline 提交代码库 & 运行

由 Blue Ocean 生成的 Jenkinsfile 代码会被保存到项目的 Github 代码库中,后期可以对其进行编辑、修改。 Blue Ocean 生成的 Jenkinsfile 代码

pipeline {
  agent any
    stages {
        stage('Setup') {
              parallel {
                      stage('clean env') {
                                steps {
                                            sh 'echo "Step1"'
                                                      }}
                                                              stage('Reset test data') {
                                                                        steps {
                                                                                    sh 'echo "reset config"'
                                                                                              }}
                                                                                                    }
                                                                                                        }
                                                                                                          }
                                                                                                          }
                                                                                                          
                                                                                                          ```
                                                                                                          
                                                                                                          
                                                                                                          ### 在 Blue Ocean 中运行构建与视图使用
                                                                                                          
                                                                                                          ## 运行构建
                                                                                                          
                                                                                                          在 Blue Ocean 中打开 Pipeline 任务,单击 Run 按钮可以直接运行该任务。
                                                                                                          Blue Ocean 中运行 Pipeline 任务
                                                                                                          ![](https://ceshiren.com/uploads/default/original/3X/2/a/2a0ead9108caa97cc822104380553b7185029782.png)
                                                                                                          
                                                                                                          ## 查看任务进度视图
                                                                                                          
                                                                                                          在运行 Pipeline 任务过程中可以单击任务编号进入任务详情视图查看图形化进度。
                                                                                                          Blue Ocean 任务进度查询
                                                                                                          ![](https://ceshiren.com/uploads/default/original/3X/9/a/9ab54e5bd791c8de447bd470858da7b7020f662e.png)
                                                                                                          
                                                                                                          ## 查看日志视图
                                                                                                          
                                                                                                          单击任务中对应的工作节点,可以查询任务运行过程中的日志详情。这些日志信息可以用于调试任务,特别是在任务出错的时候,日志详情可以帮助检查任务出错的原因。
                                                                                                          任务日志
                                                                                                          ![](https://ceshiren.com/uploads/default/original/3X/7/e/7e73bc558375d18c240dfb9fd424ef18df54ca27.jpeg)
                                                                                                          
                                                                                                          ### 使用 Blue Ocean 进行单元测试与结果展示
                                                                                                          对于包含单元测试的项目,Blue Ocean 可以运行单元测试并对其结果进行展示。下面用 java 单测项目进行举例。
                                                                                                          ## Pipeline代码实现
                                                                                                          
                                                                                                          ```
                                                                                                          pipeline{
                                                                                                              agent {
                                                                                                                      label 'master'
                                                                                                                          }
                                                                                                                          
                                                                                                                              stages{
                                                                                                                                      stage('iTest源码') {
                                                                                                                                                  steps {
                                                                                                                                                                  sh 'mkdir -p iTest'
                                                                                                                                                                                  dir("iTest"){
                                                                                                                                                                                                      git branch:'master', url:'git@github.com:princeqjzh/iTest.git'
                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                  stage('构建+单测') {
                                                                                                                                                                                                                                                              steps {
                                                                                                                                                                                                                                                                              sh '''
                                                                                                                                                                                                                                                                                                  cd iTest
                                                                                                                                                                                                                                                                                                                      mvn clean install test
                                                                                                                                                                                                                                                                                                                                      '''
                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                  stage('发布测试记录') {
                                                                                                                                                                                                                                                                                                                                                                              steps {
                                                                                                                                                                                                                                                                                                                                                                                              junit '**/*.xml'
                                                                                                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                      }
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      ```
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      ## 单测结果展示
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      在任务运行完成之后,进入 Tests 视图查看测试运行结果
                                                                                                                                                                                                                                                                                                                                                                                                                      单测结果展示
                                                                                                                                                                                                                                                                                                                                                                                                                      ![](https://ceshiren.com/uploads/default/original/3X/4/0/4072fe6d6afb2111bc50e86055b9eaa34da8e2ec.png)
                                                                                                                                                                                                                                                                                                                                                                                                                      Blue Ocean为开发人员提供了更具乐趣的 Jenkins 使用方式,从基础开始构建,实现了一种全新的、现代风格的用户界面,有助于任何规模的团队实现持续交付。
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      内容全面升级,4 个月 20+ 项目实战强化训练,资深测试架构师、开源项目作者亲授 BAT 大厂前沿最佳实践,带你一站式掌握测试开发必备核心技能(对标阿里P6+,年薪50W+)!直推 BAT 名企测试经理,普遍涨薪 50%+!
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      ### 
                                                                                                                                                                                                                                                                                                                                                                                                                      ⬇️ 点击“阅读原文”,提升测试核心竞争力!
                                                                                                                                                                                                                                                                                                                                                                                                                      [原文链接](https://mp.weixin.qq.com/s?__biz=MzU3NDM4ODEzMg==&mid=2247499254&idx=1&sn=89e7d612e8de292ffd51426102e5e4f3&chksm=fd319f3dca46162be711767724234ab8ed5970e5a827882ceacb6e0f27354f0d049e8452cd7b#rd) 
                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                      [获取更多技术文章分享](https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=juejin&timestamp=1650446169
                                                                                                                                                                                                                                                                                                                                                                                                                      ) ![img](https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=juejin&timestamp=1650446169)