持续集成学习总结(一)
Ⅲ.Hudson,目前使用最广的持续集成工具.(http://hudson-ci.org/)
厂商 |
Java.net |
支持的编程语言 |
Java |
是否开源 |
是 |
价格 |
免费 |
主流 SCM 支持程度 |
Clear Case , VSS, CVS, Subversion , PVCS 等, SCM 支持最为完善 |
构建管理 |
并行构建,分布式构建,增量构建,人工强制构建, SCM 触发构建等都有支持 |
消息通知机制 |
Email , Run executable , FTP , IRC , Jabber , Lotus Sametime , RSS,SCP,Windows System Tray,Formatted Logging |
构建工具支持 |
Shell 脚本与命令行, Ant, Groovy, OpenMake Meister, Maven, Maven2 , MSbuild , NAnt , Rake (Ruby) |
项目管理工具集成 |
无 |
测试工具集成 |
CppUnit result rendering , JUnit result rendering , NUnit result rendering , Selenium result rendering , PHPUnit result rendering , MSTest result rendering , SilkCentral , Clover result rendering , PMD result rendering |
安装与配置 |
有 windows 安装程序, Self contained distribution (except SCM clients) , N 无需修改构建脚本,支持多个项目,自动配置构建脚本 |
IDE 集成 |
Eclipse Plug-in , IntelliJ Plugin |
Ⅳ.持续集成流行工具的初步分析与建议
持续集成(continuous integration)作为敏捷编程的基石现在已经被绝大多数的开发团队所广泛采用。而持续集成的工具现如今也是百花齐放,各有千秋,在此主要对比了在Java领域中比较常见的几种CI server(因为公司要求统一整个公司的CI server)。如果想了解更多的工具,可以看这里:
http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix
在此主要针对以下几种CI Server作对比,版本有点多,国内的多选用了一些open source的,而老外那边用得比较多的是商用版本;
CruiseControl (http://cruisecontrol.sourceforge.net/)
Hudson (https://hudson.dev.java.net/)
LuntBuild (http://luntbuild.javaforge.com/)
TeamCity (http://www.jetbrains.com/teamcity/)
AntHill Pro (http://www.anthillpro.com/)
Bamboo (http://www.atlassian.com/software/bamboo/)
QuickBuild (http://www.pmease.com/)
在持续集成领域,OpenSource的CruiseControl和LuntBuild可谓老牌了,尤其是CruiseControl,出自thoughtworks,这可是Martin Fowler的老巢啊。Hudson作为OpenSource里持续集成的后起之秀,现在已经赶超了这两个前辈,目前恐怕是使用最多的一个CI Server了。而后面4个是商用的CI Server,其中TeamCity是来自jetbrains的,jetbrains是开发著名的IDE IntelliJ的公司。Bamboo则是开发著名的Bug Tracking工具Jira和Wiki Confluence的公司atlassian公司出品的。AntHill也属于Continuous Integration界的元老,QuickBuild则是LuntBuild的商业版本,我在下面重点考量的是QuickBuild,因为LuntBuild好像现在更新较慢了,而且QuickBuild现在好像也有了免费的所谓的Community Edition,功能齐全,只是配置数有所限制。在这些商业版本中,TeamCity应该是目前市场占有率最高的。由于公司里比较倾向使用商业版本的服务器,所以我重点比较的是后4种,捎带比较了一下CruiseControl和Hudson。TeamCity和QuickBuild都有各自的免费版本,有兴趣的也可以去看看。
CI Server在本质上就是一个定时调度器。我们配置一系列的项目,然后设定一个定时器,让它干一些活,然后通知大家。所以很多公司都使用所谓Home-made的工具,用cron+Ant/Maven来做持续集成,这个就已经可以达到CI的最简单的功能了。而使用工具,就是我们除了基本的编译和通知功能以外,我们还有很多其它的需求,在公司里,选择CI Server主要考虑以下几点:
·便于公司的统一管理(大约有200+ Projects需要统一管理)
·对于项目本身进行流程管理: Daily Build -> QA Build -> Release Build
·公司AD(Active Directory)的连接以对用户进行权限管理
·Continuous Testing的支持,即对于项目的Test要能产生出详尽的报告以及收集Test的统计数据以作为项目的分析和考量
·Continuous Code Quality Analysis的支持,即能处理项目产生的Coverage报告,Code的static analysis报告,并且能收集这些报告的统计数据以作项目的分析和考量
·与SCM工具的集成,我们公司主要有三种VCS,ClearCase, Subversion和StarTeam
·与其它工具的集成,如bug tracking工具,IDE集成等等。