我正在寻找为基于Qt的C ++项目实现构建服务器。服务器需要从Subversion检出必要的代码/资产,构建可执行文件,组装安装项目的工件,以及构建安装媒体文件。目标平台和(粗略)工具链是:
因此,至少有4个构建代理(如果32位和64位不能在同一个盒子上完成,可能更多)和7个配置。开源项目是首选,但这不是绝对的要求。
我看到的大多数工具似乎都适用于Java(Jenkins,CruiseControl等)或.Net(CruiseControl.net等)。这些工具可以与C ++工具链一起使用,还是我会经常使用打架系统?你过去使用过的任何东西都适用于Qt / C ++吗?
答案 0 :(得分:13)
我使用Jenkins来构建和打包许多基于qmake,cmake和makefile的C ++项目。
cmake,qmake和msbuild有plugins,但也可以运行任何命令行脚本。
我使用Jenkins进行打包没有任何问题,因为它只是项目中的另一个命令行步骤。
有很好的插件可以监控编译器生成的warnings/errors的数量(我通常使用GCC)。
它还具有矩阵构建,允许您使用编译器标志,预处理器变量,平台等的不同组合多次构建项目。我设置的一个项目是在两个平台上具有5个布尔预处理器标志的矩阵构建,然后做2 ^ 6 = 64次构建。这些可能需要一些设置才能正确。
答案 1 :(得分:4)
您可以在这里阅读一个简单的例子:
Continuous Integration Server - Hudson
我认为Hudson,jenkins和builbot值得一试。浪费一两天评估并尝试快速示例将帮助您自信地选择。
答案 2 :(得分:3)
我看到的大多数工具似乎都适用于Java(Jenkins,CruiseControl等)或.Net(CruiseControl.net等)。这些工具可以与C ++工具链一起使用,还是我会经常使用打架系统?你过去使用过的任何东西都适用于Qt / C ++吗?
任何具有合理能力的CI系统都会有一个允许您执行构建命令所需程序的文件。
以下是我要考虑的内容:
我使用CruiseControl完成了上述操作,大多数事情都非常简单。我在make或qmake中编写了所有内容,并简单地调用了我需要执行的命令。对于单元测试和代码覆盖集成,我将内容输出到XML并将其转换为CruiseControl支持的内容。
我的建议,看看推荐的CI系统,并根据上述标准进行检查。
答案 3 :(得分:2)
我正在使用buildbot。我已经使用它4年了,我对它感到非常满意。
它是一个用python编写的应用程序,它运行在服务器上,可以管理各种操作系统上的多个客户端。我目前正在使用Windows XP,Windows 7,Debian,Ubuntu和CentOS构建奴隶。我的项目是C ++,其中一个(最终用户GUI)是用Python制作的。但是我们还集成了其他框架,用于GUI以外的其他功能。
buildbot的真正优点在于它可以通过在从属服务器上运行命令行来实现。有了这个,你可以做任何你想做的事。甚至在Windows系统上使用Visual Studio进行编译!通过这些命令行,您可以将所有输出集中在服务器上,并且可以访问。
您也可以在此site上找到引用其中许多内容的替代方案。 免责声明:3年前我看过它,我不知道它是否仍然准确。
答案 4 :(得分:1)
哈德森或詹金斯非常好。
答案 5 :(得分:1)