16a0e7ea7SDaniel P. Berrangé 2d4c7a565SDaniel P. Berrangévariables: 3e28112d0SDaniel P. Berrangé # On stable branches this is changed by later rules. Should also 4e28112d0SDaniel P. Berrangé # be overridden per pipeline if running pipelines concurrently 5d4c7a565SDaniel P. Berrangé # for different branches in contributor forks. 6d4c7a565SDaniel P. Berrangé QEMU_CI_CONTAINER_TAG: latest 7d4c7a565SDaniel P. Berrangé 81ddd2ff9SDaniel P. Berrangé # For purposes of CI rules, upstream is the gitlab.com/qemu-project 91ddd2ff9SDaniel P. Berrangé # namespace. When testing CI, it might be usefult to override this 101ddd2ff9SDaniel P. Berrangé # to point to a fork repo 111ddd2ff9SDaniel P. Berrangé QEMU_CI_UPSTREAM: qemu-project 121ddd2ff9SDaniel P. Berrangé 136a0e7ea7SDaniel P. Berrangé# The order of rules defined here is critically important. 146a0e7ea7SDaniel P. Berrangé# They are evaluated in order and first match wins. 156a0e7ea7SDaniel P. Berrangé# 166a0e7ea7SDaniel P. Berrangé# Thus we group them into a number of stages, ordered from 176a0e7ea7SDaniel P. Berrangé# most restrictive to least restrictive 186a0e7ea7SDaniel P. Berrangé# 19e28112d0SDaniel P. Berrangé# For pipelines running for stable "staging-X.Y" branches 20e28112d0SDaniel P. Berrangé# we must override QEMU_CI_CONTAINER_TAG 21e28112d0SDaniel P. Berrangé# 226a0e7ea7SDaniel P. Berrangé.base_job_template: 23075d909dSMark Cave-Ayland variables: 24075d909dSMark Cave-Ayland # Each script line from will be in a collapsible section in the job output 25075d909dSMark Cave-Ayland # and show the duration of each line. 26075d909dSMark Cave-Ayland FF_SCRIPT_SECTIONS: 1 27075d909dSMark Cave-Ayland 28e97a9b8cSThomas Huth interruptible: true 29e97a9b8cSThomas Huth 306a0e7ea7SDaniel P. Berrangé rules: 316a0e7ea7SDaniel P. Berrangé ############################################################# 326a0e7ea7SDaniel P. Berrangé # Stage 1: exclude scenarios where we definitely don't 336a0e7ea7SDaniel P. Berrangé # want jobs to run 346a0e7ea7SDaniel P. Berrangé ############################################################# 356a0e7ea7SDaniel P. Berrangé 36a77ef83cSDaniel P. Berrangé # Never run jobs upstream on stable branch, staging branch jobs already ran 37a77ef83cSDaniel P. Berrangé - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^stable-/' 38a77ef83cSDaniel P. Berrangé when: never 39a77ef83cSDaniel P. Berrangé 40a77ef83cSDaniel P. Berrangé # Never run jobs upstream on tags, staging branch jobs already ran 41a77ef83cSDaniel P. Berrangé - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_TAG' 42a77ef83cSDaniel P. Berrangé when: never 43a77ef83cSDaniel P. Berrangé 4400125414SDaniel P. Berrangé # Cirrus jobs can't run unless the creds / target repo are set 4534776d80SDaniel P. Berrangé - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)' 4600125414SDaniel P. Berrangé when: never 4700125414SDaniel P. Berrangé 48e312d1fdSDaniel P. Berrangé # Publishing jobs should only run on the default branch in upstream 491ddd2ff9SDaniel P. Berrangé - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' 50e312d1fdSDaniel P. Berrangé when: never 51e312d1fdSDaniel P. Berrangé 52e312d1fdSDaniel P. Berrangé # Non-publishing jobs should only run on staging branches in upstream 531ddd2ff9SDaniel P. Berrangé - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/' 54e312d1fdSDaniel P. Berrangé when: never 55e312d1fdSDaniel P. Berrangé 5616fee101SDaniel P. Berrangé # Jobs only intended for forks should always be skipped on upstream 571ddd2ff9SDaniel P. Berrangé - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' 5816fee101SDaniel P. Berrangé when: never 5916fee101SDaniel P. Berrangé 6028357dc5SDaniel P. Berrangé # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set 611ddd2ff9SDaniel P. Berrangé - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' 6228357dc5SDaniel P. Berrangé when: never 6328357dc5SDaniel P. Berrangé 64e312d1fdSDaniel P. Berrangé # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set 651ddd2ff9SDaniel P. Berrangé - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' 66e312d1fdSDaniel P. Berrangé when: never 67e312d1fdSDaniel P. Berrangé 686a0e7ea7SDaniel P. Berrangé 696a0e7ea7SDaniel P. Berrangé ############################################################# 706a0e7ea7SDaniel P. Berrangé # Stage 2: fine tune execution of jobs in specific scenarios 71*3aa2cfa0SAlex Bennée # where the catch all logic is inappropriate 726a0e7ea7SDaniel P. Berrangé ############################################################# 736a0e7ea7SDaniel P. Berrangé 7400125414SDaniel P. Berrangé # Optional jobs should not be run unless manually triggered 75e28112d0SDaniel P. Berrangé - if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' 76e28112d0SDaniel P. Berrangé when: manual 77e28112d0SDaniel P. Berrangé allow_failure: true 78e28112d0SDaniel P. Berrangé variables: 79e28112d0SDaniel P. Berrangé QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG 80e28112d0SDaniel P. Berrangé 8100125414SDaniel P. Berrangé - if: '$QEMU_JOB_OPTIONAL' 8200125414SDaniel P. Berrangé when: manual 8300125414SDaniel P. Berrangé allow_failure: true 8400125414SDaniel P. Berrangé 85e312d1fdSDaniel P. Berrangé # Skipped jobs should not be run unless manually triggered 86e28112d0SDaniel P. Berrangé - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' 87e28112d0SDaniel P. Berrangé when: manual 88e28112d0SDaniel P. Berrangé allow_failure: true 89e28112d0SDaniel P. Berrangé variables: 90e28112d0SDaniel P. Berrangé QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG 91e28112d0SDaniel P. Berrangé 92e312d1fdSDaniel P. Berrangé - if: '$QEMU_JOB_SKIPPED' 93e312d1fdSDaniel P. Berrangé when: manual 94e312d1fdSDaniel P. Berrangé allow_failure: true 95e312d1fdSDaniel P. Berrangé 96e312d1fdSDaniel P. Berrangé # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset 971ddd2ff9SDaniel P. Berrangé - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' 98e312d1fdSDaniel P. Berrangé when: manual 99e312d1fdSDaniel P. Berrangé allow_failure: true 100e312d1fdSDaniel P. Berrangé 1016a0e7ea7SDaniel P. Berrangé 1026a0e7ea7SDaniel P. Berrangé ############################################################# 1036a0e7ea7SDaniel P. Berrangé # Stage 3: catch all logic applying to any job not matching 1046a0e7ea7SDaniel P. Berrangé # an earlier criteria 1056a0e7ea7SDaniel P. Berrangé ############################################################# 1066a0e7ea7SDaniel P. Berrangé 10728357dc5SDaniel P. Berrangé # Forks pipeline jobs don't start automatically unless 10828357dc5SDaniel P. Berrangé # QEMU_CI=2 is set 1091ddd2ff9SDaniel P. Berrangé - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' 11028357dc5SDaniel P. Berrangé when: manual 11128357dc5SDaniel P. Berrangé 11249ac76c2SDaniel P. Berrangé # Upstream pipeline jobs start automatically unless told not to 11349ac76c2SDaniel P. Berrangé # by setting QEMU_CI=1 11449ac76c2SDaniel P. Berrangé - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' 11549ac76c2SDaniel P. Berrangé when: manual 11649ac76c2SDaniel P. Berrangé variables: 11749ac76c2SDaniel P. Berrangé QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG 11849ac76c2SDaniel P. Berrangé 11949ac76c2SDaniel P. Berrangé - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' 12049ac76c2SDaniel P. Berrangé when: manual 12149ac76c2SDaniel P. Berrangé 122fc998891SAlex Bennée # Jobs can run if any jobs they depend on were successful 123e28112d0SDaniel P. Berrangé - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' 124e28112d0SDaniel P. Berrangé when: on_success 125e28112d0SDaniel P. Berrangé variables: 126e28112d0SDaniel P. Berrangé QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG 127e28112d0SDaniel P. Berrangé 1286a0e7ea7SDaniel P. Berrangé - when: on_success 129