Mercurial/Kiln + MSBuild + MSTest的持续集成建议

19
我们的源代码存储在Kiln/Mercurial仓库中;我们使用MSBuild构建产品,使用MSTest(Visual Studio Unit Tests)运行单元测试。
有哪些解决方案可用于实现持续集成机器(即构建机器)?
要求如下:
  • 必要时应触发构建(即我们关注的存储库中的代码已更改)
  • 在实际构建之前,必须从我们正在构建的存储库中获取最新版本的源代码
  • 构建必须构建整个产品
  • 构建必须构建所有单元测试
  • 构建必须执行所有单元测试
  • 在构建完成后必须发送成功/失败摘要;这必须包括构建本身的信息以及哪些单元测试失败和哪些单元测试成功的信息。
  • 摘要必须包含此生成中包含的变更集,这些变更集尚未包含在前一个成功的生成中
  • 该系统必须可配置,以便可以从多个分支(/存储库)进行构建。
理想情况下,此系统将在单个框上运行(我们的产品并不那么大),而无需任何服务器组件。
目前有哪些解决方案?它们的优缺点是什么?从上面的列表中,可以完成哪些工作,哪些工作无法完成?
谢谢。
4个回答

7

TeamCity来自JetBrains,ReSharp的制造商,可以完成所有这些。您需要为“构建产品”具体含义进行配置,但是您可以使用它配置您指定的所有内容。

该软件可以向您发出构建失败的警报,甚至可以仅向负责检查代码是否破坏构建的人发出警报。它甚至配备了方便的网页,您可以查看您自己的更改,它们已经成功通过了哪些构建,哪些正在等待以及哪些正在执行。

由于它是分布式产品,因此您可以随着组织和产品的增长而扩展它。如果某个时刻您发现自己等待构建完成时间太长,因为有很多构建正在排队等待,您可以添加更多的构建代理。构建代理基本上是您在其他机器上安装的单独客户端程序,用于执行实际的构建配置。

它有两种版本,专业版和企业版。专业版是免费的,可以包含最多20个构建配置,20个用户和3个构建代理。企业版具有无限用户和构建配置,并且您还可以使用基于LDAP的安全性(考虑到域验证的用户)。企业版还有一些其他的奖励。如果您需要超过最初的3个构建代理,则还可以购买更多的构建代理许可证。

现在,如果“没有服务器组件”意味着您不希望它像Web服务器一样运行,那么您很难找到能够响应您提交的东西。

然而,如果您的意思是您不想安装服务器操作系统,那么TeamCity也可以在工作站版本的Windows上运行。这并不是说您不应该考虑为其设置一个适当的服务器,但如果这是您所需的,则它将在工作站上运行。


我放弃了CruiseControl改用TeamCity,我的整个团队都非常满意这个变化。我们使用MSBuild脚本进行项目开发和NUnit测试。我们主要开发C++和C#应用程序。 - T33C

5
我们的产品BuildMaster本身就具备您列出的所有功能,并且有一个免费版本(仅限 5 个用户或更少),但是该版本存在一些限制,例如:只能集成有限数量的问题跟踪提供商,不包括数据库变更脚本打包工具等。

2
您所描述的是CI工具的基础知识,因此每个CI工具都应该可以胜任。
我使用的是Cruise Control.NET,但它在与Mercurial一起使用时存在错误,并且乍一看不太直观。尽管如此,我仍然对它感到满意。我想到的其他工具有HudsonTeam Build(来自TFS)TeamCity

我还没有尝试过其他工具,但您可以在这里看到它们的优缺点:

编辑:我忘记提到Hudson和Cruise Control.net是开源项目,您可以轻松编写插件和补丁进行安装。
编辑²:Mercurial的bug似乎已经在ccnet的即将推出的1.6版本中得到了修复(本周提交到主干)。

0

总有BuildBot这个我喜欢的(并且已经贡献了一些代码)。它相当容易在任何操作系统上设置和运行,并且对于像你所说的简单任务来说非常灵活,如果需要,也可以非常灵活。

你可能会发现缺少电池包括日志刮板和/或报告生成器,这是其他更商业化的CI服务器所具备的,特别是针对企业框架。

它的扩展性也很好,Mozilla和Chromium等公司都在使用它。


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