繁体   English   中英

Qt的连续构建系统

[英]Continuous build system for Qt

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

  • Linux的
  • OS X.
  • Win32的

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

我还建议Jenkins有几个原因:

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

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

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

我想到了两个解决方案:

BuildBot

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

CDASH

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM