Qt的持续构建系统

10

我是一名Qt/C++开发人员。我希望建立一个持续集成环境,使得在提交源代码后触发构建过程,为我使用的三个平台构建代码:

  • Linux
  • OS X
  • Win32

如果可能的话,我该如何设置这样的环境。任何提示或链接都可以。

我已经查询了Jenkins,但我找不到任何好的教程。


也许你提交源代码的 SVN 系统有一个 API 可以用来捕获这样的事件(比如提交)? - badmaash
2
这不是一个编程问题。它可能属于http://programmers.stackexchange.com/。 - Gray
5个回答

4
我建议使用Jenkins有以下几个原因:
  • 它可以在您列出的所有平台上运行。
  • 可以配置为在更新存储库时启动构建(提示:将作业配置为“轮询SCM”,您无需操作SCM工具即可让Jenkins开始构建)。
  • 它提供良好的支持(主要通过插件)用于单元测试。[您的项目正在进行单元测试,对吧?]
  • 价格合适。
更大的问题是,据我所知,Qt并不真正擅长为其他平台进行交叉编译。但是,通过使用Jenkins(和适当的插件),您应该能够解决这个问题。
一种快速想到的方法是在每个平台上都有一个Jenkins实例。 每个实例负责为其自己的平台构建版本。 在构建结束时,所有创建的工件都放置在一个共享位置。

5
每个平台都有一个Jenkins实例 - 在每个平台上使用Jenkins从机会更好,这样您就有一个中央控制点,不必更新每个实例,构件存储在主节点上等等。 - malenkiy_scot

2
我想到了两个解决方案: BuildBot BuildBot是一个高度可定制的Python连续集成系统。主组件提供了一个不错的基于Web的GUI来监视和触发构建;从组件放置在目标机器上(通常是虚拟机,但它们可以是开发人员的Mac笔记本电脑)。文档足以构建基本系统,但自定义可能有点棘手(至少对我来说是这样)。使用版本控制系统提供的提交/推送挂钩,您可以轻松激活主服务器并在从服务器上触发构建。它还支持增量构建(如果您的项目很大,则必须)。 CDash 由CMake的作者开发的CDash是一个Web应用程序,收集来自网络的构建结果,虽然不完全符合您的要求,但我认为值得一试。如果您有一组开发人员可以将其机器上的构建结果连续提交到服务器上(如果您使用CMake,则几乎是透明的),则该工具非常强大。您无法像Buildbot那样从服务器触发构建,但是您可以设置一堆VM,其中cron检查更改并在需要时执行构建,并将结果发送到CDash。

你是指BuildBot吗? 我需要在Unix和Mac上使用g++构建我的项目,但我想在Windows下使用MSVC2008编译它。BuildBot如何处理非Unix系统? 我已经准备好了一个虚拟机,在Windows下进行构建,但这种方法容易出错,也不太自动化... - linello
我使用MinGW工具链在Windows下使用qmake进行构建,但我们计划迁移到可以处理VS项目的CMake。在这两种情况下,BuildBot从机都可以执行构建。 - Masci
我们使用Buildbot CI进行跨平台Qt开发(Mac,Windows,Linux),它运行良好(支持SVN和git存储库)。不过,对于构建不同的git分支的支持还有待改进。 - Frank Osterfeld

2

0
当然可以。大多数版本控制系统都能够在服务器端执行自定义脚本。其中一些(例如git)具有本地实现相同功能的钩子。请查看git的提交后钩子
您所需要做的就是创建一个触发跨平台构建的脚本。

0

大多数版本控制系统允许使用后提交挂钩来启动构建等事件。或者,可以配置构建系统定期轮询源代码控制存储库并管理自己的构建调度(这是我们使用Jenkins的方式)。

需要考虑的一点是在跨平台上完成完整构建所需的时间以及该间隔内的典型签入次数。如果您有一个相当大的团队或有限的构建服务器资源,则可能会发现批处理签入是进行持续集成构建的更好方法。否则,您的构建系统可能很快就会试图赶上。

至于是否可以在所有目标平台上构建,这取决于您的工具链。


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