当 git 标签不以字符串 "Release" 或 "Test" 开头时,仅在 Gitlab CI 中启动管道
Only start pipeline in Gitlab CI when git tag does not start with String "Release" or "Test"
仅当不存在 git 标签或 git 标签不是“Release_...”或“Test_...”时,我才需要开始构建作业。这是我的 .gitlab-ci.yml
测试:
dev:
rules:
- if: '$CI_COMMIT_TAG != /^Test_.*/ && $CI_COMMIT_TAG != /^Release_.*/'
script:
- echo "dev"
test:
rules:
- if: '$CI_COMMIT_TAG =~ /^Test_.*/'
script:
- echo "test"
prod:
rules:
- if: '$CI_COMMIT_TAG =~ /^Release_.*/'
script:
- echo "prod"
如果我添加 git 标记 Release_2021-3.0.0
,dev
和 prod
构建作业就会启动。仅应启动 prod
构建作业。开发构建作业的规则有什么问题?
要检查变量是否与正则表达式不匹配,您应该使用 !~
(GitLab documentation)
在您的具体示例中,您需要修复 dev
阶段:
dev:
rules:
- if: '$CI_COMMIT_TAG !~ /^Test_.*/ && $CI_COMMIT_TAG !~ /^Release_.*/'
script:
- echo "dev"
然后只有 prod
作业会在 Release_2021-3.0.0
标签上启动。
您可以查看小项目示例 here
仅当不存在 git 标签或 git 标签不是“Release_...”或“Test_...”时,我才需要开始构建作业。这是我的 .gitlab-ci.yml
测试:
dev:
rules:
- if: '$CI_COMMIT_TAG != /^Test_.*/ && $CI_COMMIT_TAG != /^Release_.*/'
script:
- echo "dev"
test:
rules:
- if: '$CI_COMMIT_TAG =~ /^Test_.*/'
script:
- echo "test"
prod:
rules:
- if: '$CI_COMMIT_TAG =~ /^Release_.*/'
script:
- echo "prod"
如果我添加 git 标记 Release_2021-3.0.0
,dev
和 prod
构建作业就会启动。仅应启动 prod
构建作业。开发构建作业的规则有什么问题?
要检查变量是否与正则表达式不匹配,您应该使用 !~
(GitLab documentation)
在您的具体示例中,您需要修复 dev
阶段:
dev:
rules:
- if: '$CI_COMMIT_TAG !~ /^Test_.*/ && $CI_COMMIT_TAG !~ /^Release_.*/'
script:
- echo "dev"
然后只有 prod
作业会在 Release_2021-3.0.0
标签上启动。
您可以查看小项目示例 here