持续集成工具简介

2001年2月,在软件开发各领域有所建树的17位大师联合发表了《敏捷软件开发宣言》,提出了敏捷开发这一概念,至此敏捷软件开发风靡世界,为无数软件开发项目所采用。而在所有这些运用敏捷开发获得成功的软件项目中,运用持续集成工具无疑成为一项最重要的最佳实践,因为它集中体现了敏捷开发的各项思想。

持续集成工具的意义

首先,它促进了项目团队的沟通反馈。想想看,持续集成工具使每个人每天的劳动成功及时发布到应用服务器上。你只要登陆服务器,就可以运行和查看整个项目的每项功能。开发人员可以相互学习各自的设计,需求人员可以确认开发成功是否符合需求,测试人员可以及时测试各项功能。再这样一个平台下,沟通变得简便,反馈也因而变得及时。如果需要,项目组可以随时拿出最新开发成果向客户展示,以便获得他们的反馈。

其次,它促使项目开发过程中的许多工作变得简单。每天都要无数次地下载最新代码、集成、编译、发布,还要检查代码是否规范,测试各项功能是否正常运行,这是多么巨大而繁琐的工作啊!因为持续集成工具的存在,你只需要及时上传代码,时不时看看反馈结果,多么easy的事情。它使我们腾出了大量时间去做更重要的事情——程序应当怎样设计,这无疑提高了团队工作效率。

另外,它使得增量迭代的开发模式成为了可能。需求人员可以尽早地看到开发成果,以便尽早地与客户确认需求,纠正需求方面的问题;测试人员可以与开发过程并行,使测试工作更加充分,时间更加充足;项目经理则可以更加实时地掌握项目进度,保证项目顺利完成。

最后,它为开发团队提供了机会和勇气去及时纠正他们的错误。这一点可能不太能让人理解,但却是极度重要的。再有经验的需求分析师也有理解不到位的分析,再有经验的开发工程师也有设计不到位的程序代码。每天集成的工作,为我们及时发现问题提供了条件(问题发现得越晚,付出的代价就越大)。发现问题以后怎么办呢?也许就需要及时的摒弃有问题的代码,及时进行重构。但在过去,我们常常没有这样的勇气去重构,因为害怕它影响其它的程序。这是一个谁多说不清的潜在威胁。而现在,有了持续集成和自动化测试过程,我们可以勇敢地重构代码、彻底地解决问题。

主流的持续集成工具

目前,比较主流的持续集成工具很多,最著名的当数CruiseControl,而当下的新锐则是Hudson。CruiseControl(http://cruisecontrol.sourceforge.net/)是敏捷大师MartinFlowler旗下的产品,又是免费和开源产品。凭借大师与开源产品的号召力,当仁不让成为持续集成领域的巨无霸。它提供了与几乎所有主流配置管理工具的集成,包括CVS、SVN、VSS、CMSynergy等等,(CruiseControl没有提供对SourceAnyWhereforVSS的支持,但SAWV5.4以上提供了对CruiseControl.Net的支持)。同时,它提供了对最主流的Ant与Maven构建工具的集成,提供了对.Net和Ruby的支持,功能不可谓不强大。

虽然CruiseControl功能强大,但随着后起之秀的一个个出现,它的劣势被凸显出来,如安装配置过于复杂、功能扩展能力不足等。在众多后起之秀中,Hudson无疑是最耀眼的一个。Hudson(http://java.net/projects/hudson/)最吸引人的特性是它很容易配置:很难找到如此容易设置的CI服务器,也很难找到开箱即用特性如此丰富的CI服务器。而Hudson容易使用的另一个原因是它具有强大的插件框架,所以很容易添加特性。例如,一个Hudson插件可以随时间的推移不断跟踪FindBugs和代码覆盖。但Hudson只能运行在JDK1.5以上版本,这对于一些老项目来说只能是望洋兴叹。

如何提高研发质量与持续集成

持续集成工具简介

持续集成工具是怎样工作的?

(续)

相关推荐