Reputation: 1334
Is it possible to globally define the rules for when the stages should be executed? And only if these are different that they are defined in the respective stage as in my example?
[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
Upvotes: 9
Views: 10501
Reputation: 1995
Did you try extends keyword ?
https://docs.gitlab.com/ee/ci/yaml/#extends If you add a rule property it will replace the one from extends property.
.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
Upvotes: 15