C++的持续集成有哪些工具链?

32

.NET、Java和其他语言的持续集成工具链相对而言比较清晰,但是C++市场似乎有很多不同的选择。

在这里,我指的CI“工具链”是指构建脚本、自动化测试、编码规范检查等方面的工具。

C++团队正在使用什么样的CI工具链呢?


3
“为什么我们的工具链与Java/.NET程序员相比如此糟糕??!?” 这是一个完全不同的问题……” - quark
投票关闭,因为不属于主题。 - Ciro Santilli OurBigBook.com
6个回答

7
我们使用Parabuild实现了C++跨平台持续集成基础设施。

http://www.viewtier.com/products/parabuild/screenshots.htm

我们能够将各种Win/Mac/Linux QA工具与之集成,而且安装和维护非常容易:在每个平台上只需要一次点击即可完成安装,并且Web界面非常方便。
在评估几个持续集成服务器时,主要问题是它们都偏向于Java:另一方面,Parabuild非常适合C++跨平台开发和QA工作流程。

你在Linux上使用什么构建系统?我们找不到任何可以进行离线构建并且希望易于维护和与Eclipse集成的东西。 - davka
1
我们使用cmake作为主要的构建系统:您可以在http://www.cmake.org/找到更多信息。它是跨平台的,也可以生成Eclipse项目,如http://www.vtk.org/Wiki/CMake:Eclipse_UNIX_Tutorial#CMake_with_Eclipse所述。 - stefano perticoni
2
更新:我们目前正在使用Jenkins http://www.jenkins-ci.org(之前是Hudson)。 Jenkins在分布式构建方面的一个有趣的能力是它可以远程安装自己到从节点上进行构建。这非常方便,因为您只需要在主构建节点上安装和维护一个Jenkins实例即可扩展基础架构。 - stefano perticoni

7

另一个选择可能是buildbot

它是用Python编写的,但不仅适用于Python应用程序。它可以执行任何脚本来完成构建过程。如果你看一下他们的成功案例,似乎有各种各样的语言。


2

Visual Build Professional是我最喜欢的工具,可以将其它工具整合在一起使用。当然,它只支持Windows操作系统,但可以与各种Visual Studio版本、测试工具、源代码控制工具、问题跟踪工具等集成使用。虽然这不是完整的堆栈,但至少是一个好的开始。


1

你好,

我曾经在一家承包公司工作时遇到了这个问题。

有一个人编写了工具,主要是shell脚本,用于:

  1. 每小时检查当前代码库并进行构建以检查是否出现错误,以及
  2. 检查最新的良好构建并进行完整构建和运行约8,000个回归测试。

我们无法找到任何商业可用的工具来完成这项任务,所以Charlie编写了bash shell脚本,并在HP-UX上运行。

谢谢,
Rob


0

我们使用 scons 作为由中央构建服务器运行的持续集成工具。一些项目已迁移到 buildbot

我现在正在学习 rake,并考虑在 这篇博客 中调查的解决方案。Fowler 在他的 持续集成 文章中提到 ThoughtWorks 偶尔会使用 rake 进行构建脚本。


0

就像在C++中似乎每个任务一样,我只是勉强支撑着持续集成。我的设置始于Eclipse。我将其设置为为我的项目生成make文件。我有ant脚本通过在适当的makefile上运行'make all'或'make clean'来执行整体构建任务。这些ant脚本是我的项目的一部分,当我添加新的构建配置或新的系统部件时,我必须更新它们。不过也没那么糟糕。

我使用CruiseControl来实际运行构建。每个项目(只有一个)都有自己的ant脚本,执行特定于构建的任务(复制工件,处理结果),调用项目ant脚本进行构建。

我必须使用cppunit进行测试,并使用我在某个地方找到的xslt文件处理结果。我还在每个构建上有错误的svn修订标签,因为我找不到合适的svn标记器。我能找到的只是半成品的几年前的代码和人们争论其他人做错了。

在我看来,CC是一个垂死的系统,但我没有找到更好的C++解决方案。再说,我也觉得C++是一种垂死的语言,所以也许问题比这更大。


1
C++并没有死亡,但它的大部分优势只在利基市场中表现出色。 - Tom
此外,如果你有些时间可以消磨的话,我建议看看CxxTest。该项目曾经一度停滞不前,但我相信它已被新的维护者接手。默认情况下,它生成与GCC的“file:line: message”或ICC/MSVC的“file(line): message”兼容的输出。很容易为其创建一个符合jUnit标准的XML输出。 - Tom

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