持续集成(Continuuous integration,CI)
本文为这篇文章笔记:持续集成是什么? - 阮一峰的网络日志
定义:频繁地(一天多次)将代码集成到主干。
好处:
- 快速发现错误。每完成一点更新,就集成到主干。
- 防止分支大幅偏离主干。
目的:让产品可以快速迭代,同时还能保持高质量。
措施:代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
流程:
- 提交代码(commit)
- 第一轮测试
- 自动化,通过代码仓库的钩子(hook)
- 至少跑一遍单元测试(针对函数或模块的测试)
构建(将源码转换为可运行的实际代码)
- 代码合并进主干,可以交付
- 构建工具
Jenkins
Travis
第二轮测试
- 全面测试,单元测试和集成测试都要跑
- 有条件,也要做端对端测试(从用户界面直达数据库的全链路测试)
- 自动化为主,少数无法自动化的,人工跑。
- 部署
- 回滚(如果有问题)
持续交付(Continuous delivery,CD)
- 定义:频繁地将软件的新版本,交付给质量团队或用户,以供评审。如果评审通过,就进入生产阶段。
持续部署(Continuous deployment CD)
- 定义:代码通过评审以后,自动部署到生产环境。