DevOps 案例 | *max 项目上线Jenkins Pipeline2.0

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

案例简述

Pipeline as Code是2.0的精髓所在,是帮助Jenkins实现CI到CD转变的重要角色。

Pipeline,简单来说,是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。实现方式是一套Groovy DSL,任何发布流程都可以表述为一段Groovy脚本,并且Jenkins支持从代码库直接读取脚本,从而实现了Pipeline as Code的理念。

本案例受益于Jenkins内嵌的Groovy支持、丰富的Step库,自定义Pipeline脚本,实现了复杂的构建、发布流程。本案例将 one by one 教你部署 jenkins pipeline 2.0,还有心得介绍哦~


上线方案

1.环境准备

① 云CI入口

② Slave节点(安装了git,sbt,java)

③ 代码下载

2.操作

① 创建基础pipeline job

第一步:创建pipeline job,名称:pipeline_demo

第二步:配置Job

  •  配置丢弃旧的构建

  • 配置Build Triggers,选择Gerrit event

  •  配置Gerrit Reporting Values

  •  配置Trigger on,选择Patchset Created,选择comment Added Contains xxx

  •  配置Gerrit Project

第三步:编辑pipeline脚本,Pipeline包括:Checkout-Build-Release

第四步:保存退出

第五步:提交代码,触发CI

第六步:查看运行情况和结果,通过CI控制台,Blue Ocean

② slave节点分配

groovy中通过node的参数labels来选择slave,用法跟jenkins1里的一样,我们需要先定义jenkins node,且给jenkins node定义label,然后在groovy里使用node加label来选择slave。

③ workspace分配

当node执行steps的时候会自动分配workspace,用于checkout代码,运行命令和其他任务。在step执行的时候workspace是被lock的,workspace只能同时被一个build使用。如果多个build需要使用同一个node的workspace,新的workspace将会被自动分配。

  •  全局变量:jenkins的job有一些内置的默认的环境变量,可以通过http://xx.xx.xx.xx:8080/job/****/pipeline-syntax/globals来查看job默认的环境变量

④ 增加静态检查

第一步:运行环境上安装Scalastyle工具包(已经安装好)

第二步:通过Snippet Generator生成Scalastyle插件使用代码

第三步:通过Replay Pipeline更新Pipeline脚本

第四步:运行,查看结果

  •  step/插件使用:每个step都是由对应的Jenkins插件来实现的,点击旁边的帮助按钮可以查看

  •  Snippet Generator:Step库的官方参考手册成功的延续了Jenkins一贯的惜字如金风格,大多数Step都只有一句话的描述和一些参数类型,罕有使用样例,比如Git Step。要理解这些Step,基本靠脑补。好在Jenkins提供了一款良心产品,Snipper Generator,帮助使用者在Pipeline配置界面3步生成正确的调用语句

  •  Replay Pipeline:为了避免重复打开配置界面调整Pipeline脚本,Jenkins贴心的提供了Replay功能。打开任意一次执行历史,在左侧点击Replay按钮,即可复原该次执行所运行的Pipeline脚本,无论脚本来源是任务本身还是远程仓库

⑤ 单元测试和静态检查scalastyle并行执行

第一步:修改脚本增加parallel、node

第二步:通过Snippet Generator生成ws,splitTests插件使用代码

第三步:通过Replay Pipeline更新Pipeline脚本

第四步:运行,查看结果

  • stash/unstash:在stash被引入pipeline DSL前,一般使用archive来实现node或stage间文件的共享。 在stash引入后,最好使用stash/unstash来实现node/stage间文件的共享。例如在不同的node/stage间共享源代码。archive用来实现更长时间的文件存储

  •  Parallel:pipeline能够使用parallel来同时执行多个任务。prallel里的语句使用了node,这意味着并行执行的任务将会在新的node/slave上执行,且使用不同的workspace,为了确保所有的node和workspace使用相同的代码,所以才有了前面的打包stash和parallel里的解包unstash

  •  splitTests:此插件可以将测试分割,以便并行执行。splitTests将会将所有的测试分割为大概等价的N份,然后N个task并行运行。如果N个task运行在不同的slave上,则可以看到job总的时间将会减为1/N

⑥ Multibranch Pipeline

第一步:在分支version_a根目录下创建Jenkinsfile

第二步:新建multibranch pipeline job:multibranch_pipeline_test_lyl

  •  配置Include branches为version_*

  •  配置Periodically if not otherwise run为1分钟

第三步:创建新分支:version_b,查看是否自动生成job

第四步:在分支version_b根目录下创建Jenkinsfile,与version_a不同

第五步:push Jenkinsfile。查看是否自动开始构建

⑦ 参数化构建(properties/parameters)

第一步:通过Snippet Generator生成properties 相关代码

第二步:编辑Jenkinsfile,添加上述代码,并且增加相关参数打印

第三步:点击“Build with Parameters”触发构建

第四步:查看日志中的参数打印内容

操作的内容虽然有点长,可真的是 one by one 的上线方法,请耐心实践哦~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值