我发现很难将一个阶段限制为仅在 MR 上运行并且是手动的
我有以下规则
rules:
- when: manual
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH'
when: never
Run Code Online (Sandbox Code Playgroud)
但是这个阶段仍然在分支下运行,我不希望它在任何分支上运行,只在MR上运行
这简直让我发疯。代码显示了应该发生什么,但它只是不遵循它
那么我错过了什么?
从文档中:
该作业已添加到管道中:
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
Run Code Online (Sandbox Code Playgroud)
这翻译为:“当第一个 if 匹配时 -> 手动添加作业,在所有其他情况下 -> 不添加作业”。
| 归档时间: |
|
| 查看次数: |
4063 次 |
| 最近记录: |