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$/'
如果您想对模式进行否定匹配,请使用 !~
。
我的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$/'
如果您想对模式进行否定匹配,请使用 !~
。