Update version for v9.0.0-rc3 release
[qemu/armbru.git] / .gitlab-ci.d / base.yml
blobbf3d8efab6a67ce79c5a511551eadc5ad5337861
2 variables:
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
22 .base_job_template:
23   variables:
24     # Each script line from will be in a collapsible section in the job output
25     # and show the duration of each line.
26     FF_SCRIPT_SECTIONS: 1
27     # The project has a fairly fat GIT repo so we try and avoid bringing in things
28     # we don't need. The --filter options avoid blobs and tree references we aren't going to use
29     # and we also avoid fetching tags.
30     GIT_FETCH_EXTRA_FLAGS: --filter=blob:none --filter=tree:0 --no-tags --prune --quiet
32   interruptible: true
34   rules:
35     #############################################################
36     # Stage 1: exclude scenarios where we definitely don't
37     # want jobs to run
38     #############################################################
40     # Never run jobs upstream on stable branch, staging branch jobs already ran
41     - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^stable-/'
42       when: never
44     # Never run jobs upstream on tags, staging branch jobs already ran
45     - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_TAG'
46       when: never
48     # Scheduled runs on mainline don't get pipelines except for the special Coverity job
49     - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"'
50       when: never
52     # Cirrus jobs can't run unless the creds / target repo are set
53     - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
54       when: never
56     # Publishing jobs should only run on the default branch in upstream
57     - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
58       when: never
60     # Non-publishing jobs should only run on staging branches in upstream
61     - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/'
62       when: never
64     # Jobs only intended for forks should always be skipped on upstream
65     - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
66       when: never
68     # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
69     - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
70       when: never
72     # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
73     - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
74       when: never
77     #############################################################
78     # Stage 2: fine tune execution of jobs in specific scenarios
79     # where the catch all logic is inappropriate
80     #############################################################
82     # Optional jobs should not be run unless manually triggered
83     - if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
84       when: manual
85       allow_failure: true
86       variables:
87         QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
89     - if: '$QEMU_JOB_OPTIONAL'
90       when: manual
91       allow_failure: true
93     # Skipped jobs should not be run unless manually triggered
94     - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
95       when: manual
96       allow_failure: true
97       variables:
98         QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
100     - if: '$QEMU_JOB_SKIPPED'
101       when: manual
102       allow_failure: true
104     # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
105     - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
106       when: manual
107       allow_failure: true
110     #############################################################
111     # Stage 3: catch all logic applying to any job not matching
112     # an earlier criteria
113     #############################################################
115     # Forks pipeline jobs don't start automatically unless
116     # QEMU_CI=2 is set
117     - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
118       when: manual
120     # Upstream pipeline jobs start automatically unless told not to
121     # by setting QEMU_CI=1
122     - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
123       when: manual
124       variables:
125         QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
127     - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
128       when: manual
130     # Jobs can run if any jobs they depend on were successful
131     - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
132       when: on_success
133       variables:
134         QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
136     - when: on_success