CruiseControl:简称CC,持续集成工具,主要提供了基 于版本管理工具(如CVS)感知变化或每天定时的持续集成,并提供持续集成报告、Email、Jabber等等方式通知相关负责人,其要求是需要进行日构建的专桉已编写好全自动的专桉编译脚本(可基 于Maven或Ant)。
Jez Humble--- ThoughtWorks产品Cruise 产品经理专访
记者(后简称记):CruiseControl是一个开源(式)的持续集成工具。那么开源的CruiseControl,与企业版本的Cruise, 有什么区别呢? Jez:主要有几个区别,但是最重要的是Cruise新增了一个“构建管道 ”(“pipeline”)的概念。我们之后会再深入的谈,概括来说这个“pipeline”还可以帮助你把软件部署到生产环境里。很多公司在部署软件时都会遇到问题。所以说Cruise不止是改进传统持续集成工具的不足,而且还能帮助你解决部署到生产环境中时遇到的问题。另外,CruiseControl和CruiseControl.NET都比较难用、难设定,所以 我们把Cruise设计得容易使用。Cruise也有一些先进的功能,如构建网格(build grid)。它能让你通过近于零配置,,和并行化你的持续集成系统。 记:Cruise最大的优点是什么呢? Jez:Cruise最大的优点就如我上面说的先进的功能:软件部署,容易使用, build grid。还有迎合企业用户需要的authentication&authorization,和fail-over。当一个agent breaks,server会自动把工作分配到其他的agent上面去。 记:你可以多谈一下构建网格(build grid)这个概念吗?你的软件产品可能要在不同的platform上(e.g. Windows, Linux, and Solaris)运行,那么你就需要在几台不同的电脑上,并行地执行你的构建(build)。如果你的build里面的自动测试花时间长,你也可以把这些测试分开放在几台上,并行地运行。还有,对比较大型的公司来讲,利用 build grid 来分工的话,几个部门都可以共用一个centrally managed 的server。 记:当你们作产品计划时,什么是你们的top priority? Jez:作为一个商业性的软件,当然是要吸引客户的购买。所以我们知道要做出一些很吸引的功能。Cruise一定要容易用,同时也要满足客户的需求。Cruise要做到替客户降低成本,帮助他们顺利的部署软件,和把持续集成变成一件简单的事情。那么人们就自然觉得购买Cruise是一个好的投资。 记:市面上有不少的持续集成工具,有什么能使Cruise变成持续集成工具之中的第一位? Jez:Cruise当然现在还不是,但这确是我们的目标。现在CruiseControl是最多人下载的持续集成工具,所以Cruise尝试拿令CruiseControl受欢迎的因素,再改良和创新。 记:有一些持续集成工具,例如 Atlassian的Bamboo。你可以比较一下Bamboo和Cruise的异同吗? Jez:除了Bamboo,还有不少其他的持续集成工具。我决定了在Cruise 发布之前不去看其他的持续集成工具。Thoughtworks比起其他开发工具的公司不同的地方,就是Thoughtworks是一间咨询服务公司。在持续集成技术方面,我们有替很多不同的客户解决问题的经验。所以Cruise这个产品的理念,是去解决我们见过的、实在的问题,而不是去抄袭或match其他产品的特性。 记:当自动测试越来越多,持续集成的build也会越来越花时间,Cruise怎样解决这个问题? Jez:Cruise的build grid功能就能缩短build的时间。把测试分开,就可以放在几台电脑上并行。设定Cruise的agent是极之简易;安装了agent之后,输入server的IP,agent就自动的加入grid里面,无须任何配置。 Cruise是为企业而设计的软件,但是敏捷开发(Agile)在一些大公司里不大给接受。它们觉得如要应用敏捷,要很大、很难的改变。那么你会怎样说服它们去改用敏捷开发呢? Thoughtworks很多年以来都有面对这个问题。我们运用敏捷开发,也体验到敏捷给我们的客户带来的好处。但是要改变一个公司的制度是一件非常复杂的事情。Thoughtworks通常从一个小团队开始,一个项目开始,利用敏捷手段,解决它所遇的问题。由上层把敏捷强加到团队身上是走不通的 。 Cruise就是这样的一个工具,它可以帮助你从一个项目开始,(慢慢)(step by step)采用敏捷的手段。相比其他敏捷的实践(如TDD,结对编程),持续集成能让你看到即时的效果:更快的找到bug,更快的获得反馈,和更容易得把软件部署。不单是敏捷的团队,任何团队都可以从中得益。市面上有的工作流程和发布管理的工具,但价钱一点都不便宜。Cruise的Release 1.0针对中小型公司,或一个大公司里面的中小型团队,把持续集成的好处,立刻带给它们。 记:你们开发Cruise的时候,是用什么工具呢? Jez:最初我们用CruiseControl,但三个月前我们就用Cruise作为我们的持续集成工具。 但是你们用Cruise时,也需要其他工具的配合,比方说测试、版本控制、等工具。我们的开发最初用SVN ,但是之后我们看到整个软件开发业有开始转用分布式版本控制system的趋势(Distributed Version Control System, e.g.Git, Mercurial,Bitkeeper),而我们选择了用Mercurial。Cruise的Release 1.0会支持SVN和Mercurial。我们也用Ant, JUnit和Selenium作为测试和构建的工具。Cruise也支持NUnit和NAnt。 CruiseControl, CruiseControl.NET,和 CruiseControl.rb是针对它们自己一个语言而设计的工具。Cruise作为一个企业版本软件,对于.NET, Java和Ruby项目,都是ava和Ru。持续集成工具和 Version Control System一样,是没有理由硬把它们分开为SVN.NET、SVN.Ruby等等。。