【问题标题】:regular expression for [STRING] in gitlab-ci.yml filegitlab-ci.yml 文件中 [STRING] 的正则表达式
【发布时间】:2021-06-07 06:23:03
【问题描述】:

我很想在 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)\]/"

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

【问题讨论】:

  • 尝试 "^(QAT|qat)$" (POSIX ERE) 或 "^\(QAT\|qat\)$" (POSIX BRE)。如果字符串包含[] 字符,请尝试"^\[(QAT|qat)]$""^\[\(QAT\|qat\)]$"
  • 它没有用。典型的提交消息如下所示。 “测试 [QAT] 环境的提交消息规则。”
  • 啊,然后删除^$。这些锚点需要完整的字符串匹配。
  • "\[\(QAT\|qat\)]""\[\(QAT\|qat\)\]" 不起作用。
  • 我认为if: $CI_COMMIT_MESSAGE =~ /\[(QAT|qat)]/ 必须有效。这是一个有效的 POSIX ERE 表达式。刚刚看了rules:variables docs。

标签: regex gitlab gitlab-ci


【解决方案1】:

你可以使用

# 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

rules:variables 参考页面上查看有关如何格式化正则表达式匹配条件的更多信息。

注意事项:

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

【讨论】:

    【解决方案2】:

    在你的 yml 中试试这个块:

    deploy-qat:
      only:
        message:
          - /\[(qat|QAT)\]/
    

    【讨论】:

    • 谢谢弗拉基米尔,但我需要在部署时检查多个条件。分支必须是 example/qat 并且提交消息中必须包含 [QAT] 或 [qat] 标记以用于 QA 环境部署,否则同一分支上的简单提交消息将部署到不同的环境。让我们说开发环境。我不能同时使用 only 和 rule 指令。
    • 我的错误。但是您是否在代码示例中尝试过这种模式?
    • 非常感谢您的努力。我在我的代码中尝试了这种模式,但它仍然没有将代码部署到 QA 环境。
    • 最后一件事:docs.gitlab.com/ee/ci/yaml 在这里,我看到了一个非常相同的“if”语句示例,但在模式周围没有引号 - 你以前尝试过吗?
    • 我尝试了建议的解决方案,但是当我在不带引号的情况下使用 gitlab-ci.yml 文件时,它们会变得无效,
    猜你喜欢
    • 2021-12-26
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多