rules
Conditionally include or exclude a job from a pipeline.
Supported: if, changes, exists, when, allow_failure, needs, variables, interruptible
Examples
Condition on variable
job:
script: echo "job"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
Condition on file changes
job:
script: echo "job"
rules:
- changes:
- src/**/*.rb
- Gemfile.lock
Condition on file existence
job:
script: echo "job"
rules:
- exists:
- Dockerfile
Set when
job:
script: echo "job"
rules:
- when: on_success
Allow failure via rules
job:
script: echo "job"
rules:
- allow_failure: true
Set variables via rules
job:
script: echo "job"
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
variables:
DEPLOY_ENV: production
- variables:
DEPLOY_ENV: staging
Set interruptible via rules
job:
script: echo "job"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
interruptible: true
- interruptible: false
Add needs via rules
build:
stage: build
script: echo "build"
test:
stage: test
script: echo "test"
rules:
- needs:
- build