CI/CD是什么
CI - 持续集成(Continuous Integration)
开发人员提交新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起
高频地、自动化地将个人的代码集成到开发主线中
- 高频: 高频才能保证不会出现巨大变更引起的严重的问题
- 自动化:自动化才可以保证高频
- 主线:不一样是master分支
CD
CD - 持续交付 (Continuous Delivery)
在持续交付的基础上,能够自动化地将软件部署在到更贴近真实运行环境的【类生产环境】中
- 尽快的交付给QA人员
- 在【类生产环境】中测试
- 保证有一个“随时可发布”的版本
- 部署可以是手动的
CD - 持续部署 (Continuous Deployment)
在持续交付的基础上,能够自动化将软件部署在真实生产环境
- 尽快地交付给用户
- 敏捷开发思想的体现
意义和价值
- 敏捷开发思想的体现
- 频繁、自动化、可重复。流程像管道,代码像水。
- 快速失败,尽早出现问题,尽早解决
- 不能保证Bug Free,所以提高发布效率,降低单次发布风险
- 快速交付用户价值,拥抱市场变化
CI/CD 的实现
CI的实现
保证协作质量
- 代码风格检查
- 版本规范
- Git分支规范
- 自动化单元测试、端到端测试
- …
保证失败可追溯
- 测试结果通知
- Changelog记录
- Code Review 机制
- …
CD的实现
持续交付
- 多种级别的测试环境
- QA团队对功能测试的快速响应
- 自动化测试覆盖率的检查
- 发布流程的标准化
- …
持续部署
- 完善的项目迭代机制
- 渐进式的发布策略
- 线上监控告警
- 快速回滚能力
- …