我认为标题总结了它。我只是想知道为什么其中一种更适合来自 Svn 的 Java 项目的持续集成构建。
8 回答
我同意这个答案,但想补充几点。
简而言之,Hudson(更新:Jenkins)现在可能是更好的选择。首先也是最重要的,因为通过 Hudson 的 Web UI 创建和配置作业(CC 词汇中的“项目”)比编辑 CruiseControl 的 XML 配置文件(我们曾经保留在版本控制中以便更好地跟踪它)快得多. 后者并不是特别困难 - 它只是更慢更乏味。
CruiseControl 非常棒,但正如 Dan Dyer 名副其实的博文所述,为什么您仍然不使用 Hudson?,它首先受到影响。(嗯,像英国一样,如果你愿意的话,后来进入工业革命,当时其他人开始用更新的技术超越它。)
我们大量使用 CruiseControl,并逐渐切换到 Hudson,最终独占使用它。更重要的是:在这个过程中,我们已经开始将 CI 服务器用于许多其他事情,因为设置和管理 Hudson 作业非常方便。(我们现在在 Hudson 有大约 40 多个工作:用于稳定和开发分支的常规构建和测试工作;与发布相关的工作(构建安装程序等);针对代码库运行一些(实验性)指标的工作;运行(慢) 针对特定数据库版本的 UI 或集成测试;等等。)
根据这个经验,我认为即使你有很多构建,包括复杂的构建,Hudson 也是一个非常安全的选择,因为就像 CC 一样,基本上你可以用它来做任何事情。只需将您的作业配置为按照您希望的顺序运行任何 Ant 或 Maven 目标、Unix shell 脚本或 Windows .bat 脚本。
至于第 3 方的东西(Jeffrey Fredrick 在此提到) - 这是一个很好的观点,但我的印象是 Hudson 正在迅速追赶,并且已经有大量可用的插件。
对我来说,我想念 CruiseControl 的两件事是:
- 它有关损坏构建的警告电子邮件比 Hudson 的警告电子邮件更能提供信息。在大多数情况下,根本原因从 CC 格式精美的 HTML 邮件本身就很明显,而对于 Hudson,我通常需要点击 Hudson Web UI 的链接,然后单击一下以获取详细信息。
- CruiseControl 仪表板更适合开箱即用,作为“信息辐射器”(显示在公共监视器上,或投影在墙上,以便您始终可以快速查看所有项目的状态)。在 Hudson 的首页上,我们需要一些 Greasemonkey 技巧来获得漂亮的绿色/红色作业行。
次要免责声明:我在过去一年左右没有密切关注 CC 项目。(但快速浏览一下,它并没有发生任何戏剧性的变化。)
注意(2011-02-03):Hudson 已被重命名/分叉为Jenkins(由 Hudson 的创建者Kohsuke Kawaguchi和其他人)。看起来甲骨文——控制着 Hudson 的名字——也会保留“ Hudson ”,但我个人的建议是选择Jenkins,不管甲骨文怎么说。
作为一名长期的 CruiseControl 提交者和从未使用过 Hudson 的人,我非常有偏见,但我的看法是:
Hudson 更容易启动和运行(很大程度上来自一个漂亮的 Web 界面),并且拥有一个非常活跃的插件开发社区。
CruiseControl 得到了许多3rd 方的支持,并且可以使用 xml 配置做一些巧妙的技巧,比如插件预配置和 include.projects,它可以让您使用项目对配置信息进行版本控制。
如果您只打算进行一些构建,我认为 Hudson 是明显的赢家。如果你有很多——而且不介意xml——那么我认为CruiseControl 的xml 配置技巧会成为一种真正的优势。
我的上一个项目是从 CruiseControl 开始的。震撼。然后我们搬到了哈德逊,那里更加震撼。我喜欢哈德森的地方:
上下游项目。因此,对数据访问代码的提交最终也会触发表示层的构建。
轻松使用现有项目作为新项目的起点 - 因此,如果您有创建开发分支的习惯,那么确保这些分支处于持续集成状态是一件轻而易举的事。
一个不同之处在于,哈德逊是一位天才智慧的产物——川口康介。正因为如此,它是一致的、连贯的、坚如磐石的。不利的一面可能是对进展速度的一些限制。但是,Kohsuke 非常多产,所以我不会太担心这一点。而且,它是可扩展的,所以如果 Kohsuke 没有时间(或不想)做某事,您可以自己做。
我查看了 Cruise Control 和 Hudson,但选择了 Hudson,因为它更容易设置和配置。如今,Hudson 似乎被广泛使用,定期发布并通过插件实现大量可扩展性。我会极力推荐它。
在我看来,Hudson 是更用户友好的选择。它可以完全通过 Web 界面进行设置和维护(当然,除了 webapp 的初始安装)。
关于 CruiseControl,唯一可以这么说的方法是,如果您算上内置的 XML 文件编辑器。
尽管如此,两者都使用了,我仍然更喜欢没有自动构建的任何一个。
我试过巡航控制......它很好......但是文件是零散的。仪表板令人困惑。小部件的创建也令人困惑。没试过哈德森。周末会试试。
我最近使用 Subversion 设置 Jenkins 来构建 Borland BDS 2006 项目,我对此非常满意。我还没用过 CruiseControl,所以无法比较。阅读我的博客文章了解更多信息。