干货 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(二)

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

问题描述

Jenkins2.0 Pipeline框架iPipeline(即plll库)对MergeCI的触发条件的设置为Change merged模式且固定不变,即需要由代码走查者+2分后,再由Core成员点击Submit按钮来将代码推入库,然后才来触发MergeCI流程,该过程的VerifyCI和MergeCI流程如下图所示:

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

结合上图我们可以发现,这里有个问题是 一旦代码走查通过(+2分),然后Core成员通过(Submit)后,代码立即入库,然后触发MergeCI流程,此时若MergeCI运行出错,那错误此时已经入库并且影响后续开发人员合入代码。


再结合本项目协议开发自身的实际特点,很有可能VerifyCI通过后的MergeCI会和他人产生互相影响,这样便可能导致主干分支代码有错,开发人员之间互相影响,最终影响代码提交合入的效率。


基于此种情况,我们提出的一种模式是,MergeCI由代码审查人员在Gerrit上打出+2分来触发,只有到MergeCI运行通过,代码才会被推入库中,此种方式带来的一个最直接的好处就是主干分支上的代码永远正确的,而且不会因为MergeCI报错而影响他人合代码,而且该方法带来的另外一个好处便是无需设定关键角色来负责Submit代码入库,仅仅需要的是代码走查人员即可,这样也提高了自动化程度,节省人力。将该流程可以示意如下图:

640?wx_fmt=jpeg

因此plll库的这种MergeCI的设置方式并不满足本项目,因此我们决定扩充plll库对于MergeCI运行模式的支持。


优化实践

通过重载了plll库的属性设置函数,加入了根据CI类型来完成MergeCI不同触发条件的设置:

 
 
  1. /**

  2. * 工具名称:set_default_properties

  3. * 工具描述:设置默认的参数

  4. * 参数说明:

  5. *          - citype : CI类型

  6. *          - args   : 参数列表

  7. **/

  8. def set_default_properties(citype, args) {

  9.    def buildParameters = []

  10.    def buildTriggers = []

  11.    set_parameters_properties(

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值