Gitlab CI 规则中的 AND 运算符
Gitlab CI AND operator in rules
在 Gitlab CI 规则中,Gitlab 检查是否存在其中一条规则,然后他选择是否添加作业。我正在检查所有条件,如果一切正常,他可以添加作业,否则他不得将其添加到管道中:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
- changes:
- filder1/*.xml
在此示例中,我尝试告诉 gitlab 仅当某些 xml 文件已更改并且存在要合并到主分支的合并请求时才添加作业。
您应该将两个条件组合成一个映射。即,在 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
在 Gitlab CI 规则中,Gitlab 检查是否存在其中一条规则,然后他选择是否添加作业。我正在检查所有条件,如果一切正常,他可以添加作业,否则他不得将其添加到管道中:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
- changes:
- filder1/*.xml
在此示例中,我尝试告诉 gitlab 仅当某些 xml 文件已更改并且存在要合并到主分支的合并请求时才添加作业。
您应该将两个条件组合成一个映射。即,在 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