在软件行业发展的初期,软件项目中最棘手、最紧张的时刻就是集成。能单独工作的一些模块被组装在一起,然而系统整体却常常失败,而且很难找到失败的原因。但在最近几年里,集成基本上已不再是项目中的痛苦之源,而是变成了"小事一桩"。这种转变的关键在于更为频繁地进行集成。
所谓的持续集成(continuous integration,CI)是指将整个开发工程整体工作(编译、测试、报告等)通过自动化的方法反复多次执行的开发机制,使得隐藏的问题及早被发现。
在没有持续集成的情况下,项目做模块集成的时候,会发现很多接口都不通;需要人手动去编译打包最新的代码;发布代码和上线需要人为干预。这样的流程是把所有人写好代码之后再进行合并,然后再进行测试,最后再发布,它会把风险堆到软件发布前的最后阶段。而持续集成做的是做好一点就马上递交给下一个流程,这样能够尽早发现并解决问题。
CI强调了开发人员提交了新代码后,立即进行构建和(单元)测试,根据测试结果可以确定新代码和原有代码是否能正确集成在一起。持续集成增加了您获得反馈信息的机会。这样,您每天都能多次了解项目的状态。CI可以用来减少引入缺陷和修复缺陷之间的时间,从而改进总体软件品质。
CI的价值主要体现在以下几个方面,
1、减少风险
在一天中进行多次集成,可以减少项目的风险,这样做有利于检查缺陷,了解软件的健康状况。由于多次进行集成并执行测试和审查,所以在缺陷引入时,就发现它们的可能性更大,而不必等到以后的测试中才发现。
利用CI可以减少没有可部署的软件的风险。如在构建脚本中加入自动化的部署过程,当版本控制器有提交变更时,CI服务器就会运行这个构建脚本,从而构建可部署的软件。
利用CI可以减少很晚才发现的缺陷的风险。如在提交变更时,除了对变更部分进行测试,还要对其他源代码编写测试代码,在构建脚本中执行这些测试,从而实现自动化回归测试。
利用CI可以减少缺少项目可见性的风险,经常运行构建,确保及时将项目健康信息分发给需要的人。
利用CI可以减少低品质的软件的风险,如在每次变更时执行测试和审查,从而发现可能进入代码中的潜在缺陷。
2、减少重复过程
这些重复过程包括代码编译、数据库集成、测试和审查、部署和反馈。通过CI集成,可以确保每次都以有序且相同的方式执行该过程。从而减少重复过程的劳动。
3、生成可部署的软件
CI可以允许你在任何时间发布可以部署的软件。利用CI,你可以经常地对源代码进行一些小改动,并将这些改动与其他代码进行集成,如果出现问题,团队成员可以立即接到通知,软件会立即被修复,不采用CI实践的项目可能需要等到交付前才对软件进行集成和测试。