对于托管在 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
答案 0 :(得分:1)
您可以检查预定义的 $CI_COMMIT_TAG
是否在 rules 子句中包含 rc:
release:
stage: release
script:
- do release
rules:
- if: '$CI_COMMIT_TAG =~ /rc/'