Gitlab 规则:即使满足规则,也始终显示手动步骤

Gitlab Rules: Manual step always shown even when rule met

我们有一个复杂的 Gitlab 管道,我们将阶段分成不同的文件,它们 运行 基于分支和源。

我正在尝试为 运行 设置一个计划作业,它只会 运行 管道的一部分,为此我正在尝试使用规则来忽略所有其他阶段我不想 运行 做这样的事情,例如

    - if: $CI_PIPELINE_SOURCE == "schedule"   
          when: never

问题是阶段也有手动规则,所以即使我说如果计划管道仍然要求手动交互则跳过:

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

当源是“计划”但仍然有其他场景的手动步骤时,有什么方法可以跳过这个阶段吗?

了解规则是按照您将它们放入规则块中的顺序评估的,这一点很重要。

这意味着您的 when:manual 优先于您的“日程安排”规则。

如果你像下面那样交换它们,你的调度规则将首先被评估,你不应该看到管道步骤见 https://docs.gitlab.com/ee/ci/yaml/#rules

Rules are evaluated when the pipeline is created, and evaluated in order until the first match. When a match is found, the job is either included or excluded from the pipeline, depending on the configuration.

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