持续集成是一种软件开发实践,其中团队成员经常集成他们的工作,每个集成都通过一个自动化构建包括测试进行验证,以尽可能快地检测集成错误。持续集成的目标是尽早捕捉有问题的变更。
持续集成是对我们整个复杂而快速演进的生态系统的持续组装和测试。
从测试的角度看,持续集成提供以下信息:在开发发布工作流中,当代码变更被持续地集成到工作流中时,应该运行哪些测试。如何在每个节点上组合被测系统,平衡诸如保真度和设置成本之类的关注点。
哪些测试是在预提交时运行的,哪些东西是要在提交后保存的,哪些东西是要保存直到类生产环境部署时才用。
持续集成是一个快速反馈循环,一个缺陷被发现的时间越晚,其代价几乎呈指数级增长。发现的越晚,就可能需要被不熟悉这个变更的工程师定位,代码作者需要回忆和研究变更,对下游工程师和用户产生负面影响。
反馈循环由快到慢包括:本地开发的编辑-编译-调试循环,在预提交时将自动化测试结果反馈给代码变更作者,两个项目变更之间的集成,与上游微服务之间的兼容,内部用户的试用,外部用户使用。
金丝雀部署或先部署到一小部分生产环境,可以在全量部署之前获得反馈。实验和特性开关也是强大的反馈循环。
反馈要可访问可操作,任何人可以容易地查找构建和测试情况,包括所有日志。反馈要自动化。自动化可节省工程资源。
自动化就是流程即代码。