在理解一个新的东西时,我们首先要去了解下它的概念。
概念
持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程(即,开发流程),将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。
这个名称最早由葛来迪区(Grady Booch)在他的布区方法中提出,但是他并没有提到要每天集成数次。之后成为极限编程(extreme programming,缩写为XP)的一部分。在测试驱动开发(TDD)的作法中,通常还会搭配自动单元测试。
持续集成的提出,主要是为了解决软件进行系统集成时面临的各项问题(版本冲突等问题),极限编程称这些问题为集成地狱(integration hell)。
在了解到持续集成的概念(一直不断在项目主线分支上开发)后,我们来看看我们为什么要做持续集成呢,做持续集成有什么好处呢/p>
为什么要做持续集成
持续集成在目前大多数的公司里都会有这样或者那样的使用。有的会选择一些Open Source的工具,如等等等等,有的会购买有更好服务,更强功能的商业产品,如等等,而有的会选择自己实现,如等等。那么使用下来效果如何呢得达到了预期的效果吗想来恐怕未必吧,否则也就不会有这么多的讨论了。
它的好处主要有两个。
- 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
Martin Fowler(不要告诉我,你不知道大名鼎鼎的Martin叔,提示,IOC和DI那篇文章)说过,”持续集成并不能消除Bug,而是让它们非常容易发现和改正。”
与持续集成相关的,还有两个概念,分别是持续交付和持续部署。
持续交付
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
持续部署
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

在了解到做持续集成的好处之后,那么我们怎样来做持续集成呢先,我们得要有一台(或好几台)服务器用来做持续集成。
持续集成服务器的选择
在进行持续集成实践前,应当正确的选择并配置持续集成服务器。比较成熟的持续集成服务器包括: 等。
而CruiseControl是我唯一真正用过的持续集成工具,它现在灵活而又强大功能也让我瞠目,而且配置与管理也较两年前容易得多啦。
为什么说它强大呢为你只要想得到的问题,它也都会有所考虑。朋友的Blog上有些CruiseControl的最佳实践足以证明这一点,只要你肯去实践
只有持续集成服务器是远远不够的
正如Jez Humble所说,CruiseControl和其它的CI工具本质上只不过是一个定时器,时间一到,做你让它做的事情。所以,必然要有其它工具与其结合,方显持续集成的本色。这些工具又是什么呢/p>
想测试的话,你就要用一些测试工具,如等等;
想检查代码标准的话,你就要用等代码规范检查工具;
想要了解测试覆盖率的话,你可能就要用到啦。
当然,想得到二进制文件,就要用到之类的工具啦。
总结
持续集成只是软件开发的一种方式而已,虽然好处挺显而易见的,但是能够很好实践的团队不知道又有多少,我们只有在开发的过程中不断总结适合自己团队的开发方式,把项目完成即可。
参考文章
- 持续集成是什么/li>
- 为什么要做持续集成
- 持续集成(CI)、自动化构建和自动化测试–初探
- 六款不容错过的开源持续集成工具
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!