仅当 git 标签不以字符串“Release”或“Test”开头时才在 Gitlab CI 中启动管道
Posted
技术标签:
【中文标题】仅当 git 标签不以字符串“Release”或“Test”开头时才在 Gitlab CI 中启动管道【英文标题】:Only start pipeline in Gitlab CI when git tag does not start with String "Release" or "Test" 【发布时间】:2022-01-13 19:29:24 【问题描述】:只有在没有 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
构建作业。开发构建作业的规则有什么问题?
【问题讨论】:
【参考方案1】:要检查变量是否与正则表达式不匹配,您应该使用!~
(GitLab documentation)
在您的具体示例中,您需要修复 dev
阶段:
dev:
rules:
- if: '$CI_COMMIT_TAG !~ /^Test_.*/ && $CI_COMMIT_TAG !~ /^Release_.*/'
script:
- echo "dev"
然后只有prod
作业将在Release_2021-3.0.0
标签上启动。
您可以查看小项目示例here
【讨论】:
谢谢,我只是在看 Gitlab CI 参考,而不是在一般的 CI/CD 文档中。以上是关于仅当 git 标签不以字符串“Release”或“Test”开头时才在 Gitlab CI 中启动管道的主要内容,如果未能解决你的问题,请参考以下文章
在 VSTS 中使用 git tag 或 package.json 版本作为 Release 名称