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 variables: 10 # Each script line from will be in a collapsible section in the job output 11 # and show the duration of each line. 12 FF_SCRIPT_SECTIONS: 1 13 14 interruptible: true 15 16 rules: 17 ############################################################# 18 # Stage 1: exclude scenarios where we definitely don't 19 # want jobs to run 20 ############################################################# 21 22 # Cirrus jobs can't run unless the creds / target repo are set 23 - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)' 24 when: never 25 26 # Publishing jobs should only run on the default branch in upstream 27 - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' 28 when: never 29 30 # Non-publishing jobs should only run on staging branches in upstream 31 - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/' 32 when: never 33 34 # Jobs only intended for forks should always be skipped on upstream 35 - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"' 36 when: never 37 38 # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set 39 - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' 40 when: never 41 42 # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set 43 - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"' 44 when: never 45 46 47 ############################################################# 48 # Stage 2: fine tune execution of jobs in specific scenarios 49 # where the catch all logic is inapprorpaite 50 ############################################################# 51 52 # Optional jobs should not be run unless manually triggered 53 - if: '$QEMU_JOB_OPTIONAL' 54 when: manual 55 allow_failure: true 56 57 # Skipped jobs should not be run unless manually triggered 58 - if: '$QEMU_JOB_SKIPPED' 59 when: manual 60 allow_failure: true 61 62 # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset 63 - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"' 64 when: manual 65 allow_failure: true 66 67 68 ############################################################# 69 # Stage 3: catch all logic applying to any job not matching 70 # an earlier criteria 71 ############################################################# 72 73 # Forks pipeline jobs don't start automatically unless 74 # QEMU_CI=2 is set 75 - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"' 76 when: manual 77 78 # Jobs can run if any jobs they depend on were successfull 79 - when: on_success 80