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 actionon_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