根据实际经验,我想问你哪个自动构建环境更好。我打算做一些.Net和一些Java开发,所以我想有一个支持这两个平台的工具。
我一直在阅读并发现了用于stackoverflow开发的CruiseControl.NET和TeamCity,它支持不同操作系统平台上的构建代理并基于不同的编程语言。所以,如果你对这两者都有一些实践经验,你更喜欢哪一个?为什么?
目前,我最感兴趣的是该工具的易用性和管理,更不用说CC是开源的,而且当你有很多项目要运行时,TC在某些时候需要获得许可(因为,我需要少量的项目。)
此外,如果有其他工具符合上述要求且您认为值得推荐 - 请随意将其纳入讨论。
答案 0 :(得分: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不断改进并且仍然易于使用。
答案 1 :(得分:33)
我/我是CC.NET的忠实粉丝。我们目前在CruiseControl中有5个项目,效果很好。用手写配置文件可能会很痛苦,但没关系。
但是
在Kona: Continuous Integration and Better Unit Testing截屏视频(关于TeamCity的前1/3)后,我也会检查TeamCity。我喜欢集成的单元测试仪表板和配置界面。
我认为每个人都应该在选择CC.NET或TeamCity之前观看此视频。
p.s:我希望网上也有一个有价值的CC.NET视频。
答案 2 :(得分:15)
到目前为止,我最喜欢的CI服务器是Hudson。易于设置和维护,许多漂亮的图表可以向开发人员和非开发人员展示趋势,并且免费。
我目前在一个项目中使用TeamCity,我对它很满意,但它生成的许多图形并不是特别有用,配置比Hudson更复杂。
也就是说,TeamCity功能强大,可以免费使用,并且有一个杀手功能:远程运行。您可以直接从IDEA或Eclipse“预先提交”您的检查,在TeamCity服务器上运行一个或多个构建配置,并且只有在构建成功时才提交更改(例如,编译和所有测试都通过)。
鉴于您可以在几个小时内启动并运行TeamCity和Hudson,可能值得抓住并同时运行它们以及您能想到的任何其他(例如CruiseControl)。如果你无法快速站起CI服务器进行并排比较,那么至少你有一个数据点,便于安装和/或配置。
答案 3 :(得分:12)
我在不同的项目上成功使用过它们。从设置和管理角度来看,Team City更容易处理。您不必像使用CC那样使用.config文件进行破解,并且设置轻而易举。由于你没有很多项目,我会推荐Team City而不是CC,直到你达到Team City的成本为止。
答案 4 :(得分:12)
我使用过CC.net和TeamCity。我的任务是为我的组织(5个开发人员)设置和安装TeamCity。我们的组织使用一些不常见的实践和工具(至少,对于我们规模的组织),例如Perforce用于源代码控制和在异构操作系统上运行的多个构建代理,这导致一些初始设置问题。但是,通过电子邮件提供的支持在设置所有内容方面绝对是一流的。我在几分钟内收到了我愚蠢问题的答案。
界面直观,反应灵敏,并且功能丰富。该产品感觉非常昂贵。配置很简单,Web界面足够智能,无需重新启动代理或服务器服务,甚至刷新页面,即可自行更新。
我觉得我们正在使用该产品的所有高级功能,并且到目前为止没有发现任何错误。 Ndepend集成,嵌套的NAnt脚本,Perforce版本标签,您可以命名,我们正在这样做。
我强烈推荐TeamCity给任何寻找持续集成服务器或任何构建服务器的人。
答案 5 :(得分:3)
不想向你投掷替代工具:-)
Hudson是一个很好的开源替代品,我使用过CC和CC.net,我承认我确实认为它们是很棒的工具。我正在考虑转向哈德森,因为它更易于设置和维护。
答案 6 :(得分:3)
确保您决定的系统按照您需要处理的项目数量进行扩展......
我使用的是CruiseControl.Net,但我不推荐它用于构建大量项目...我有一个(可能有点奇怪)的安排,我有许多C ++静态库,我将其组合成应用程序。每个库都依赖于其他库,应用程序会引入一组库和构建。每个lib都有一个测试套件。每个应用程序都有一个测试套件我为5个编译器和(windows)平台的变种构建。
我发现的第一件事是CC.Net的项目触发器并不是你所需要的,并且多触发器不能很好地与项目触发器配合使用。项目触发工作的方式(他们使用远程连接到存储项目的服务器(即使它是由CC.Net的同一实例管理的项目),然后从该服务器拉出所有项目并按顺序搜索列表寻找你感兴趣的项目......)意味着它们不能很好地扩展。一旦你超过一定数量的项目,你会发现CC.Net正在为你的构建机器占用大部分CPU。
当然,它是开源的,所以你可以解决它......而且,我确信这对于少数非相互依赖的项目来说很好。
有关我遇到的问题的详细信息以及CC.Net的一些补丁,请参阅此处 http://www.lenholgate.com/archives/cat_ccnet.html
答案 7 :(得分:2)
我最近设置了cc .net。这是一个很棒的应用程序,但确实需要一点耐心。您将在记事本中编辑配置文件很多:)
它已经有一段时间了,所以它得到很好的支持,你通常可以找到一个做过你想做的事情的人。网络界面也是.net,这对我们来说是一个加分,因为我们是微软的商店。
我没有使用过TeamCity,但是我听到了很多推荐,看起来很漂亮。
答案 8 :(得分:2)
我曾在上一家公司的Linux上设置和运行CruiseControl(Java版本)。像大多数人建议的那样,设置并不是最简单的事情。您需要了解其框架才能提出可行/可管理的配置。然而,一旦你通过了这个驼峰,我觉得CruiseControl足够灵活,允许你做不同的事情以适应不同的场景。
此外,CruiseControl文档,其wiki page也有一些有用的信息。
我没有TeamCity的直接经验。虽然它的预测试提交功能看起来很有趣。
您可以查看的其他CC工具是Atlassian的Bamboo。它设置起来要容易得多,界面也更好。但是,它没有CruiseControl提供的那么灵活。
答案 9 :(得分:1)
您可能需要考虑的第三个选项:Thoughtworks'Cruise。它建立在CruiseControl之上,但提供了更多功能,更容易设置等等。不是免费的(或开源)。
http://studios.thoughtworks.com/cruise-continuous-integration
答案 10 :(得分:0)