高效精简GitLab CI/CD配置文件

使用两组关键字,避免冗余的、易出错的GitLab持续集成配置文件。

高效精简GitLab CI/CD配置文件
封面图像由Midjourney生成

实际项目中经常会出现一套项目代码需要适配多种编译环境的状况。例如跨平台移植要完成ARM64与X64的适配;支持不同的硬件加速器如CUDA、ASCEND NPU、Rockchip NPU等。时间一久,持续集成的配置文件变得越来越冗长,而且其中有众多的重复项目,修改起来非常繁琐且易出错。

这篇文章展示了如何使用GitLab提供的两个抽象功能来精简配置文件,让CI/CD配置更加清晰高效。


假设一个C++工程使用预定义变量 ENABLE_BOT 来控制代码的两种不同行为。在CI/CD配置文件中使用以下内容来实现条件性构建。

image: yinguobing/opencv:4.5.4-devel-ubuntu22.04

build option1:
  stage: build
  before_script:
    - mkdir _build
  script:
    - cmake -S . -B _build -DENABLE_BOT=ON
    - cmake --build _build
  artifacts:
    paths:
      - _build/efficient-gitlab-cicd

build option2:
  stage: build
  before_script:
    - mkdir _build
  script:
    - cmake -S . -B _build -DENABLE_BOT=OFF
    - cmake --build _build
  artifacts:
    paths:
      - _build/efficient-gitlab-cicd

.gitlab-ci.yaml

该配置文件可以正常工作,并且在每次提交后生成两项流水线任务如下图。

但是这份配置文件中存在明显的多处重复项目。优化的第一步,就是把这些完全相同的项目提取出来。