【问题标题】:Run all jobs on a gitlab ci MR pipeline, even if some don't have a merge_request_event rule, but do not run both MR and branch pipelines在 gitlab ci MR 管道上运行所有作业,即使有些没有 merge_request_event 规则,但不要同时运行 MR 和分支管道
【发布时间】:2022-08-05 17:44:58
【问题描述】:

如果术语不标准,这是我使用以下术语的方式:

  • 分支管道:推送到分支时运行的管道。
  • MR管道:在合并请求上运行或推送到合并请求分支的管道。

我想编写一个包含两个作业的管道,job_Ajob_Bjob_A 应该在所有管道上运行。 job_B 应该只在合并请求管道上运行。一种解决方案是结合issue 194129 中提出的解决方法,将- if: $CIworkflow 规则与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_Ajob_B 在 MR 管道上运行,即使 job_A 没有 merge_request_event 规则。但是,我只希望在 MR 打开时运行一个管道——MR 管道。我怎样才能做到这一点?

    标签: gitlab gitlab-ci


    【解决方案1】:

    尝试仅使用:变量。仅在一个管道中混合/除了规则时,我遇到了同样的问题。

    job_B:
      stage: stage_B
      only:
        variables:
          - $CI_PIPELINE_SOURCE == "merge_request_event"
      script:
        - echo "Hello from Job B"
    

    【讨论】:

      猜你喜欢
      • 2021-12-29
      • 2021-12-17
      • 1970-01-01
      • 2022-11-04
      • 2022-01-03
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2020-10-26
      相关资源
      最近更新 更多