2020-08-05 11:44:48
CI/CD 是一种通过自动化流程实现软件快速、可靠交付的方法,包含持续集成(CI)、持续交付(CD)和持续部署(CD)三个核心环节,旨在缩短开发周期、提高代码质量并降低发布风险。
核心目标:通过频繁合并代码减少集成冲突,确保代码可编译且通过基础测试。
实践方式:
开发者每日多次提交代码至共享仓库,触发自动化构建和单元测试。
使用 CI 服务器(如 Jenkins、GitLab CI)监控代码变更,自动运行测试套件。
测试通过后生成“绿色构建”,表明代码集成成功,但尚未经过生产环境验证。
优势:
早期发现集成问题,避免项目末期大规模修复。
强制开发者自测代码,提升代码质量。

核心目标:在持续集成基础上,将代码部署到类生产环境,确保随时可发布。
实践方式:
自动化将集成后的代码部署到开发、测试、预生产等环境,进行多阶段验证。
通过制品库(如 Nexus、Artifactory)管理不同环境的软件包,实现“一次构建,到处运行”。
手动触发生产环境部署,保留人工审核环节以控制风险。
关键步骤:
开发环境测试通过后,上传制品至测试环境库。
测试环境验证后,上传制品至预生产环境库。
预生产环境测试通过后,上传制品至生产库,等待手动部署。
优势:
缩短发布周期,支持快速响应市场需求。
通过多环境测试降低生产故障率。

核心目标:在持续交付基础上,完全自动化部署到生产环境,实现零人工干预。
实践方式:
代码通过所有测试后,自动推送至生产环境,无需手动确认。
部署后自动执行健康检查、监控和日志管理,确保服务可用性。
与持续交付的区别:
持续交付需手动触发生产部署,持续部署则完全自动化。
持续部署要求更高的测试覆盖率和基础设施稳定性。
优势:
实现小批次快速发布,降低单次变更风险。
完全消除人工部署错误,提升发布效率。

CI/CD 的整体价值:
适用场景: