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