gitlab-ci.yml 文件中 [STRING] 的正则表达式

Sha*_*tar 11 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 =~ "/[QAT]$/|/[qat]$/"  #&&  $CI_COMMIT_REF_NAME == "example/qat"
      when: always
Run Code Online (Sandbox Code Playgroud)

我已经写了上面的规则,但它不起作用。我尝试了以下正则表达式的组合,但它们都不起作用。

"/\[QAT\]/|/\[qat\]/"
"/[QAT]/|/[qat]/"
"*\[QAT\]*|*\[qat\]*"
"\[\(QAT\|qat\)\]"
"\[\(QAT\|qat\)]"
"/\[(qat|QAT)\]/"
Run Code Online (Sandbox Code Playgroud)

我在这里尝试了以下网站的正则表达式,它验证了我的要求,但它在 gitlab-ci.yml 文件中不起作用。

Wik*_*żew 21

您可以使用

# 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
Run Code Online (Sandbox Code Playgroud)

请参阅参考页面,了解有关如何格式化正则表达式匹配条件的更多信息rules:variables

笔记:

  • /\[(QAT|qat)]/不应放在引号内
  • 您需要使用/.../正则表达式文字语法(反斜杠是正则表达式分隔符)
  • \[(QAT|qat)]是一个正则表达式,先匹配[,然后匹配QATqat,然后匹配一个]char
  • =~是一个正则表达式匹配运算符。