0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Pipeline改造过程中的几点主要经验分享

8nfr_ZTEdevelop 来源:未知 作者:李倩 2018-04-13 10:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

经过前面三篇文章的详细介绍,讲述了本项目在Jenkins2.0 Pipeline实践和iPipeline框架(plll库)应用的过程中的一些思考、改进以及实践,而本文作为系列文章的最后一篇,主要想分享一下本项目在过去一段时间中对于Jenkins2.0 Pipeline改造的一些经验。

经验分享

XXX项目迁移到Pipeline已经有一段时间了,期间不断重构,不断改进和演化,本文准备在此给出几条本项目Pipeline改造过程中的几点主要经验分享。

1. 建议项目打造分层模式的Pipeline流程

本项目启用CI分层策略,打造了4个层次的CI流程,分别为:

VerifyCI

MergeCI

DailyCI

TagCI

其中VerifyCI和MergeCI用于开发人员平时合代码、DailyCI对应每日构建,而TagCI则用于版本构建,各司其职,层次分明。

具体如下图所示:

2. 建议打造多层次并行的Pipeline流程

不同Pipeline之间可并行Jenkins已天然支持,而利用iPipeline则能支持同一个Pipeline的不同任务之间的并行,而再具体到某个任务内则设计者应根据各自项目实际情况,尽量将任务内各步骤设计成并行模式。本项目对VerifyCI任务内的各步骤运行规划如下,能并行的步骤尽量并行执行:

3. 关于MergeCI的运行模式与流程的摸索

该部分可以参考:-Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(三:MergeCI机制研究)

4. 关于Jenkinsfile托管方式的小技巧

虽然说一般要求将Jenkinsfile与所在代码库的代码放在一起托管,即将Jenkinsfile置于代码库根目录,但我们在实际实践中发现一个问题是,一旦代码库比较庞大,每次Pipeline运行时去解析Jenkinsfile时也是需要很长时间的,背后的原因不言而喻。

因此我们实际试验发现:Jenkinsfile 与 代码库可分离!即可以将置于其他Gerrit库路径中Jenkinsfile对另外一个Gerrit库的代码做CI编排,原因在于要做CI编排的库路径是人为地配置在Jenkinsfile中的。

举例来说明:

本项目VerifyCI的Jenkinsfile托管路径位于:xxx.xxx.com.cn/XXXXX/xxxxx_lib_verifyci

从VerifyCI的属性参数中可以看出,如下图所示:

然后我们的代码库地址则是另外一个,其配置于Jenkinsfile之中:

env.GERRIT_SERVER_NAME ="XXXXX_VerifyCI"

env.GERRIT_SERVER_URL ="ssh://xxxxx_jenkins@gerrit.zte.com.cn:29418/"

env.GERRIT_PROJECT = env.GERRIT_PROJECT?:"XXXXX/tool"// 实际代码库地址

plll.set_default_properties("verifyci",[

gerrit:[

server:"${env.GERRIT_SERVER_NAME}",

projects:[[project:"${env.GERRIT_PROJECT}", branch:"${plll.getJobBaseName()}"]]

]

]);

如此一来便实现了二者的分离。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73131
  • Pipeline
    +关注

    关注

    0

    文章

    29

    浏览量

    9911
  • devops
    +关注

    关注

    0

    文章

    130

    浏览量

    12771

原文标题:DevOps 案例 | Jenkins2.0 Pipeline框架(iPipeline)优化实践之路(四)

文章出处:【微信号:ZTEdeveloper,微信公众号:中兴开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    半导体制造过程中的三个主要阶段

    前段工艺(Front-End)、中段工艺(Middle-End)和后段工艺(Back-End)是半导体制造过程中的三个主要阶段,它们在制造过程中扮演着不同的角色。
    的头像 发表于 03-28 09:47 5638次阅读
    半导体制造<b class='flag-5'>过程中</b>的三个<b class='flag-5'>主要</b>阶段

    Linux安装的几点经验

    Linux的应用软件比较少,Native分区也不必留的太大。我建议Native分区不要超过2.5G。  3. 由于安装过程中会询问一些有关硬件的信息,因此要提前搜集好PC硬件方面的信息。硬件信息主要
    发表于 09-13 10:16

    使用WiFi的过程中总结的一些经验

    简述在我们做项目开发,经常会用到WiFi,这次给大家分享一下我在使用WiFi的过程中总结的一些经验,这次用到的是esp8266WiFi模块,如图所示。引脚连接:GND:接地GPIO16:其实是
    发表于 08-05 07:30

    Linux安装的几点经验

    Linux安装的几点经验 Linux安装的几点经验  有关于Linux操作系统的好处许多文章都已经有介绍过了,想必大家一定都知道一些,前不久,我在我的电脑上安装了一套
    发表于 01-18 12:40 517次阅读

    ATX_电源维修的几点经验

    ATX_电源维修的几点经验,ATX_电源维修的几点经验
    发表于 05-27 17:04 13次下载

    PCB布线的几点经验

    PCB布线的几点经验,感兴趣的小伙伴们可以看看。
    发表于 07-26 15:18 0次下载

    浅析STM32调试过程中的几个相关问题

    总的来讲,单片机调试是单片机开发工作必不可少的环节。不管你愿不愿意,调试过程中总会有各种不期而遇的问题出现在我们面前来磨砺我们。这里分享几点STM32调试过程中与开发工具及IDE有关的几个常见问题,以供参考。
    的头像 发表于 01-21 13:50 6023次阅读

    5G网络建设过程中的规划及经验总结

    5G建设过程中难点,杭州移动在快速规划、天面快速改造、灵活传输组网方案和动力改造方案4个方面做出一些探索。
    发表于 06-20 09:23 1.9w次阅读
    5G网络建设<b class='flag-5'>过程中</b>的规划及<b class='flag-5'>经验</b>总结

    5G网络建设过程中的各种规划建以及经验总结

    5G建设过程中难点,杭州移动在快速规划、天面快速改造、灵活传输组网方案和动力改造方案4个方面做出一些探索。
    发表于 06-21 08:57 1.4w次阅读
    5G网络建设<b class='flag-5'>过程中</b>的各种规划建以及<b class='flag-5'>经验</b>总结

    如何降低数模设计过程中的数模干扰

    数模设计过程中要避免照搬经验和规则,但要彻底讲清这个问题,首先要明白数模干扰的机理,数字对模拟的影响可以分为以下两种情况。
    发表于 03-27 14:05 1132次阅读

    嵌入式开发过程中的一点调试经验

    嵌入式开发过程中的一点调试经验嵌入式开发最麻烦的在现场调试过程中或实际运营过程中出现问题很难定位。我在实际开发过程中一点
    发表于 11-02 18:06 15次下载
    嵌入式开发<b class='flag-5'>过程中</b>的一点调试<b class='flag-5'>经验</b>

    Verilog设计过程中的一些经验与知识点

     “ 本文主要分享了在Verilog设计过程中一些经验与知识点,主要包括块语句、阻塞赋值和非阻塞赋值 以及结构说明语句(initial, always, task, function)
    的头像 发表于 03-15 12:19 2897次阅读

    升压变流器的几点调试经验

    升压变流器的几点调试经验
    发表于 11-02 08:16 0次下载
    升压变流器的<b class='flag-5'>几点</b>调试<b class='flag-5'>经验</b>

    PipelinethrowIt的用法

    字如其名,来看下PipelinethrowIt的用法,是怎么个丢弃方式。
    的头像 发表于 10-21 16:24 1124次阅读
    <b class='flag-5'>Pipeline</b><b class='flag-5'>中</b>throwIt的用法

    什么是pipeline?Go构建流数据pipeline的技术

    本文介绍了在 Go 构建流数据pipeline的技术。 处理此类pipeline的故障很棘手,因为pipeline
    的头像 发表于 03-11 10:16 1534次阅读