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

    文章

    4555

    浏览量

    66739
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11602

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

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

收藏 人收藏

    评论

    相关推荐

    我们如何开始代码审查

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

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

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

    常见三种接口详解

    做单片机开发时UART,SPI和I2C都是我们最经常使用到的硬件接口,我收集了相关的具体材料对这三种接口进行了详细的解释。
    发表于 08-02 08:13

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

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

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

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

    三种跨时钟域处理的方法

    时钟域的场景,也可以使用异步FIFO来达到同样的目的。  方法:格雷码转换  我们依然继续使用介绍第二方法中用到的ADC例子,ADC
    发表于 01-08 16:55

    启动Spring Boot项目应用的三种方法

    分别对这三种启动方法做简单的介绍。第一、IDEA编辑器启动。在我们开发过程,用IDEA编辑器启动的方式最常见最推荐的启动方式。我们在项目
    发表于 01-14 17:33

    三种访问过程映像的方法

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

    STM32应用的三种框架应用代码

    文章目录STM32应用的三种框架应用代码+设备寄存器应用代码+标准库+设备寄存器应用代码+OS+标准库+设备寄存器STM32 固件库结构STM32 官方标准固件库简介固件库文件夹介绍_
    发表于 08-10 06:32

    STM32的三种boot模式介绍

    、示例验证总结参考资料任务摘要请说明STM32的三种Boot模式的差异,并在之前第11-12周“C语言各种变量的存储地址”作业代码基础上,研究至少两boot模式下,代码下载(烧录)运
    发表于 12-10 07:46

    STM32的三种Boot模式的差异

    :STM32三种BOOT模式介绍.启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。内存类型简介主闪存存储器:芯片内置的Flash。SRAM:芯
    发表于 12-20 07:54

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

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

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

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

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

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

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

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