【发布时间】:2021-02-15 16:28:53
【问题描述】:
背景
我有一个用于我一直在开发的 C++ 库的 CI 管道。到目前为止,我可以将此库分发到 Linux 和 Windows 系统。由于我使用 GitLab 构建、测试和打包我的 lib,我希望我的 Windows 构建运行得更快,但我不知道如何做到这一点。
目前,我在 Windows 构建中使用以下脚本:
.windows_template:
tags:
- windows
before_script:
- choco install cmake.install -y --installargs '"ADD_CMAKE_TO_PATH=System"'
- choco install python --pre -y
- choco install git -y
- $env:ChocolateyInstall = Convert-Path "$((Get-Command choco).Path)\..\.."; Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"; refreshenv
- python -m pip install --upgrade pip
- pip install conan monotonic
问题
使用上述脚本进行的任何构建最多可能需要 10 分钟;更糟糕的是:我有两个阶段,每个阶段都花费相同的时间。这意味着我的整个 CI 管道将需要 20 分钟 才能完成,因为 Windows 构建速度很慢。
理想的解决方案
before_script 中的所有内容都可以缓存或存储为图像。我只需要一些关于如何正确操作的提示。
附加信息
我使用以下工具进行构建:
- CMake:支持我的构建过程;
- Python3:测试和构建包;
- Conan(需要 Python3):支持创建具有多种功能的包并分发它们;
-
Git:在 CMake 配置步骤中下载 Googletest这已在食谱中提供 - 我可能会在我的before_script中删除这个额外的安装步骤; - Googletest(需要 Python3):测试库;
-
Visual Studio DEV 工具:编译库这已经在食谱中。
【问题讨论】:
-
或者,您可以使用预先安装好的 Docker 映像,并能够在任何地方重现相同的构建环境。 Conan Docker Tools 提供了Docker recipe,但由于 Visual Studio 的分发许可限制,没有可用的 Docker 映像。您可以分叉该项目并更新您需要的内容。
-
@uilianries 我认为在 GitLab CI 上运行基于 Windows 的图像是不可能的。我认为唯一的选择是使用 Packer,如 documentation 中所述(老实说,我没有进一步尝试此选项)。他们的Docker images 文档也没有提到任何关于 Windows 容器的内容。如果可能的话,我可以考虑您的评论作为答案。
标签: c++ windows gitlab gitlab-ci conan