CruiseControl [.Net]和TeamCity哪个更适合持续集成?

117
我想问一下您基于实际经验认为哪种自动化构建环境更好。我计划进行一些 .Net 和一些 Java 开发,因此我希望有一个支持这两个平台的工具。
我已经阅读了一些资料,了解到了 CruiseControl.NET,它被用于stackoverflow开发,以及TeamCity ,它支持在不同操作系统和编程语言上运行构建代理。如果你对这两个工具都有实践经验,你更喜欢哪一个?为什么?
目前,我最关心的是工具的易用性和管理,而不是CC是开源的,TC随着项目数量的增加需要付费许可证(因为我只需要为少量项目使用它)。
此外,如果还有其他符合上述要求且您认为值得推荐的工具,请随意在讨论中提出。
11个回答

111

我从使用产生Cruise Control(Java版本)的那个时候就开始了解和使用持续集成工具,几乎尝试过所有这样的工具。与TeamCity一起使用后,我感到非常满意。它非常容易设置,同时还提供了很多强大的功能。构建统计页面显示构建时间、单元测试数量、通过率等内容非常好用。TeamCity的项目主页也非常有价值。 对于简单的.NET项目,只需要告诉TeamCity解决方案在哪里以及哪些程序集具有测试,这就足够了(除了源代码控制位置)。我们还使用了一些复杂的MSBuild脚本,并进行了构建链接。 我还进行了两次TeamCity升级,都非常顺利。

CruiseControl.NET也运行良好。设置它可能有点棘手,但是它的历史比较悠久,因此可以轻松在网络上找到解决方案。由于CruiseControl.NET是开源的,您还可以添加或更改任何您喜欢的东西。自发布以来,我一直在使用CruiseControl.NET,并编写了cc.tray的早期代码(幸运的是被知道得更好的人重新编写了)。

ThoughtWorks的Cruise看起来也不错,但我认为没有令我切换的充分理由。如果我要开始一个新的项目,我可能会尝试一下,但是TeamCity在使简单的事情变得简单的同时,使复杂的事情也很容易。

编辑: 我们几周前刚升级到了TeamCity 5.0,这又是一次顺利的升级。它让我们能够利用改进的代码覆盖率功能和GIT支持。我们现在还在使用个人构建和预测试提交功能。我只是想更新答案,表明TeamCity不断改进并且仍然易于使用。


想问一下你是否可以分享一段屏幕录像,展示如何创建一个简单的.NET项目并与TeamCity合作(使用JING(免费的屏幕录制)或其他工具),然后将链接发布在这里或其他地方,以便我们和其他遇到困难的人有一个良好的入门启示:)谢谢。 - balexandre
2
@balexandre - 我发现Team City文档非常不错。而@boj的回答在这里提供了一个很好的屏幕录像链接http://blog.wekeroad.com/kona/kona-2/。 - Mike Two
我一直对CI感到害怕,因为我对CCNet的印象,但上周我尝试了TeamCity 6.5,真是太棒了。我甚至没有碰过一个xml/配置文件。 - kay.one
1
如果您目前正在使用CC.Net并且想要转移到Team City,这会很痛苦吗?TC如何生成MSI文件? - Wes
@Wes,我不知道这对你是否仍然相关,但我们有20多个项目在CC.Net中运行,但最近我为一些Android项目实施了TeamCity。迄今为止最大的痛点是学习Ant,但如果我将项目放在CC.Net中,那就必须得做。如果我能说服管理层支付额外的构建配置费用(免费到一定程度),我会很高兴将所有项目移至TeamCity,主要是由于配置在TeamCity中非常轻松,在CC.Net中则是一个XML沼泽。 - johnc

33

我是CC.NET的铁杆粉丝。目前我们在CruiseControl中有5个项目,使用情况很好。手动编写配置文件可能会令人痛苦,但还可以接受。

但是

Kona: 连续集成和更好的单元测试(前1/3关于TeamCity)的演示录屏后,我也检查了TeamCity。我很喜欢集成的单元测试仪表板和配置界面。

我认为每个人在选择CC.NET或TeamCity之前都应该观看这个视频。

p.s.:希望互联网上也有有价值的CC.NET视频。


15

我最喜欢的CI服务器是Hudson。易于设置和维护,有很多漂亮的图表可以向开发人员和非开发人员展示趋势,并且是免费的。

我目前在项目中使用TeamCity,总体上我对它感到满意,但是它生成的许多图表并不特别有用,并且配置起来比Hudson更复杂。

尽管如此,TeamCity功能强大,在许多情况下是免费的,而且有一个强大的功能:远程运行。您可以直接从IDEA或Eclipse "预提交"您的检查,在TeamCity服务器上运行一个或多个构建配置,并且仅在构建成功(例如编译和所有测试通过)时提交更改。

鉴于您可以在几个小时内同时运行TeamCity和Hudson以及其他任何您能想到的CI服务器(例如CruiseControl),这可能值得一试。如果您不能快速地启动CI服务器进行并排比较,那么至少您可以获得安装和/或配置的易用性数据点。


6
+1 给 Hudson。还可以参考:将 Hudson 用作 .NET 构建工具:https://dev59.com/vnRB5IYBdhLWcg3wc3A0#616230;CruiseControl vs Hudson:https://dev59.com/MXRB5IYBdhLWcg3wgHar。 - Jonik

12

我在不同的项目中都成功地使用过这两种工具。就安装和管理方面而言,Team City要容易得多。你不必像使用CC时一样需要修改.config文件,而且设置也非常简单。由于你没有很多项目,我建议在你需要支付Team City的费用之前,先选择使用Team City。


12

我曾经使用过CC.net和TeamCity。现在,我被要求为我们的组织(5名开发人员)设置和安装TeamCity。我们的组织使用一些不常见的实践和工具(至少对于我们这样规模的组织来说),例如Perforce用于源代码控制以及在异构操作系统上运行多个构建代理,这导致了一些初始设置方面的困扰。然而,通过电子邮件提供的支持非常出色,帮助我们完成了所有设置。我提出的愚蠢问题都能在几分钟内得到回答。

界面直观且响应迅速,功能齐全。该产品价格昂贵。配置很容易,Web界面智能地更新而无需重启代理或服务器服务,甚至无需刷新页面。

我感觉我们正在使用该产品的几乎所有高级功能,并且到目前为止还没有发现任何错误。Ndepend集成、嵌套的NAnt脚本、Perforce版本标记等,你说了算,我们都在用。

我强烈推荐TeamCity给任何寻找持续集成服务器或任何构建服务器的人。


Perforce 是一个不太常见的工具吗?Perforce 对于任何规模的团队都非常棒。我自己在家庭开发中使用它 :) - sonstabo
@sonstabo,我同意这个观点,大多数小公司使用SVN或GIT,而Perforce主要用于大型公司。我曾经使用过Perforce并且很喜欢它,但那时我在一个有1000名开发人员的公司工作。 - Samuel Neff

3

不想向您推荐其他工具 :-)

Hudson是一个很好的开源替代品,我曾经使用过CC和CC.net,我承认它们是非常棒的工具。我正在考虑切换到Hudson,因为它似乎更容易设置和维护。

https://hudson.dev.java.net/


1
由于似乎没有人考虑使用Hudson进行.NET CI,因此我已经使用了Cruise Control、Team City和Bamboo,并发现在预算是一个重要考虑因素的大多数情况下,Hudson是最好的工具。 - Dan Rigby

3
请确保您选择的系统能够扩展到您需要处理的项目数量...我使用CruiseControl.Net,但不建议用于构建大量项目...我有一个(可能稍微奇怪的)安排,其中我有许多C ++静态库,我将它们组合成应用程序。每个库都依赖其他库,应用程序会拉取一组库并进行构建。每个库都有一个测试套件。每个应用程序都有一个测试套件。我为5个编译器和(Windows)平台的变体构建。

我发现的第一件事是,CC.Net的项目触发器并不是您所需的,而且多触发器与项目触发器不兼容。项目触发器的工作方式(它们使用远程连接到存储项目的服务器(即使是由CC.Net的同一实例管理的项目),然后从该服务器中提取所有项目,并按顺序搜索列表以查找您感兴趣的项目...)意味着它们无法扩展。一旦您超过一定数量的项目,您会发现CC.Net占用了构建机器的大部分CPU。

当然,它是开源的,所以您可以修复它...而且,我相信它对于数量较少的非相互依赖项目来说是可以的。

如果您想了解我遇到的问题以及一些CC.Net的补丁,请点击这里查看http://www.lenholgate.com/archives/cat_ccnet.html


哦...感谢您提供这个信息,非常有价值的帖子。特别是当您说TC是一个简单的设置,其限制是项目数量时,CC和CC.Net可能会发挥作用。但正如您所说,当项目数量增加时,它会遇到问题...再次感谢。 - zappan
即使在我经过大量修改的CC.Net版本中,我仍然遇到问题,因为CC.Net使用每个项目一个线程的方法进行调度,而这种设计在我看来就是糟糕的。 - Len Holgate

2

我最近设置了cc .net。这是一个很棒的应用程序,但需要一些耐心。您将经常在记事本中编辑配置文件 :)

它已经存在一段时间了,因此得到了良好的支持,通常可以找到已经完成您想要完成的工作的人。Web界面也是.net的,这对我们来说是一个加分项,因为我们是微软公司。

我没有使用过TeamCity,但我听到过很多推荐,并且它看起来很漂亮。


2
我曾经在之前的公司在Linux上设置和运行CruiseControl(Java版本)。像大多数人建议的那样,这并不是最简单的事情。您需要了解其框架以制定可行/可管理的配置。然而,一旦您通过了这个障碍,我觉得CruiseControl非常灵活,可以让您做不同类型的事情以适应不同的场景。
此外,除了CruiseControl文档之外,它的wiki页面也有一些有用的信息。
我没有直接使用TeamCity的经验。虽然它的预测试提交功能看起来很有趣。
您可能还需要看看Atlassian的Bamboo这个CC工具。它要容易得多,并且界面更好。尽管它不像CruiseControl提供的那么灵活。

1

1
我在设置CI系统时多次研究了Cruise。它并不比CC.NET简单多少。它在构建和部署流程方面有其优势,但作为CI工具,我认为TeamCity更加有能力。 - haqwin
如果你要购买Cruise/Go,那么你也可以免费获得TeamCity。 - Niall Connaughton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接