流程
当对代码进行变更,开发人员取得当前基础代码的一份拷贝。当其他开发人员提交变更的代码到代码库里时,这份拷贝将逐渐与版本库里的最新代码间产生差异。不仅现存的代码基础发生了变化,而且随着新的代码、库文件和其它资料的添加,其中的依赖和潜在的冲突也随之出现。
一个分支检出的时间越长,当开发分支重新整合到主线上的时候,整合的冲突和失败的风险就越大。在开发人员向代码库进行提交之前,他们必须更新代码来获得至取得代码副本以来版本库的变更。版本库里包含越多的变更,开发人员在提交代码之前做的工作就会越多。
最终,代码库与开发者的基线将产生巨大的差异,这种情况有时被称为“合并地狱”或者“整合地狱”,在这种情况下,合并所需要的时间将超过作出变更所花费的时间。持续集成要求尽早的合并并且经常合并,从而避开“整合地狱”陷阱。这样做的目的是减少重复工作从而达到节约时间和成本的目的。
在提交工作之前,其余的CI步骤为编程人员做一次完整的编译,跑过所有的单元测试。集成测试通常自动运行在CI服务器上在其侦测到一次提交后。
最佳实践
1 维护代码库
2 自动编译
3 自动测试
4 每天每一名开发人员都向基线提交
5 每次对基线的提交都应该被构建
6 保持编译的快速
7 在产品环境下进行测试
8 使得获取最新的提交更加容易
9 每个人都能看到最新的编译结果
10 自动部署
来源:https://en.wikipedia.org/wiki/Continuous_integration