当前位置: 首页 > news >正文

浅谈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.垂直业务平台的定义与特点

  • 什么是垂直业务平台

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

  • 垂直业务平台的特点

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

http://www.lryc.cn/news/498261.html

相关文章:

  • 华为新手机和支付宝碰一下 带来更便捷支付体验
  • shell编程基础笔记
  • VS Code配置Lua调试环境
  • FPGA(一)Quartus II 13.1及modelsim与modelsim-altera安装教程及可能遇到的相关问题
  • 【单片机】ESP32-S3+多TMC2209控制步进电机系列1 UART通信及无传感回零 硬件部分
  • Django之ORM
  • html css 图片背景透明
  • 使用ALB实现gRPC协议的负载均衡
  • 解决IDEA的easycode插件生成的mapper.xml文件字段之间逗号丢失
  • 【Linux测试题】
  • python使用openpyxl处理excel
  • 【JavaWeb后端学习笔记】Mybatis基础操作以及动态SQL(增、删、改、查)
  • 基于MATLAB野外观测站生态气象数据处理分析实践应用
  • IP 地理位置定位技术原理概述
  • C语言(分支结构)
  • 批量将不同的工作簿合并到同一个Excel文件
  • 详解AI网关助力配电房实现智能化管控应用
  • 2025美赛数学建模常用数据库网站大全
  • Wordpress设置固定链接形式后出现404错误
  • 我最近在干什么【1】
  • [Vue3]computed原理
  • Vue工程化开发中各文件的作用
  • 【c++笔试强训】(第三十一篇)
  • Go 1.19.4 HTTP编程-Day 20
  • MySQL 8.0 的主主复制(双向复制)
  • 四、自然语言处理_03LSTM与GRU
  • 磁盘系列基础知识(一):硬盘;IDE;ATA;SATA;AHCI;SCSI;SAS
  • taro小程序进入腾讯验证码
  • 原子类相关
  • RabbitMQ 客户端 连接、发送、接收处理消息