Regex gitlab-ci.yml文件中[STRING]的正则表达式
我想在gitlab-ci.yml文件中为部署阶段设置规则,如果git提交消息具有此格式的特定[STRING],那么它应该部署到写入此规则的特定环境中Regex gitlab-ci.yml文件中[STRING]的正则表达式,regex,gitlab,gitlab-ci,Regex,Gitlab,Gitlab Ci,我想在gitlab-ci.yml文件中为部署阶段设置规则,如果git提交消息具有此格式的特定[STRING],那么它应该部署到写入此规则的特定环境中 # Deploy to QAT environment deploy-qat: stage: deploy extends: .helm_deploy environment: name: qat tags: - exe-prd rules: - if: $CI_COMMIT_MESSAGE =~ &qu
# Deploy to QAT environment
deploy-qat:
stage: deploy
extends: .helm_deploy
environment:
name: qat
tags:
- exe-prd
rules:
- if: $CI_COMMIT_MESSAGE =~ "/[QAT]$/|/[qat]$/" #&& $CI_COMMIT_REF_NAME == "example/qat"
when: always
我已经写了上述规则,但它不起作用。我尝试了下面的正则表达式组合,但是它们都不起作用
"/\[QAT\]/|/\[qat\]/"
"/[QAT]/|/[qat]/"
"*\[QAT\]*|*\[qat\]*"
"\[\(QAT\|qat\)\]"
"\[\(QAT\|qat\)]"
"/\[(qat|QAT)\]/"
我尝试了以下正则表达式网站,该网站验证了我的要求,但它在gitlab-ci.yml文件中不起作用。在您的yml中尝试此块:
部署qat:
仅:
信息:
-/\[(qat|qat)\]/
您可以使用
# Deploy to QAT environment
deploy-qat:
stage: deploy
extends: .helm_deploy
environment:
name: qat
tags:
- exe-prd
rules:
- if: $CI_COMMIT_MESSAGE =~ /\[(QAT|qat)]/
when: always
请参阅参考页上有关如何格式化正则表达式匹配条件的更多信息
注:
不应放在引号内/\[(QAT|QAT)]/
- 您需要使用正则表达式文字语法(反斜杠是正则表达式分隔符)
是匹配\[(QAT | QAT)]
的正则表达式,然后是[
或QAT
,然后是QAT
字符]
是正则表达式匹配运算符=~
- 试试
“^(QAT | QAT)$”
(POSIX ERE)或“^\(QAT | QAT)$”
(POSIX BRE)。如果字符串包含[
和]
字符,请尝试“^\[(QAT | QAT)]$”
或“^\[(QAT | QAT)]$”
。它不起作用。典型的提交消息如下所示。“测试[QAT]环境的提交消息规则。”啊,然后删除^
和$
。这些锚需要一个完整的字符串匹配。“\[\(QAT\\\\\)]”和“\[\(QAT\\\\\\)\]”不起作用。我认为这如果:$CI\u COMMIT\u MESSAGE=~/\[(QAT\\\\\\)/
必须起作用。这是一个有效的POSIX ERE表达式。刚刚看了文档。谢谢弗拉基米尔,但我需要在部署时检查多个条件。分支必须是example/qat,提交消息中必须有[qat]或[qat]标记,以便QA环境部署,否则同一分支上的简单提交消息将部署到不同的环境。比如说开发环境。我不能同时使用唯一和规则指令。我的错误。但是您在代码示例中尝试过这种模式吗?我非常感谢您的努力。我在代码中尝试了这种模式,但它仍然没有将代码部署到QA环境中。最后一件事:我在这里看到了一个非常相同的“if”statemant示例,但在模式周围没有引号-您以前尝试过吗?我尝试了建议的解决方案,但是当我使用不带引号的gitlab-ci.yml文件时,该文件变得无效,