持续集成(CI
)、持续交付(CD
)、持续测试(CT
)是一种在应用开发阶段引入自动化实现以较高频度向客户交付应用的方法。
概念
持续集成
(Continuous integration
,即 CI
)是一种软件工程流程,是将所有软件工程师对于软件的工作副本持续集成到共享主线(mainline)的一种举措。频繁地将代码集成到主干的一种开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误
持续交付
(Continuous delivery
,即 CD
),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。从代码提交,自动化完成测试、构建及到生产环境的部署
持续测试
(Continuous Testing
,即 CT
),对 CD
的环境,借助自动化工具测试
说明:
- 持续集成的重要要素
- 统一的代码库
- CI服务器
- 自动化测试和构建的脚本
- Slaves
- CI/CD 可以持续自动化和持续监控贯穿于应用的整个生命周期(从集成到测试、到交付、再到部署)
- 上述关联的事务通常被统一称为
CI/CD Pipeline
,它一般需要由开发和运维团队以敏捷方式协同支持
CI 和 CD 的关系
- CI 是指持续集成,属于开发人员的自动化流程
- CD 是指持续交付和持续部署,二者都事关 Pipeline 后续的自动化,但有时也单独使用
CI 工具
CT 工具
CI/CD Pipeline
CI/CD Pipeline
是一套专注于使用 DevOPS 或 SRE 方法来改进软件交付的实践。通过加入 监控
和 自动化
来改进应用开发过程,可以贯穿集成、测试阶段、交付和部署过程
- CI/CD Pipeline 即便可以手动执行,但其真正的价值在于自动化
- 现代的CD系统需要准守 GitOps 原则,
Pipeline as Code
CI/CD Pipeline 要素
- 构成 CI/CD Pipeline 的步骤被划分为不同的任务子集(subsets of tasks),称为
Pipeline Stage
- Pipeline 的典型 Stage 包括:
- Build:构建编译
- Test:代码测试
- Release:发布应用到制品库
- Deploy:部署到生产环境
Validation和Compliance(验证和合规)
:如镜像安全性扫描(如Cliir)等,根据应用决定