2022-05-27 17:35:58 +02:00
|
|
|
|
|
|
|
# The order of rules defined here is critically important.
|
|
|
|
# They are evaluated in order and first match wins.
|
|
|
|
#
|
|
|
|
# Thus we group them into a number of stages, ordered from
|
|
|
|
# most restrictive to least restrictive
|
|
|
|
#
|
|
|
|
.base_job_template:
|
|
|
|
rules:
|
|
|
|
#############################################################
|
|
|
|
# Stage 1: exclude scenarios where we definitely don't
|
|
|
|
# want jobs to run
|
|
|
|
#############################################################
|
|
|
|
|
2022-05-27 17:35:59 +02:00
|
|
|
# Cirrus jobs can't run unless the creds / target repo are set
|
|
|
|
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
|
|
|
|
when: never
|
|
|
|
|
2022-05-27 17:36:00 +02:00
|
|
|
# Jobs only intended for forks should always be skipped on upstream
|
|
|
|
- if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"'
|
|
|
|
when: never
|
|
|
|
|
2022-05-27 17:35:58 +02:00
|
|
|
|
|
|
|
#############################################################
|
|
|
|
# Stage 2: fine tune execution of jobs in specific scenarios
|
|
|
|
# where the catch all logic is inapprorpaite
|
|
|
|
#############################################################
|
|
|
|
|
2022-05-27 17:35:59 +02:00
|
|
|
# Optional jobs should not be run unless manually triggered
|
|
|
|
- if: '$QEMU_JOB_OPTIONAL'
|
|
|
|
when: manual
|
|
|
|
allow_failure: true
|
|
|
|
|
2022-05-27 17:35:58 +02:00
|
|
|
|
|
|
|
#############################################################
|
|
|
|
# Stage 3: catch all logic applying to any job not matching
|
|
|
|
# an earlier criteria
|
|
|
|
#############################################################
|
|
|
|
|
|
|
|
# Jobs can run if any jobs they depend on were successfull
|
|
|
|
- when: on_success
|