哪种持续集成工具最适合 C++ 项目? [关闭]

Posted

技术标签:

【中文标题】哪种持续集成工具最适合 C++ 项目? [关闭]【英文标题】:What continuous integration tool is best for a C++ project? [closed] 【发布时间】:2008-09-28 09:55:31 【问题描述】:

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

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

【问题讨论】:

这个问题is currently being discussed on meta. 【参考方案1】:

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

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

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

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

如果您只需要启动每日构建并且由 cron 启动的简单脚本就足以满足您的需求,那么请务必这样做。但是,CI 的优点之一是您可以在每次签入后获得构建状态报告。为此编写脚本需要更多的工作,而 CruiseControl 已经做到了。

【讨论】:

【参考方案2】:

我们将 Hudson 用于 CI,SonarQube 用于代码指标。它们是集成的,而且 Hudson 有一些 cronjob 无法击败的插件。

CI Game 是一个很棒的插件,它会记录谁破坏了构建以及谁在不破坏构建的情况下提交。 Hudson 有插件可以使用 VMWare、Selenium、SVN、CSV、Git。它具有 RSS 联合功能,可以帮助您将其他所有内容自动化。

哈德森很棒……

【讨论】:

我会为 Hudson 给你一个 +1,它比 CC 更漂亮,也更容易配置。功能几乎相同。【参考方案3】:

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

【讨论】:

【参考方案4】:

我已经成功地将Buildbot 用于Spring RTS engine 项目。

【讨论】:

【参考方案5】:

你也可以试试JetBrains' TeamCity。这是一个商业产品,但它提供了最多 20 个构建配置的免费许可。

【讨论】:

TeamCity 当前绑定到构建配置的数量,而不是开发者帐户。【参考方案6】:

持续集成 (CI) 工具的一个不错的功能是每次将某些内容签入源代码控制存储库时都会触发构建。

如果这不是您需要的,那么您最好使用 Windows 任务调度程序或 cron 作业。

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

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

【讨论】:

以上是关于哪种持续集成工具最适合 C++ 项目? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

哪种数据类型最适合 c++ 中节俭通信中的日期时间?

Jenkins部署git+python项目实现持续集成

Jenkins介绍

用 jenkins 来提高部署测试的效率

我应该坚持使用哪种语言[关闭]

DevOps-2:持续集成工具Jenkins构建.Net项目