gitlab-ci 规则仅适用于合并请求的手动作业

gitlab-ci rules for manual job only on merge requests

我发现很难在 MR 上将阶段限制为仅 运行 并且是手动的

我有以下规则

    rules:
        - when: manual
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
        - if: '$CI_COMMIT_BRANCH'
          when: never

但这个阶段仍然 运行 在分支下,我不希望它 运行 在任何分支上,只在 MR

简直快把我逼疯了。代码显示了应该发生的事情,但它并没有遵循它

那我错过了什么?

来自documentation

作业已添加到管道中:

  • 如果 if、changes 或 exists 规则匹配并且还有 when: on_success(默认)、when: delayedwhen: always
  • 如果规则 已达到仅 when: on_successwhen: delayedwhen: always.

作业未添加到管道中:

  • 如果没有规则匹配。
  • 如果规则匹配并具有 when: never.

因此,为了达到您的要求(add manual job only on MR, otherwise, do not add the job),正确的顺序应该是:

rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: manual
    - when: never

这转换为:“当第一个 if 匹配时 -> 手动添加作业,在所有其他情况下 -> 不添加作业”。