【发布时间】:2022-08-05 17:44:58
【问题描述】:
如果术语不标准,这是我使用以下术语的方式:
- 分支管道:推送到分支时运行的管道。
- MR管道:在合并请求上运行或推送到合并请求分支的管道。
我想编写一个包含两个作业的管道,job_A 和job_B。 job_A 应该在所有管道上运行。 job_B 应该只在合并请求管道上运行。一种解决方案是结合issue 194129 中提出的解决方法,将- if: $CI 的workflow 规则与merge_request_event 规则相结合,即:
image: alpine
workflow:
rules:
- if: $CI
stages:
- stage_A
- stage_B
job_A:
stage: stage_A
script:
- echo \"Hello from Job A\"
job_B:
stage: stage_B
rules:
- if: $CI_PIPELINE_SOURCE == \'merge_request_event\'
script:
- echo \"Hello from Job B\"
现在我的管道在 MR 上完全运行——这就是我想要的。但是,现在正在运行两条管道,即分支管道和 MR 管道。
我希望 job_A 和 job_B 在 MR 管道上运行,即使 job_A 没有 merge_request_event 规则。但是,我只希望在 MR 打开时运行一个管道——MR 管道。我怎样才能做到这一点?