Regex gitlab-ci.yml文件中[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

我想在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
我已经写了上述规则,但它不起作用。我尝试了下面的正则表达式组合,但是它们都不起作用

"/\[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文件时,该文件变得无效,