什么持续集成工具最适合C ++项目?

时间:2008-09-28 09:55:31

标签: c++ continuous-integration

Cruisecontrol和Hudson是两种流行的持续集成系统。虽然两个系统都能够很好地完成自动连续构建,但创建批处理或bash构建脚本似乎要容易得多,然后使用Windows调度程序或cron来安排构建。

C ++项目是否有更好的持续集成系统?或者只是使用脚本和调度程序更简单的方法?

6 个答案:

答案 0 :(得分:13)

我们一直在C ++项目中使用CruiseControl来表示CI。虽然它是我们唯一使用ant的东西,但CruiseControl的ant构建脚本只是启动我们的正常构建脚本,所以它非常简单,我们不需要在很长一段时间内更新它。因此,CrusieControl基于Java的事实对我们来说根本不是一个问题。

使用巡航控制之类的主要好处是

  • 显示构建状态的漂亮网页
  • 每次构建后或构建失败后的电子邮件
  • 提交源控制系统后自动构建
  • 用于监控构建状态的firefox插件
  • 显示任何构建错误的输出。
  • 显示自上次构建以来哪些文件已更改(有助于查看哪个开发者破坏了该文件)

当然你可以自己编写一个完成所有这些操作的脚本,但为什么这样做呢?从长远来看,设置CruiseControl(或类似的东西)的额外初始成本可能远低于维护和更新自定义CI构建脚本的成本。

如果您只需要启动每日构建,并且cron启动的简单脚本足以满足您的需求,那么请务必执行此操作。但是,CI的一个优点是每次签入后都会获得构建状态报告。编写脚本需要更多工作,而CruiseControl已经完成了。

答案 1 :(得分:11)

我们对CI使用Hudson,对代码指标使用SonarQube。它们是集成的,Hudson有一些插件,没有cronjob可以击败。

一个很棒的插件是CI游戏,它可以分析谁破坏了构建版本以及谁在不破坏它的情况下提交。 Hudson有插件可以使用VMWare,Selenium,SVN,CSV,Git。它有RSS联合,可以帮助您自动化更多其他内容。

哈德森很棒......

答案 2 :(得分:4)

我已成功使用Buildbot Spring RTS engine项目。

答案 3 :(得分:4)

我们一直在使用Dart Dashboard。它是开源的,但由KitWare驱动。他们已经将名称改为CDash,我认为这仍然有能力。我们正在进行多种测试,包括在调试和发布模式下跨10个不同平台进行夜间和持续集成,以及运行1000次应用程序测试并在那里报告结果。

答案 4 :(得分:2)

您也可以尝试JetBrains' TeamCity。它是一种商业产品,但它提供了多达20种构建配置的免费许可。

答案 5 :(得分:1)

持续集成(CI)工具的一个很好的功能是每次在源控件存储库中检查某些内容时都会触发构建。

如果那不是您需要的,那么您可能更适合使用Windows任务计划程序或cron作业。

此外,CI工具还带有(Web)仪表板和高级日志记录功能。

您的问题在我看来更“我为什么要使用CI工具”然后“我应该使用哪种CI工具”。如果批处理脚本满足您的需求,请使用它。 (重新)只有在不需要CI工具作为附加组件时,才能更轻松地创建构建环境。如果您想要源控件触发构建,仪表板,旧构建结果存储或其他日志记录,请使用CI工具并避免在批处理或shell脚本中开发所有此类功能。