CruiseControl [.Net]与TeamCity进行持续集成?


117

我想根据实际经验,问您认为哪种自动化构建环境更好。我打算进行一些.Net和Java开发,因此我想拥有一个同时支持这两个平台的工具。

我一直在阅读并找到关于CruiseControl.NET(用于stackoverflow开发)以及TeamCity的支持,该支持基于不同OS平台和基于不同编程语言的构建代理。因此,如果您在这两个方面都有实践经验,那么您更喜欢哪一个,为什么呢?

目前,我最感兴趣的是该工具的易用性和管理性,更不用说CC是开源的了,而在您有大量项目要运行的时候,TC就需要获得许可(因为少量项目需要它)。

另外,如果还有其他工具可以满足上述要求,并且您认为值得推荐-请在讨论中随意添加。

Answers:


111

自从产生了Cruise Control(Java版本)的工具以来,我就一直在使用Continuous Integration工具并一直在使用它。我曾经尝试过几乎所有它们。我从没有比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 2009年

2
@balexandre-我发现团队城市文档非常好。@boj的回答者提供了指向此处投射
麦克

由于CCNet的形象,我一直对CI感到害怕,上周我尝试了TeamCity 6.5,这绝对是一件乐事。没有触摸单个xml /配置文件。
kay.one 2011年

1
如果您当前正在使用CC.Net,并且想迁移到Team City,这会很痛苦吗?TC如何产生MSI文件?
2013年

@Wes,我不知道这是否仍然与您相关,但是我们在CC.Net中运行着20多个项目,但是最近我为已有的一些Android项目实现了TeamCity。到目前为止,最大的痛苦是学习Ant,但是如果将项目放在CC.Net中,那是我必须要做的。如果我可以说服管理层为我们所需的额外构建配置付费(一定程度上是免费的),我会很高兴地将所有项目移入TeamCity,这主要是由于配置的原因,这在TeamCity中是一件轻而易举的事,而在CC中是XML的泥潭。净。
约翰·约翰逊2014年

33

我/我是CC.NET的忠实拥护者。目前,我们在CruiseControl中有5个项目,效果很好。用手编写配置文件可能会很痛苦,但是可以。

但是

科纳:持续集成和更好的单元测试截屏(第1/3左右的TeamCity)我会检查的TeamCity了。我喜欢集成的单元测试仪表板和配置界面。

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

ps:我希望网络上也有有价值的CC.NET视频。


15

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

我目前在一个项目上使用TeamCity,对此我通常感到很满意,但是它生成的许多图形并不是特别有用,并且它的配置比Hudson更复杂。

也就是说,TeamCity功能强大,可以免费使用,并且具有一项杀手级功能:远程运行。您可以直接从IDEA或Eclipse中“预先提交”您的签入,在TeamCity服务器上运行一个或多个构建配置,并且仅在构建成功(例如,编译和所有测试通过)后才提交更改。

鉴于您可以在几个小时内使TeamCity和Hudson都启动并运行,因此值得一并抓住它们并与您想到的任何其他产品(例如CruiseControl)并排运行。如果您不能快速站起CI服务器来进行并排比较,那么至少您有一个易于安装和/或配置的数据点。


6
哈德森+1。另请参阅:使用Hudson作为.NET构建工具:stackoverflow.com/questions/616149/…;CruiseControl的VS哈德森:stackoverflow.com/questions/604385/...
Jonik

12

我已经成功地将它们用于不同的项目。从设置和管理的角度来看,Team City更加容易处理。您不必像使用CC一样随意使用.config文件,安装起来很容易。由于您没有很多项目,因此建议您在CC之前使用Team City,直到您了解Team City的费用为$$。


12

我已经使用CC.net和TeamCity。我的任务是为我的组织(5个开发人员)设置和安装TeamCity。我们的组织使用了一些不常见的做法和工具(至少对于我们这样规模的组织而言),例如用于源代码控制的Perforce和在异构操作系统上运行的多个构建代理,这引起了一些初始设置方面的麻烦。但是,通过电子邮件获得的支持绝对是一切设置中的佼佼者。我实际上在几分钟内就收到了我愚蠢问题的答案。

该界面直观,反应灵敏,并且功能丰富。该产品感觉非常昂贵。配置很容易,并且Web界面足够智能,可以在不重新启动代理或服务器服务甚至刷新页面的情况下进行自我更新。

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

我强烈向确实需要持续集成服务器或任何构建服务器的任何人推荐TeamCity。


Perforce是不受欢迎的工具吗?对于任何规模的团队,Perforce都是理想的选择。我将其用于自己的房屋开发:)
sonstabo,

@sonstabo,我同意,大多数小型公司都使用SVN或GIT,而Perforce主要用于大型公司。我曾经使用过Perforce并喜欢它,但是当我使用它时,我在一家1,000家开发公司中。
塞缪尔·内夫

3

不想向您扔替代工具:-)

Hudson是一个很好的开源替代方案,我使用了CC和CC.net,我承认我确实认为它们是出色的工具。我正在考虑切换到hudson,因为它可以更轻松地进行设置和维护。

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


1
+1似乎没有人想到过.Net CI的Hudson。我曾经使用过Cruise Control,Team City和Bamboo,并发现Hudson在大多数预算是大问题的情况下是工作的最佳工具。
丹里格比(

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,因为我们是Microsoft商店,因此对我们来说是一个加分项。

我没有使用TeamCity,但是我听到了很多建议,而且看起来很漂亮。


2

在我之前的公司里,我有在Linux上设置和运行CruiseControl(Java版)的经验。就像大多数人建议的那样,这并不是最简单的设置。您需要了解其框架才能提出可行/可管理的配置。但是,一旦您克服了这种困难,我就会觉得CruiseControl非常灵活,可以让您做各种事情来适应不同的情况。

此外,CruiseControl文档及其Wiki页面还提供了一些有用的信息。

我没有TeamCity的直接经验。尽管它的测试前提交功能看起来很有趣。

您可能会看到的其他CC工具是Atlassian的Bamboo。设置起来容易得多,界面也更好。但是,它不像CruiseControl所提供的那样灵活。


1

您可能要考虑的第三个选项:Thoughtworks的Cruise。它基于CruiseControl构建,但是提供了更多功能,更易于设置等,这些都不免费(或开源)。

http://studios.thoughtworks.com/cruise-continuous-integration


1
设置为CI系统时,我已经研究过Cruise几次。它没有比CC.NET简单得多。它在构建和部署流程方面具有优势,但作为CI工具,TeamCity的能力更加
强大

如果您要支付Cruise / Go的费用,则还可以免费获得TeamCity。
尼尔·诺诺顿

0

在过去的一年半中,我一直在使用Teamcity,并且拥有丰富的经验。我已经集成了许多.Net和Java项目,并使用了诸如MSBuild,Maven等工具。我发现Teamcity的设置和使用非常简单。我也设法让CI在某些sql项目中运行,这是一场噩梦,而对于其他CI工具来说,情况可能更糟。
最近升级到Teamcity 8.0.6,这很轻松。此外,Teamcity提供了REST API,在某些情况下非常有用。如果您使用Powershell进行自动化构建,则GitHub上提供了许多Psake / Teamcity集成脚本

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.