Hudson 和 CruiseControl for Java 项目有什么区别?

我认为标题总结了这一点。我只是想知道为什么一个或另一个更适合从Svn的Java项目的连续集成构建。


答案 1

我同意这个答案,但想补充几点。

简而言之,Hudson(更新:Jenkins)可能是现在更好的选择。首先,也是最重要的一点,因为与编辑CruiseControl的XML配置文件(我们过去为了更好地跟踪它而保留在版本控制中)相比,通过Hudson的Web UI创建和配置作业(CC词汇表中的“项目”)要快得多。后者并不是特别困难 - 它只是更慢,更乏味。

CruiseControl一直很棒,但正如Dan Dyer的博客文章所指出的那样,为什么你仍然没有使用Hudson?,它遭受了第一名的痛苦。(嗯,就像英国一样,如果你愿意的话,后来进入工业革命,当时其他人开始用更新的技术取代它。

我们大量使用CruiseControl,并逐渐切换到Hudson,最终专门使用它。更重要的是:在这个过程中,我们已经开始将CI服务器用于许多其他事情,因为设置和管理Hudson作业非常方便。(我们现在在Hudson有大约40多个工作:稳定和开发分支的常规构建和测试工作;与发布相关的工作(构建安装程序等);针对代码库运行一些(实验性)指标的工作;针对特定数据库版本运行(慢速)UI或集成测试的作业;等等。

从这次经历来看,我认为即使你有很多构建,包括复杂的构建,Hudson也是一个非常安全的选择,因为像CC一样,基本上你可以用它来做任何事情。只需将您的作业配置为按照您希望的顺序运行任何 Ant 或 Maven 目标、Unix shell 脚本或 Windows .bat脚本即可。

至于第三方的东西(杰弗里·弗雷德里克(Jeffrey Fredrick)在这里提到) - 这是一个很好的观点,但我的印象是Hudson正在迅速赶上,并且已经有大量的插件可供使用。

对我来说,我能说出的关于CruiseControl的两件事::

  1. 它关于损坏构建的警告电子邮件比Hudson的警告电子邮件更具信息性。在大多数情况下,根本原因从CC格式良好的HTML邮件本身中显而易见,而对于Hudson,我通常需要点击Hudson Web UI的链接,然后单击一下以获取详细信息。
  2. CruiseControl仪表板开箱即用,更适合作为“信息辐射器”(显示在公共监视器上,或投影在墙上,以便您始终可以快速查看所有项目的状态)。在Hudson的首页,我们需要一些Greasemonkey技巧来让作业行都很好地绿色/红色。

次要免责声明:在过去的一年左右的时间里,我没有密切关注CC项目。(但从快速浏览来看,它没有以任何戏剧性的方式改变。

注意(2011-02-03):Hudson已被重命名/分叉Jenkins(由Hudson的创造者Kohsuke Kawaguchi等人创建)。看起来控制哈德逊名字的甲骨文也会保留“哈德逊”,但我个人的建议是和詹金斯一起去,不管甲骨文说什么。


答案 2

作为一个长期的CruiseControl提交者和从未使用过Hudson的人,我非常有偏见,但我对它的看法是:

Hudson更容易启动和运行(很大程度上来自一个不错的Web界面),并且有一个非常活跃的插件开发社区。

CruiseControl得到了许多第三方的支持,并且具有使用xml配置(如插件预配置和includ.projects)进行一些巧妙的技巧的好处,这使您可以对配置信息进行项目版本控制。

如果你只打算有几台构建,我认为Hudson是明显的赢家。如果你要有很多 - 并且不介意xml - 那么我认为CruiseControl的xml配置技巧成为真正的优势。


推荐