Gitlab-CI:全局定义规则并在某个阶段本地覆盖它们

use*_*578 7 gitlab-ci

是否可以全局定义何时执行阶段的规则?只有当它们不同时,它们才会像我的示例中那样在各自的阶段中定义?

[gitlab-ci.yml]

linter1:
  rules:
  - if: '$CI_PIPELINE_SOURCE == "push"'
    when: always
  - when: never

linter2:
  rules:
  - if: '$CI_PIPELINE_SOURCE == "push"'
    when: always
  - when: never

validate:
  rules:
  - if: '$CI_PIPELINE_SOURCE == "web"'
    when: on_success
  - when: never

deploy:
  rules:
  - if: '$CI_PIPELINE_SOURCE == "web"'
    when: on_success
  - when: never
Run Code Online (Sandbox Code Playgroud)

Rom*_*IER 12

您尝试过extends关键字吗?

https://docs.gitlab.com/ee/ci/yaml/#extends 如果添加规则属性,它将替换扩展属性中的属性。

   .linter-common:
      rules:
      - if: '$CI_PIPELINE_SOURCE == "push"'
        when: always
      - when: never
    

    .validate-rule:
      rules:
        - if: '$CI_PIPELINE_SOURCE == "web"'
          when: on_success
        - when: never

    linter1:
      extends: .linter-common
    
    linter2:
      extends: .linter-common
    
    
    validate:
          extends: .validate-rule

    
    deploy:
           extends: .validate-rule
Run Code Online (Sandbox Code Playgroud)