【问题标题】:Gitlab CI AND operator in rules规则中的Gitlab CI AND运算符
【发布时间】:2022-01-12 13:05:44
【问题描述】:
在 Gitlab CI 规则中,Gitlab 检查是否存在其中一条规则,然后选择是否添加作业。我正在检查所有条件,如果一切正常,他可以添加作业,否则他不能将其添加到管道中:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
- changes:
- filder1/*.xml
在这个例子中,我试图告诉 gitlab 仅在某些 xml 文件已更改并且有合并请求要合并到主分支时才添加作业。
【问题讨论】:
标签:
gitlab
continuous-integration
logic
gitlab-ci
【解决方案1】:
您应该将这两个条件组合到一个映射中。即,删除 changes 之前的多余破折号:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
changes:
- filder1/*.xml
但也请注意default action 是on_success,所以你应该用never 添加另一个映射以防止作业添加:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
changes:
- filder1/*.xml
when: on_success
- when: never