gitlab-ci.yml 中 IF 语句的语法错误

syntax error with IF statement in gitlab-ci.yml

我的gitlab中有如下逻辑-ci.yml:

Test:
  stage: unit-test
  environment:
    name: development
  image: mcr.microsoft.com/dotnet/sdk:6.0.202-bullseye-slim-amd64
  script:
    - curl -sL https://aka.ms/InstallAzureCLIDeb | bash
    - apt-get install curl && curl -sL https://deb.nodesource.com/setup_12.x | bash -
    - apt-get install nodejs
    - npm install -g azure-functions-core-tools@4 --unsafe-perm true
    - cd ./tests
    - dotnet test --test-adapter-path:. --logger:"junit;LogFilePath=..\TestResults\test-results.xml;MethodFormat=Class;FailureBodyFormat=Verbose"
  artifacts:
    when: always
    paths:
      - ./TestResults/test-results.xml
    reports:
      junit:
        - ./TestResults/test-results.xml
  rules:
    - if: '$CI_COMMIT_TITLE == "/-dev$/"'
  tags:
    - mac-pipelines

我遇到语法错误:

jobs:test:rules:rule if invalid expression syntax

我试过的

我尝试了以下更改 - 都失败了。 :)

  rules:
    - if: $CI_COMMIT_TITLE = /-dev$/

  rules:
    - if: '$CI_COMMIT_TITLE = /-dev$/'


  rules:
    - if: '$CI_COMMIT_TITLE == /-dev$/'

我目前正在谷歌搜索其他 IF 示例...但如果您能指出我的错误,我将不胜感激。

编辑 1

更新代码以使用它:

 - if: '$CI_COMMIT_TITLE =~ /-dev$/'

虽然语法错误消失了,但管道的作用与我想要的相反。当我使用提交消息“Testing -dev”提交更改时,我希望所有具有规则

的作业

规则: - 如果:'$CI_COMMIT_TITLE == /-dev$/'

到 运行,以及任何具有以下条件的工作:

规则: - 如果:'$CI_COMMIT_TITLE =~ /-dev$/'

将被跳过。
但恰恰相反。

您需要为 re 表达式使用正则表达式匹配运算符 (=~)

    - if: '$CI_COMMIT_TITLE =~ /-dev$/'

如果您想对模式进行否定匹配,请使用 !~