3 # On stable branches this is changed by later rules. Should also
4 # be overridden per pipeline if running pipelines concurrently
5 # for different branches in contributor forks.
6 QEMU_CI_CONTAINER_TAG: latest
8 # For purposes of CI rules, upstream is the gitlab.com/qemu-project
9 # namespace. When testing CI, it might be usefult to override this
10 # to point to a fork repo
11 QEMU_CI_UPSTREAM: qemu-project
13 # The order of rules defined here is critically important.
14 # They are evaluated in order and first match wins.
16 # Thus we group them into a number of stages, ordered from
17 # most restrictive to least restrictive
19 # For pipelines running for stable "staging-X.Y" branches
20 # we must override QEMU_CI_CONTAINER_TAG
24 # Each script line from will be in a collapsible section in the job output
25 # and show the duration of each line.
31 #############################################################
32 # Stage 1: exclude scenarios where we definitely don't
34 #############################################################
36 # Cirrus jobs can't run unless the creds / target repo are set
37 - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
40 # Publishing jobs should only run on the default branch in upstream
41 - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
44 # Non-publishing jobs should only run on staging branches in upstream
45 - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/'
48 # Jobs only intended for forks should always be skipped on upstream
49 - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
52 # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
53 - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
56 # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
57 - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
61 #############################################################
62 # Stage 2: fine tune execution of jobs in specific scenarios
63 # where the catch all logic is inapprorpaite
64 #############################################################
66 # Optional jobs should not be run unless manually triggered
67 - if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
71 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
73 - if: '$QEMU_JOB_OPTIONAL'
77 # Skipped jobs should not be run unless manually triggered
78 - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
82 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
84 - if: '$QEMU_JOB_SKIPPED'
88 # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
89 - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
94 #############################################################
95 # Stage 3: catch all logic applying to any job not matching
97 #############################################################
99 # Forks pipeline jobs don't start automatically unless
101 - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
104 # Jobs can run if any jobs they depend on were successful
105 - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
108 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG