持续集成学习总结(一)

 

.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/)

在持续集成领域,OpenSourceCruiseControlLuntBuild可谓老牌了,尤其是CruiseControl,出自thoughtworks,这可是Martin Fowler的老巢啊。Hudson作为OpenSource里持续集成的后起之秀,现在已经赶超了这两个前辈,目前恐怕是使用最多的一个CI Server了。而后面4个是商用的CI Server,其中TeamCity是来自jetbrains的,jetbrains是开发著名的IDE IntelliJ的公司。Bamboo则是开发著名的Bug Tracking工具JiraWiki Confluence的公司atlassian公司出品的。AntHill也属于Continuous Integration界的元老,QuickBuild则是LuntBuild的商业版本,我在下面重点考量的是QuickBuild,因为LuntBuild好像现在更新较慢了,而且QuickBuild现在好像也有了免费的所谓的Community Edition,功能齐全,只是配置数有所限制。在这些商业版本中,TeamCity应该是目前市场占有率最高的。由于公司里比较倾向使用商业版本的服务器,所以我重点比较的是后4种,捎带比较了一下CruiseControlHudsonTeamCityQuickBuild都有各自的免费版本,有兴趣的也可以去看看。

CI Server在本质上就是一个定时调度器。我们配置一系列的项目,然后设定一个定时器,让它干一些活,然后通知大家。所以很多公司都使用所谓Home-made的工具,用cron+Ant/Maven来做持续集成,这个就已经可以达到CI的最简单的功能了。而使用工具,就是我们除了基本的编译和通知功能以外,我们还有很多其它的需求,在公司里,选择CI Server主要考虑以下几点:

·便于公司的统一管理(大约有200+ Projects需要统一管理)

·对于项目本身进行流程管理: Daily Build -> QA Build -> Release Build

·公司ADActive Directory)的连接以对用户进行权限管理

·Continuous Testing的支持,即对于项目的Test要能产生出详尽的报告以及收集Test的统计数据以作为项目的分析和考量

·Continuous Code Quality Analysis的支持,即能处理项目产生的Coverage报告,Codestatic analysis报告,并且能收集这些报告的统计数据以作项目的分析和考量

·SCM工具的集成,我们公司主要有三种VCSClearCase, SubversionStarTeam

·与其它工具的集成,如bug tracking工具,IDE集成等等。

posted @ 2011-10-31 12:13  天空行马  阅读(873)  评论(0编辑  收藏  举报