配置 GitLab CI 以仅在特定标签上运行测试

时间:2021-05-27 20:57:41

标签: gitlab gitlab-ci

对于托管在 GitLab 上的 Python 项目,我配置了如下所示的 CI 构建。对于每次推送,CI 构建都会运行测试套件、样式检查并构建文档。当分支合并到 master 时,CI 构建会执行一个额外的步骤,将构建的文档推送到 GitLab Page 的托管站点。

我想配置另一个仅在候选版本上执行的作业——名称中包含 rc 的 git 标签。 GitLab CI reference docs 包含对 if: $CI_COMMIT_TAG 的多个引用,但我很难理解如何将它们组合在一起。


before_script:
  - apt-get update -qy
  - apt-get install -y ...
  - pip3 install ...
  - pip3 install --no-deps --ignore-installed .
test:
  stage: test
  script:
    - make test
    - make style
    - make doc
pages:
  stage: deploy
  script:
    - apt-get update -qy
    - apt-get install -y ...
    - pip3 install ...
    - pip3 install --no-deps --ignore-installed .
    - sphinx-build -b html docs/ public
  artifacts:
    paths:
      - public
  only:
    - master

更新/解决方案

根据@danielnelz 的回答,我提出了以下可行的解决方案。

before_script:
  - apt-get update -qy
  - apt-get install -y ...
  - pip3 install ...
  - pip3 install --no-deps --ignore-installed .

test:
  stage: test
  script:
    - make test
    - make style
    - make doc

prerelease:
  stage: test
  rules:
    - if: '$CI_COMMIT_TAG =~ /rc/'
  script:
    - make testrc

pages:
  stage: deploy
  script:
    - sphinx-build -b html docs/ public
  artifacts:
    paths:
      - public
  only:
    - master

1 个答案:

答案 0 :(得分:1)

您可以检查预定义的 $CI_COMMIT_TAG 是否在 rules 子句中包含 rc:

release:
  stage: release
  script:
    - do release
  rules:
    - if: '$CI_COMMIT_TAG =~ /rc/'