浅谈CI持续集成

1.什么是持续集成

持续集成(Continuous Integration)(CI)是一种软件开发实践,团队成员频繁地将他们的工作成果集成到一起(通常每人每天至少提交一次,这样每天就会有多次集成),并且在每次提交后,自动触发运行一次包含自动化验证集的构建任务,以便尽早地发现集成问题。(来自wiki百科)

2.为什么要持续集成

  • 防止"集成地狱"的发生
  • 兼容性问题:不同模块之间可能有接口不兼容的问题。
  • 冲突和重叠:多个开发人员修改了同一个文件或功能模块,导致代码冲突,难以合并。
  • 依赖问题:一些模块可能依赖于其他模块的特定版本或功能,这些依赖关系如果处理不当会导致系统无法正常运行。
  • 测试困难:由于模块是分开开发和测试的,整体集成后可能会发现许多以前未发现的错误导致测试和调试工作量激增。

3.CI的理念和优势

CI的起源:源自极限编程,是敏捷开发的方法之一。

核心理念:通过频繁的小规模集成,减少每次集成的风险和不确定性。

主要优势:

  • 提升软件质量
  • 改善用户需求响应速度
  • 减少最终阶段返工浪费
  • 提高软件交付效率

4.CI成功实践的关键

4.1第一阶段:每次提交触发完整的流水线

快速集成:CI的核心理念

关键词:快速集成:将集成速度做到极致,每次变更都触发CI。

变更触发:包括代码、配置、环境和数据变更,所有元数据变更都纳入版本控制。

触发方式:通过事件或Webhook通知CI平台,确保每次提交触发持续集成。

工具示例:Jenkins支持多种触发方式,如定时触发、轮询触发和Webhook触发。实现快速集成需要打通版本控制系统(如Gitab)和CI系统(如Jenkins)的集成。前置条件

统一的分支策略、清晰的集成规则、标准化的资源池、足够快的反馈周期。

4.2第二阶段:每次流水线触发自动化测试

关键词:质量内建:CI旨在尽早发现问题,包括构建失败和质量不达标(如测试失败、代码规约不符合标准)。

自动化测试的重要性:自动化测试能力对于CI平台至关重要。

选择合适的测试活动、树立测试结果的公信度、提升测试活动的有效性。

4.3第三阶段:第一时间修复问题

  • 确保CI可用性的团队规则
  • 建立清晰规则:确保CI问题在规定时间(如10分钟)内修复,保持集成主线的可用性。
  • 自动回滚:在规定时间内未修复时,自动回滚代码。
  • 停止提交:CI"亮红灯"时,团队停止提交新代码,避免在错误基础上验证新提交。
  • 集体修复:团队成员集体修复CI问题,恢复CI状态。
  • 长期好处:团队需深信CI的长期好处超过短期投入,积极践行CI规则。

5.流水线平台特征

流水线是持续交付中最核心的实践,也是持续交付实践最直接的体现。一个符合现代软件工程实践的流水线平台应该具备的特征

6.垂直业务平台的定义与特点

  • 什么是垂直业务平台

垂直业务平台,就是指单一专业领域的能力平台,比如自动化测试平台、代码质量平台、运维发布平台等等,这些也是软件交付团队日常打交道最频繁的平台。

  • 垂直业务平台的特点

垂直业务平台则专注于专业能力的建设、一些核心业务的逻辑处理、局部环节的精细化数据管理等。垂直业务平台可以独立对外服务,也可以以插件的形式,将平台能力提供给流水线平台。

相关推荐
好名字更能让你们记住我1 小时前
Linux多线程(十二)之【生产者消费者模型】
linux·运维·服务器·jvm·windows·centos
门思科技1 小时前
设计可靠 LoRaWAN 设备时需要考虑的关键能力
运维·服务器·网络·嵌入式硬件·物联网
学习编程的gas1 小时前
Linux开发工具——gcc/g++
linux·运维·服务器
DevOps在路上2 小时前
从 ”以应用为中心“ 的交付看DevOps平台的演进趋势
devops
dessler2 小时前
Kafka-消费者(Consumer)和消费者组(Consumer Group)
linux·运维·kafka
进击的程序汪2 小时前
Linux 启动过程流程图--ARM版
linux·运维·arm开发
紫璨月2 小时前
nginx反向代理的bug
运维·nginx·bug
没有名字的小羊3 小时前
2.安装Docker
运维·docker·容器
xiezhr3 小时前
50 个常用 Docker 命令
运维·docker·容器