使用 GitLab CI/CD 创建 Windows C++ 项目的 CI 配置例子

概述:

为一个Windows C++ 项目设置连续集成(CI)和持续部署(CD)流程,使用的是 GitLab CI/CD。这一教程适用于使用 Microsoft Visual Studio 2022 项目。

环境:

  1. GitLab服务器部署在一台Linux服务器
  2. 一台Windows服务器作为Windows环境下跑gitlab runner的机器

配置 GitLab Runner

安装 GitLab Runner

首先,需要在 Windows 服务器上安装 GitLab Runner。可以从 GitLab 官方网站 下载 Windows 版本的 GitLab Runner 安装程序。安装完成后,需要注册 Runner 到你的 GitLab 实例。

注册 GitLab Runner

注册 Runner 是将 Runner 连接到特定 GitLab 实例的过程。执行以下步骤来注册 Runner:

  1. 打开你的命令行界面。
  2. 执行 gitlab-runner register 命令。
  3. 提供 GitLab 实例的 URL。
  4. 输入为注册 Runner 生成的 token。这个 token 可以在项目的 Settings > CI/CD > Runners 部分找到。
  5. 选择执行器类型,如 shell(对于 Windows 环境)。
  6. 完成后,Runner 将注册到 GitLab,并准备接收作业。

配置 .gitlab-ci.yml 使用 Runner

在项目根目录创建 .gitlab-ci.yml 文件,我这里的内容如下:

stages:
  - build  # 定义构建阶段

variables:  # 定义全局环境变量
  VS_PATH: "D:/software/Microsoft Visual Studio/2022/Community/Common7/Tools/VsDevCmd.bat"  # Visual Studio 的命令行工具路径
  BUILD_DIR: build  # 构建输出目录
  INSTALL_DIR: bin  # 安装目录
  OpenCV_DIR: "D:/software/opencv/build/x64/vc15/lib"  # OpenCV 库路径
  OPENSSL_ROOT_DIR: "C:/Program Files/OpenSSL-Win64"  # OpenSSL 的根目录

build-job:
  stage: build  # 指定属于什么阶段
  tags:
    - windows  # 指定运行这个作业的 GitLab Runner 标签
  script:  # 定义构建脚本
    - echo "Compiling the code..."  # 打印编译开始的信息
    - powershell -Command '& $env:VS_PATH'  # 运行 Visual Studio 的命令行环境
    - powershell -Command 'cmake -S . -B $env:BUILD_DIR -G "Visual Studio 17 2022" -A x64 
 -DOpenCV_DIR:PATH=$env:OpenCV_DIR -DOPENSSL_ROOT_DIR:PATH=$env:OPENSSL_ROOT_DIR'  # 配置项目
    - powershell -Command 'cmake --build $env:BUILD_DIR --config Release -- /m'  # 构建项目
    - powershell -Command 'cmake --install $env:BUILD_DIR --prefix $env:INSTALL_DIR'  # 安装构建结果到指定目录
    - echo "Compile complete."  # 编译完成提示信息
    - powershell -Command 'Compress-Archive -Path $env:INSTALL_DIR/* -DestinationPath $env:INSTALL_DIR/output.zip' # 把安装软件打包成 ZIP 压缩文件

  artifacts:
    when: on_success  # 仅在成功时保存构建产物
    paths:
      - $env:INSTALL_DIR/output.zip  # 指定构建产物的保存路径
  only:
    - main  # 仅在 main 分支上执行此作业

详细解释:

- powershell -Command '& $env:VS_PATH'  # 运行 Visual Studio 的命令行环境

这里使用visual studio2022作为编译环境,因此首先要安装visual studio2022,使用VsDevCmd.bat配置命令行下的编译环境;

- powershell -Command 'cmake -S . -B $env:BUILD_DIR -G "Visual Studio 17 2022" -A x64 
 -DOpenCV_DIR:PATH=$env:OpenCV_DIR -DOPENSSL_ROOT_DIR:PATH=$env:OPENSSL_ROOT_DIR'

使用Cmake配置项目的具体命令,其中参数 -S 用于指定源代码的位置,这里的点(.)代表当前目录,即 GitLab Runner 执行此命令时所在的目录。参数 -B 指定构建文件应生成到哪个目录。-G "Visual Studio 17 2022"指定了 CMake 应该使用哪个生成器来创建项目文件。参数 -A 用来指定目标架构。

- powershell -Command 'cmake --install $env:BUILD_DIR --prefix $env:INSTALL_DIR'

这部分命令是 CMake 的安装命令。--prefix 是一个 CMake 安装选项,用来指定安装目录的前缀。

- powershell -Command 'Compress-Archive -Path $env:INSTALL_DIR/* -DestinationPath $env:INSTALL_DIR/outbut.zip'

这部分命令中 Compress-Archive 是 PowerShell 的一个内置 cmdlet,用于创建压缩存档。

artifacts:
    when: on_success  # 仅在成功时保存构建产物
    paths:
      - $env:INSTALL_DIR/output.zip  # 指定构建产物的保存路径
  only:
    - main  # 仅在 main 分支上执行此作业

最后artifacts这个关键字声明接下来的设置都是关于构建产物的配置。on_success 意味着只有当该作业成功完成(即没有错误或失败)时,才会保存指定的 artifacts.

paths意味着 output.zip位于由 INSTALL_DIR 环境变量指定的目录中,这个文件将在作业成功后被保存和归档。only 关键字表示这个作业配置只在针对 main 分支的推送或合并请求时运行。

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值