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

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

3天内不再提示

实践中我们将展示我们的三种代码分支策略

电子工程师 来源:未知 作者:李倩 2018-03-24 09:52 次阅读

DevOps微课系列旨在帮助用户学习DevOps实践。

业务背景

问题一:

现有CI上的构建项目无法完成UT/FT/ST等测试及SM复杂度或Lizard圈复杂度检查。

现有CI上的构建项目只能对版本控制源代码,而测试代码、数据库脚本、构建和部署脚本、依赖的库文件等,并且对构建产物的版本控制也同样重要,只有这些内容都纳入版本控制了,才能够确保所有的开发、测试、运维活动能够正常开展,系统能够被完整的搭建。

普通pipeline无法对多个branch进行支持,无法对Gerrit trigger触发的DailyCI、VerifyCI、MergeCI合并在同一个构建项目中,导致pipeline流水线很多,管理复杂。

问题二:

现有的版本发布是将版本编译目标文件打包上传制品库,在环境部署过程中需要提前配置主机环境,如果环境较为复杂和繁琐,给环境配置带来不小的困难。采用docker方式打包环境和版本利于测试部署和现网部署。

解决思路

1.通过multibranch类型的pipeline job使得对于多个branch的支持更加简单。

只需要创建一个multibranch job,jenkins将自动地为所有的branch创建job。

2.构建docker环境并打包编译版本到镜像中,将镜像pull到制品库。

实践情况

解决方案中我们明确了gerrit上代码分支管理策略,对不同的分支版本采用不同的分支策略,在实践中我们将展示我们的三种代码分支策略。

1.代码分支策略1——开发分支与发布分支

2.代码分支策略2——特性分支(临时分支)

3.代码分支策略3——修复Bug分支

解决方案

解决方案中我们还详细阐述了我们的CI创建,包括Multibranch Pipeline创建,Jenkinsfile的撰写、存放及调用,完整效果预览。

1.新建multibranch pipeline job

2. 每个分支代码的根目录下存放Jenkinsfile,撰写jekinsfile脚本

脚本分如下几个部分:

1) Jekinsfile中添加接收gerrit 触发事件的Properties

配置成功后在Branches中查看配置,会看到自动生成的配置触发页面为

2)获取verifyCI需要的gerrit上change分支

3) 脚本处理不同的gerrit上的branch分支

4) 脚本处理不同的gerrit触发事件

3.自动为每个branch生成job

在multibranch pipeline job保存后,jenkins自动地检查所有的branch,且自动地为所有的branch创建job,当然前提是存在jenkinsfile文件。例如上面的job,自动地生成了文件夹*-AI-*-RUNNTIME,且在此文件夹下自动地为trunk和branch生成了job。如果在代码库上某个branch分支被删除,multibranch pipeline也会自动检测变化并删除相应的job。

4.Scan Multibranch Pipeline Now第一次生成Multibranch Pipeline时,会自动扫描pipeline配置文件并建立相应的job,后续如果jenkinsfile文件有变更,也可以手动触发扫描,日志输出如下

5.这样建立完成一个完整的MultiBranch Pipeline

不同任务运行效果图如下所示,在同一个pipeline中可见并管理不同的gerrit触发任务,比如patchset-created、change-merged和daily_ci。

6.Gtest+lconv代码单元测试及覆盖率检查

输出gtest单元测试及lcov代码覆盖率检测结果

7.Docker镜像通过制品库发布

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

    关注

    30

    文章

    4742

    浏览量

    68327
  • Docker
    +关注

    关注

    0

    文章

    454

    浏览量

    11807

原文标题:DevOps案例 | 基于Multibranch Pipeline+docker+gtest+lcov等集成代码检查构建发布实践

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

收藏 人收藏

    评论

    相关推荐

    我们如何开始代码审查

    从一开始,开发者就会互相帮助,如果测试遇到了问题或是有新人加入到了团队,领导或是资深开发者就会审查他们的代码。除此之外,我们还聘请了外部专家进行安全代码审查。系统发布后,
    发表于 12-16 15:51

    展示三种RS485应用场景的半双工参考设计包括BOM及层图

    设计的隔离式电源进行快速评估和设计。此外,用户指南中的测试结果还将展示针对此设计所执行的 IEC61000-4-2 ESD 和 IEC61000-4-5 浪涌测试。主要特色一项设计展示
    发表于 09-21 09:15

    随机动力系统怎么实现策略搜索?

    随机输入使我们的模型能够自动捕获复杂的噪声模式,提高基于模型的模拟质量,并在实践中制定出更好的策略
    发表于 08-12 07:07

    三种提高Python代码性能的简便方法

      在互联网编程语言盛行的今天,Python是比较流行的编程语言之一。但很多程序员对于Python代码性能的方法并不了解。今天这里主要为大家介绍三种提高Python代码性能的简便方法,即是一是基准
    发表于 08-03 18:37

    三种访问过程映像的方法

    硬实时的需求。用户可以通过python等高级语言编写程序,并且可以通过存储器的过程映像便捷的写入或者读取所有当前过程值。本文介绍从过程映像访问数据的三种方法:直接从文件
    发表于 02-02 16:40

    什么是回归测试及为什么它在软件开发实践中占如此重要的地位?

    确定每个软件版本的稳定性。这是一个反复的过程,一直持续到项目达到开发结束或维护结束为止。在其他工作流程,回归测试是开发人员日常工作。实际上,可以说在迭代和敏捷过程,大多数测试是回归测试。在继续进行之前,让我们看一下什么是回归
    发表于 12-21 07:52

    python编写条件分支的最佳实践

    这段代码最大的问题,就是过于直接翻译了原始的条件分支要求,导致短短十几行代码包含了有层嵌套分支。这样的
    发表于 04-21 15:20

    ADμC812 芯片实践中几点注意

    ADμC812 芯片实践中几点注意
    发表于 05-16 14:16 10次下载

    EDA 技术在教学实践中的应用2

    EDA 技术在教学实践中的应用2 摘 要: EDA 在电子技术教学实践中的应用是现代教育发展的一趋势, 本文通过数字式测温仪这一综合性设计实例,比较全面地说明
    发表于 12-07 13:50 0次下载

    极管三种工作状态特点分析及判断

    极管有放大、饱和、截止三种工作状态,放大电路极管是否处于放大状态或处于何种工作状态,对于学生是一个难点。笔者在长期的教学实践中发现,
    的头像 发表于 09-28 09:11 18.8w次阅读
    <b class='flag-5'>三</b>极管<b class='flag-5'>三种</b>工作状态特点分析及判断

    剖析智能制造关于“轻与重”的实践中的误区

    智能制造无疑是建设制造强国重中之重的核心策略。但还有很多制造企业存在不少关于“轻与重”的认识与实践中的误区!
    的头像 发表于 02-20 10:33 3373次阅读

    测试工程师的三种分支

    测试技术在新环境下产生一奇妙的变革:出现了三种分支,可能有些人清楚,有些人糊涂,而另有些人投入,那就是根据业务驱动的测试执行,根据行业的通性的测试服务及他山之石可以攻玉的产品评测。
    的头像 发表于 09-12 10:29 3529次阅读

    设计模式最佳实践探索—策略模式

    根据不同的应用场景与意图,设计模式主要分为创建型模式、结构型模式和行为型模式类。本文主要探索行为型模式策略模式如何更好地应用于实践中
    的头像 发表于 10-31 14:24 916次阅读

    软件代码结构化覆盖测试-分支覆盖

    本篇我们介绍分支覆盖,从测试技术对代码的测试程度上来说,在复杂代码分支覆盖比语句覆盖效果要好
    的头像 发表于 09-01 11:34 644次阅读
    软件<b class='flag-5'>代码</b>结构化覆盖测试-<b class='flag-5'>分支</b>覆盖

    三种LED接线:串联、并联和串并联,我们该如何选?

    三种LED接线:串联、并联和串并联,我们该如何选?
    的头像 发表于 12-08 17:21 2481次阅读
    <b class='flag-5'>三种</b>LED接线:串联、并联和串并联,<b class='flag-5'>我们</b>该如何选?