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

Doc*_*Who 6 gitlab gitlab-ci

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

我正在尝试设置一个要运行的计划作业,该作业将仅运行管道的一部分,为此,我尝试使用规则来忽略我不想通过执行类似操作来运行的所有其他阶段,例如

    - if: $CI_PIPELINE_SOURCE == "schedule"   
          when: never
Run Code Online (Sandbox Code Playgroud)

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

  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  
Run Code Online (Sandbox Code Playgroud)

当源是“时间表”时,有没有办法可以跳过此阶段,但对于其他场景仍然有手动步骤?

Sim*_*ner 6

重要的是要理解规则是按照您将规则放入规则块的顺序进行评估的。

这意味着您的when:manual规则优先于您的“时间表”规则。

如果您像下面这样交换它们,您的计划规则将首先被评估,并且您不应该看到管道步骤,请参阅https://docs.gitlab.com/ee/ci/yaml/#rules

创建管道时会评估规则,并按顺序评估直到第一个匹配项。找到匹配项后,作业将包含在管道中或从管道中排除,具体取决于配置。

  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
Run Code Online (Sandbox Code Playgroud)