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
简直快把我逼疯了。代码显示了应该发生的事情,但它并没有遵循它
那我错过了什么?
作业已添加到管道中:
- 如果 if、changes 或 exists 规则匹配并且还有
when: on_success
(默认)、when: delayed
或 when: always
。
- 如果规则
已达到仅
when: on_success
、when: delayed
或 when: 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 匹配时 -> 手动添加作业,在所有其他情况下 -> 不添加作业”。
我发现很难在 MR 上将阶段限制为仅 运行 并且是手动的
我有以下规则
rules:
- when: manual
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH'
when: never
但这个阶段仍然 运行 在分支下,我不希望它 运行 在任何分支上,只在 MR
简直快把我逼疯了。代码显示了应该发生的事情,但它并没有遵循它
那我错过了什么?
作业已添加到管道中:
- 如果 if、changes 或 exists 规则匹配并且还有
when: on_success
(默认)、when: delayed
或when: always
。 - 如果规则
已达到仅
when: on_success
、when: delayed
或when: 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 匹配时 -> 手动添加作业,在所有其他情况下 -> 不添加作业”。