具有“规则”的Gitlab调度作业未运行,并且可以';不可触发

具有“规则”的Gitlab调度作业未运行,并且可以';不可触发,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我希望在计划的上下文中运行一个或多个作业,因此使用特定的规则如下声明它。 问题是,我的调度配置和我通过调度管道UI手动触发它时,都不会触发管道。我只是看不到任何触发的预定管道 Gitlab版本:12.9.2 gitlab-ci.yml(部分): 我知道调度作业不需要第二条规则,但即使没有这条规则,管道也无法正常运行。您只能使用 例如 但是,当在其他作业中重用代码段时, 不要仅将规则与一起使用/除了不幸的是,对于工作流逻辑,Gitlab非常脆弱。 如果对作业使用工作流部分和规则条件,则必须在工作

我希望在计划的上下文中运行一个或多个作业,因此使用特定的规则如下声明它。 问题是,我的调度配置和我通过调度管道UI手动触发它时,都不会触发管道。我只是看不到任何触发的预定管道

Gitlab版本:12.9.2

gitlab-ci.yml(部分):


我知道调度作业不需要第二条规则,但即使没有这条规则,管道也无法正常运行。

您只能使用

例如

但是,当在其他作业中重用代码段时,
不要仅将规则与
一起使用
/
除了

不幸的是,对于工作流逻辑,Gitlab非常脆弱。 如果对作业使用工作流部分和规则条件,则必须在工作流部分声明“计划”管道类型,以便在配置中启用:

workflow:                                                 
    rules:
      - if: '$CI_PIPELINE_SOURCE == "schedule"'
      ...
或者,您可以在配置中启用所有类型的管道,只需在工作流:规则的末尾添加即可


另一种方式是,use可以对计划的作业使用除/仅符号,并且它将起作用,但前提是您的工作流条件满足:

only:
  - schedules

如果使用“包含”选项,则可能会出现此方法。 因为合并允许扩展和覆盖字典映射,但不能向包含的数组添加或修改项。因此,您显然必须声明上次包含的YAML或use中以前添加的所有工作流:规则数组项


有关详细信息,请参阅。

此问题似乎存在一个未解决的问题:
workflow:                                                 
    rules:
      - if: '$CI_PIPELINE_SOURCE == "schedule"'
      ...
workflow:                                                 
  rules:
    ...
    - when: always
only:
  - schedules