1 2# The order of rules defined here is critically important. 3# They are evaluated in order and first match wins. 4# 5# Thus we group them into a number of stages, ordered from 6# most restrictive to least restrictive 7# 8.base_job_template: 9 rules: 10 ############################################################# 11 # Stage 1: exclude scenarios where we definitely don't 12 # want jobs to run 13 ############################################################# 14 15 # Cirrus jobs can't run unless the creds / target repo are set 16 - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)' 17 when: never 18 19 # Publishing jobs should only run on the default branch in upstream 20 - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' 21 when: never 22 23 # Non-publishing jobs should only run on staging branches in upstream 24 - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/' 25 when: never 26 27 # Jobs only intended for forks should always be skipped on upstream 28 - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"' 29 when: never 30 31 # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set 32 - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' 33 when: never 34 35 # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set 36 - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"' 37 when: never 38 39 40 ############################################################# 41 # Stage 2: fine tune execution of jobs in specific scenarios 42 # where the catch all logic is inapprorpaite 43 ############################################################# 44 45 # Optional jobs should not be run unless manually triggered 46 - if: '$QEMU_JOB_OPTIONAL' 47 when: manual 48 allow_failure: true 49 50 # Skipped jobs should not be run unless manually triggered 51 - if: '$QEMU_JOB_SKIPPED' 52 when: manual 53 allow_failure: true 54 55 # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset 56 - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"' 57 when: manual 58 allow_failure: true 59 60 61 ############################################################# 62 # Stage 3: catch all logic applying to any job not matching 63 # an earlier criteria 64 ############################################################# 65 66 # Forks pipeline jobs don't start automatically unless 67 # QEMU_CI=2 is set 68 - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' 69 when: manual 70 71 # Jobs can run if any jobs they depend on were successfull 72 - when: on_success 73