Qt的连续构建系统

时间:2012-03-28 09:57:09

标签: c++ qt build continuous-integration

我是Qt / C ++开发人员。我想建立一个持续集成环境,在提交源代码之后,它会触发一个构建过程,为我正在使用的3个平台构建代码:

  • 的Linux
  • OS X
  • 的Win32

如果可能,我该如何设置此类环境。欢迎任何提示或链接。 我已经阅读了关于詹金斯的内容,但我找不到任何好的教程。

5 个答案:

答案 0 :(得分:4)

我也建议Jenkins有几个原因:

  • 它将在您列出的所有平台上运行。
  • 可以将其配置为在更新存储库时启动构建(提示:将作业配置为“轮询SCM”,您不必使用SCM工具来让它告诉Jenkins开始构建)。
  • 它为单元测试提供了很好的支持(主要是通过插件)。 [你的项目正在进行单元测试,对吗?]
  • 价格合适

更大的问题是AFAIK,Qt并没有真正对其他平台进行交叉编译。使用Jenkins(和相应的插件),您应该能够解决这个问题。

快速想到的一种方法是在每个平台上都有一个Jenkins实例。每个实例都负责为自己的平台构建版本。在构建结束时,创建的工件都被放入一个共同的共享位置。

答案 1 :(得分:2)

我想到了两个解决方案:

<强> BuildBot

BuildBot是一个用Python编写的高度可定制的持续集成系统。主组件提供了一个很好的基于Web的GUI来监视和触发构建; slave组件放在目标机器上(通常是虚拟机,但它们可能是其中一个开发人员的Mac笔记本电脑)。 Docs足以构建一个基本系统,定制可能有点棘手(至少对我而言)。使用VC系统提供的提交/推送挂钩,您可以轻松激活主服务器并跨从服务器触发构建。它还支持增量构建(如果项目很大,则必须支持)。

<强> CDASH

由CMake的作者开发,CDash是一个网络应用程序,收集来自整个网络的构建,不完全是你要求的,但我认为值得一试。非常强大,如果你有一个开发人员团队可以在他们的机器上连续提交构建结果到服务器(如果你使用CMake它几乎是透明的)。你不能像Buildbot那样从服务器触发构建,但你可以设置一堆带有cron的VM来检查更改,以防执行构建并将结果发送到CDash

答案 2 :(得分:2)

Jenkins通过所有主要源代码控制系统的插件支持此功能。如果您认真考虑使用Jenkins(我强烈推荐),请考虑购买John Ferguson Smart's Jenkins: The Definitive Guide

答案 3 :(得分:0)

当然有可能。大多数版本控制系统都能够在服务器端执行自定义脚本。他们中的一些(例如git)具有在本地实现相同的钩子。看看git's post-commit hook

您只需要创建一个触发跨平台构建的脚本。

答案 4 :(得分:0)

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

需要记住的是跨平台进行完整构建需要多长时间以及该间隔内的典型签入次数。如果您拥有合理规模的团队或有限的构建服务器资源,您可能会发现批处理签入是进行持续集成构建的更好方法。否则你的构建系统很快就会试图追赶。

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