我想问您,根据实际经验,您认为哪种自动化构建环境更好。我计划做一些.Net和Java开发,所以我希望有一个支持这两个平台的工具。
我一直在阅读并了解CruiseControl.NET,它用于stackoverflow开发,以及TeamCity,它支持在不同的操作系统平台上基于不同的编程语言构建代理。那么,如果你在这两方面都有一些实际经验,你更喜欢哪一个,为什么?
目前,我最感兴趣的是该工具的易用性和管理性,更不用说CC是开源的,当你有很多项目要运行时,TC需要获得许可(因为,我需要它来处理少量项目)。
此外,如果有其他工具符合上述要求,并且您认为值得推荐,请随时将其纳入讨论。
自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一直在进步,而且仍然很容易使用。
我曾经/我是CC.NET的忠实粉丝。我们目前在CruiseControl中有5个项目,效果很好。用手写配置文件可能很痛苦,但也没关系。
但是。
在Kona:Continuous Integration and Better Unit Testing(关于TeamCity的前三分之一)放映后,我也会查看TeamCity。我喜欢集成的单元测试面板和配置界面。
我认为每个人在选择CC.NET或TeamCity之前都应该观看此视频。
我希望网上也有一个有价值的CC.NET视频。
到目前为止,我最喜欢的CI服务器是Hudson。易于设置和维护,有很多漂亮的图表可以向开发人员和非开发人员显示趋势,而且是免费的。
我目前正在一个项目中使用TeamCity,我通常对此感到满意,但它生成的许多图并不是特别有用,而且它的配置比Hudson更复杂。
也就是说,TeamCity功能强大,可以免费使用,并且有一个杀手级的功能:远程运行。您可以直接从IDEA或Eclipse"预提交"您的签入,在TeamCity服务器上运行一个或多个构建配置,并且只有在构建成功(例如,编译并通过所有测试)时才提交更改。
考虑到你可以在几个小时内让TeamCity和Hudson都启动并运行,也许值得把它们和你能想到的任何其他东西(如CruiseControl)一起抓起来并排运行。如果您无法快速启动CI服务器进行并排比较,那么至少您有一个易于安装和/或配置的数据点。
我已经在不同的项目中成功地使用了它们。从设置和管理的角度来看,曼城队要容易得多。你不必像使用CC那样使用.config文件,安装也很简单。由于你没有很多项目,我建议团队城市而不是CC,直到你达到团队城市成本$$的地步。
我使用过CC.net和TeamCity。我的任务是为我的组织(5名开发人员)建立和安装TeamCity。我们的组织使用了一些不常见的做法和工具(至少对于我们这样规模的组织来说),例如用于源代码管理的Perforce和在异构操作系统上运行的多个构建代理,这导致了一些初始设置方面的麻烦。然而,通过电子邮件提供的支持在设置一切方面绝对是一流的。我在几分钟内就收到了我愚蠢问题的答案。
界面直观、响应迅速,功能丰富。这个产品感觉很贵。配置很简单,web界面足够智能,可以在不重新启动代理或服务器服务,甚至不刷新页面的情况下自行更新。
我觉得我们几乎使用了产品的每一个高级功能,到目前为止还没有发现任何错误。Ndepend集成,嵌套的NAnt脚本,Perforce版本标签,你能想到的,我们正在做。
我强烈推荐TeamCity给任何想要持续集成服务器或任何构建服务器的人。
不想向您抛出替代工具:-)
Hudson是一个很好的开源替代品,我使用过CC和CC.net,我承认我确实认为它们是很棒的工具。我正在考虑改用hudson,因为它看起来更容易设置和维护。
https://hudson.dev.java.net/
确保您决定的系统能够扩展到您需要处理的项目数量。。。
我使用CruiseControl。Net,但我不建议它用于构建大量项目。。。我有一个(可能有点奇怪)的安排,我有许多C++静态库,我将它们组成应用程序。每个库都依赖于其他库,应用程序会引入一组库并进行构建。每个lib都有一个测试套件。每个应用程序都有一个测试套件。我为5个编译器和(windows)平台的变体构建。
我发现的第一件事是CC.Net的项目触发器并不是你真正需要的,多触发器也不能很好地与项目触发器配合使用。项目触发器的工作方式(它们使用远程处理连接到存储项目的服务器(即使是由CC.Net的同一实例管理的项目),然后从该服务器中提取所有项目,并在列表中按顺序搜索您感兴趣的项目…)意味着它们的扩展性不好。一旦你超过了一定数量的项目,你就会发现CC.Net占用了你构建机器的大部分CPU。
当然,它是开源的,所以你可以修复它……而且,我相信它对少数不相互依赖的项目来说很好。
有关我遇到的问题和CC.Net的一些补丁的更多详细信息,请参阅此处http://www.lenholgate.com/archives/cat_ccnet.html
我最近安装了cc.net。这是一个很好的应用程序,但确实需要一点耐心。您将在记事本中编辑配置文件alot:)
它已经存在了一段时间,所以它得到了很好的支持,你通常可以找到一个以前做过你想做的事的人。网络界面也是.net,这对我们来说是一个优势,因为我们是一家微软商店。
我没有使用过TeamCity,但我听过很多关于它的推荐,它看起来很漂亮。
在上一家公司期间,我曾在Linux上设置和运行CruiseControl(Java版本)。就像大多数人所建议的那样,设置它并不是最琐碎的事情。您需要了解它的框架,以便提出可行/可管理的配置。然而,一旦你度过了难关,我觉得CruiseControl非常灵活,可以让你做不同的事情来适应不同的场景。
此外,CruiseControl文档,其wiki页面也有一些有用的信息。
我对TeamCity没有直接的经验。尽管它的测试前提交功能看起来很有趣。
你可能会看到的另一个CC工具是Atlassian的Bamboo。它更容易设置,界面也更好。尽管如此,它并不像CruiseControl提供的那样灵活。
您可能需要考虑的第三个选项:Thoughtworks的Cruise。它建立在CruiseControl上,但提供了更多的功能、更容易的设置等。不是免费的(或开源的)。
http://studios.thoughtworks.com/cruise-continuous-integration
在过去的一年半里,我一直在使用Teamcity,并且有着丰富的经验。我已经集成了许多.Net和Java项目,并使用了MSBuild、Maven等工具。我发现Teamcity的设置和使用非常简单。我还为一些sql项目运行了CI,这有点像噩梦,如果使用其他CI工具,情况可能会更糟
最近升级到Teamcity 8.0.6,这是无痛的。Teamcity还提供了一个REST API,它对某些场景非常有用。如果您正在使用powershell进行自动化构建,那么GitHub 上有许多Psake/Teamcity集成脚本