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

时间:2009-03-02 22:42:39

标签: java continuous-integration hudson jenkins cruisecontrol

我认为标题总结了它。我只是想知道为什么一个或另一个对于Svn的Java项目的连续集成构建更好。

8 个答案:

答案 0 :(得分:117)

我同意this answer,但想补充几点。

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

CruiseControl非常棒,但正如丹·戴尔(Dan Dyer)恰如其分的博客文章 Why are you still not using Hudson? 所述,它首先受到影响。 (嗯,就像英国一样,如果你愿意,后来进入工业革命,其他人开始用更新的技术超越它。)

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

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

至于第三方的东西(mentioned here by Jeffrey Fredrick) - 这是一个很好的观点,但我的印象是Hudson很快就赶上了,而且已经有很多plugins available

对我来说,我可以命名的两件事我想念CruiseControl:

  1. 它关于破碎版本的警告电子邮件比Hudson的信息量更多。在大多数情况下,根本原因很明显来自CC格式良好的HTML邮件本身,而对于Hudson,我通常需要关注Hudson Web UI的链接,然后点击一下以获取详细信息。
  2. CruiseControl dashboard更适合开箱即用,作为“information radiator”(显示在公共显示器上,或投影在墙上,以便您可以随时快速查看状态所有项目)。有了Hudson的头版,我们需要一些Greasemonkey技巧来获得所有绿色/红色的工作行。
  3. 轻微免责声明:过去一年左右,我没有密切关注CC项目。 (但是从quick look来看,它没有任何戏剧性的变化。)

    注意(2011-02-03):Hudson已renamed/forkedJenkins(由Hudson创作者Kohsuke Kawaguchi和其他人提供)。看起来,控制Hudson名称的Oracle也将保持“Hudson”,但我的个人建议是与 Jenkins 一起使用,无论Oracle说什么。

答案 1 :(得分:36)

很长一段时间CruiseControl的提交者从未使用过Hudson的人我很偏颇,但我对它的看法是:

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

CruiseControl得到了很多3rd party stuff的支持,并且可以利用xml配置做一些巧妙的技巧,比如插件预配置和include.projects,它允许你用项目对配置信息进行版本化。

如果你只有一些版本,我认为哈德森是明显的赢家。如果你有很多 - 而且不介意xml - 那么我认为CruiseControl的xml配置技巧将成为一种真正的力量。

答案 2 :(得分:30)

我的上一个项目,我们开始使用CruiseControl。哪个摇摇欲坠。然后我们搬到了哈德森,后者震得更厉害。关于哈德森我最喜欢的事情:

  • 上游和下游项目。因此,对数据访问代码的提交最终也会触发表示层的构建。

  • 轻松使用现有项目作为新项目的起点 - 因此,如果您习惯于创建开发分支,那么确保这些项目处于持续集成之中是很容易的。

答案 3 :(得分:15)

一个区别是哈德森是一个天才智力的产物 - Kohsuke Kawaguchi。因此,它是一致的,连贯的,坚如磐石的。不利方面可能是对进度的限制。然而,Kohsuke是非常多产的,所以我不会太担心。而且,它是可扩展的,所以如果Kohsuke没有时间(或不想要),你可以自己做。

答案 4 :(得分:4)

我查看了Cruise Control和Hudson,但选择了Hudson,因为它更容易设置和配置。 Hudson现在似乎被非常广泛地用于定期发布和通过插件的大量可扩展性。我强烈推荐它。

答案 5 :(得分:3)

在我看来,Hudson是更方便用户的选择。它可以通过Web界面完全设置和维护(当然,除了初始安装webapp之外)。

关于CruiseControl的唯一方法是,如果算上内置的XML文件编辑器。

尽管如此,在使用两者之后,我仍然更喜欢任何一个没有自动构建的人。

答案 6 :(得分:1)

我尝试过巡航控制......它很好......但是文件是碎片化的。仪表板令人困惑。小部件创建也令人困惑。没试过哈德森。将在周末尝试。

答案 7 :(得分:0)

我最近设置Jenkins用于构建使用Subversion的Borland BDS 2006项目,我对它非常满意。我还没用过CruiseControl,所以我无法比较。阅读我的博客文章了解更多信息。

Continuous integration of Delphi project with Jenkins