我认为标题总结了这一点。我只是想知道为什么对于从Svn进行Java项目的持续集成构建而言,一个或另一个更好。
Answers:
作为CruiseControl的长期提交者以及从未使用过Hudson的人,我颇有偏见,但我的看法是:
Hudson的安装和运行起来非常容易(很大程度上是通过一个不错的Web界面),并且拥有一个非常活跃的插件开发社区。
CruiseControl获得了许多第三方的支持,并具有对xml配置进行一些巧妙技巧的好处,例如插件preconfiguration和include.projects,可让您使用项目对配置信息进行版本控制。
如果您只需要构建几个版本,我想哈德森无疑是赢家。如果您将拥有很多东西-并且不介意xml-那么我认为CruiseControl的xml配置技巧将成为真正的优势。
我同意这个答案,但想补充一点。
简而言之,哈德森(更新:詹金斯)现在可能是更好的选择。首先,因为与编辑CruiseControl的XML配置文件(我们用来保持版本控制只是为了更好地跟踪它)相比,通过Hudson的Web UI创建和配置作业(CC词汇中的“项目”)要快得多。。后者并不是特别困难-只是速度较慢且乏味。
CruiseControl很棒,但是正如Dan Dyer恰当命名的博客文章所述,为什么还不使用Hudson?,它遭受了第一。(嗯,就像英国一样,后来进入了工业革命,当时其他人开始用较新的技术取代它。)
我们大量使用CruiseControl,并逐渐切换到Hudson,最后仅使用它。而更为严重:在这个过程中,我们已经使用很多其他的事情比以前的CI服务器开始,因为建立和管理工作哈德森如此得心应手。(我们现在在哈德森拥有40多个工作:稳定和开发部门的常规构建和测试工作;与发布(构建安装程序等)相关的工作;在代码库中运行某些(实验性)指标的工作;在运行中(缓慢)的工作)针对特定数据库版本的UI或集成测试;等等。)
根据这种经验,我认为即使您有很多构建,包括复杂的构建,Hudson也是一个非常安全的选择,因为像CC一样,您基本上可以使用它进行任何操作。只需将您的作业配置为按您希望的顺序运行任何Ant或Maven目标,Unix shell脚本或Windows .bat脚本。
至于第三方的东西(这是Jeffrey Fredrick在这里提到的),这是一个好点,但是我的印象是Hudson很快赶上了潮流,并且已经有很多可用的插件。
对我来说,我想念的有关CruiseControl的两件事是:
次要免责声明:过去一年左右,我一直没有密切关注CC项目。(但是从快速的角度看,它并没有发生任何戏剧性的变化。)
注意(2011-02-03):哈德逊(Hudson)的创建者川口浩介(Kohsuke Kawaguchi)等人将其重命名/分叉为詹金斯(Jenkins)。看起来,控制Hudson名称的Oracle似乎也会保留“ Hudson ”,但我个人的建议是与Jenkins一起使用,无论Oracle怎么说。
我的最后一个项目,我们从CruiseControl开始。震撼了。然后,我们搬到了哈德森(Hudson),后者的影响更大。我喜欢哈德森的事情:
上下游项目。因此,提交您的数据访问代码最终还将触发表示层的构建。
轻松地将现有项目用作新项目的起点-因此,如果您习惯于创建开发分支,那么确保将这些分支进行持续集成是一件容易的事。
ccnet.config
。真的很简单。在考虑使用CC的Jenkins时,通常情况下,“轻松”通常只是“轻松”-在GUI与XML文件中进行操作。TMTOWTDI,但都不是特别困难。
我认为,Hudson是更人性化的选择。可以通过Web界面完全设置和维护它(当然,除了最初安装的Webapp)。
关于CruiseControl的唯一说法是,如果算上内置XML文件编辑器。
尽管如此,尽管两者都使用过,但我仍然比没有自动化构建更喜欢任何一个。
我尝试了巡航控制系统。。。不错。但是文件零散。仪表板令人困惑。小部件的创建也令人困惑。从未尝试过哈德森。将在周末尝试。
我最近设置了Jenkins,以使用Subversion构建Borland BDS 2006项目,对此我感到非常满意。我尚未使用CruiseControl,因此无法进行比较。阅读我的博客文章以获取更多信息。