]> git.proxmox.com Git - mirror_qemu.git/blame - .gitlab-ci.d/base.yml
Merge tag 'pull-vfio-20240310' of https://github.com/legoater/qemu into staging
[mirror_qemu.git] / .gitlab-ci.d / base.yml
CommitLineData
6a0e7ea7 1
d4c7a565 2variables:
e28112d0
DB
3 # On stable branches this is changed by later rules. Should also
4 # be overridden per pipeline if running pipelines concurrently
d4c7a565
DB
5 # for different branches in contributor forks.
6 QEMU_CI_CONTAINER_TAG: latest
7
1ddd2ff9
DB
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
12
6a0e7ea7
DB
13# The order of rules defined here is critically important.
14# They are evaluated in order and first match wins.
15#
16# Thus we group them into a number of stages, ordered from
17# most restrictive to least restrictive
18#
e28112d0
DB
19# For pipelines running for stable "staging-X.Y" branches
20# we must override QEMU_CI_CONTAINER_TAG
21#
6a0e7ea7 22.base_job_template:
075d909d
MCA
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
e97a9b8c
TH
28 interruptible: true
29
6a0e7ea7
DB
30 rules:
31 #############################################################
32 # Stage 1: exclude scenarios where we definitely don't
33 # want jobs to run
34 #############################################################
35
a77ef83c
DB
36 # Never run jobs upstream on stable branch, staging branch jobs already ran
37 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^stable-/'
38 when: never
39
40 # Never run jobs upstream on tags, staging branch jobs already ran
41 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_TAG'
42 when: never
43
83aa1baa
PB
44 # Scheduled runs on mainline don't get pipelines except for the special Coverity job
45 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"'
46 when: never
47
00125414 48 # Cirrus jobs can't run unless the creds / target repo are set
34776d80 49 - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)'
00125414
DB
50 when: never
51
e312d1fd 52 # Publishing jobs should only run on the default branch in upstream
1ddd2ff9 53 - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
e312d1fd
DB
54 when: never
55
56 # Non-publishing jobs should only run on staging branches in upstream
1ddd2ff9 57 - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/'
e312d1fd
DB
58 when: never
59
16fee101 60 # Jobs only intended for forks should always be skipped on upstream
1ddd2ff9 61 - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
16fee101
DB
62 when: never
63
28357dc5 64 # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
1ddd2ff9 65 - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
28357dc5
DB
66 when: never
67
e312d1fd 68 # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
1ddd2ff9 69 - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
e312d1fd
DB
70 when: never
71
6a0e7ea7
DB
72
73 #############################################################
74 # Stage 2: fine tune execution of jobs in specific scenarios
3aa2cfa0 75 # where the catch all logic is inappropriate
6a0e7ea7
DB
76 #############################################################
77
00125414 78 # Optional jobs should not be run unless manually triggered
e28112d0
DB
79 - if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
80 when: manual
81 allow_failure: true
82 variables:
83 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
84
00125414
DB
85 - if: '$QEMU_JOB_OPTIONAL'
86 when: manual
87 allow_failure: true
88
e312d1fd 89 # Skipped jobs should not be run unless manually triggered
e28112d0
DB
90 - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
91 when: manual
92 allow_failure: true
93 variables:
94 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
95
e312d1fd
DB
96 - if: '$QEMU_JOB_SKIPPED'
97 when: manual
98 allow_failure: true
99
100 # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
1ddd2ff9 101 - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
e312d1fd
DB
102 when: manual
103 allow_failure: true
104
6a0e7ea7
DB
105
106 #############################################################
107 # Stage 3: catch all logic applying to any job not matching
108 # an earlier criteria
109 #############################################################
110
28357dc5
DB
111 # Forks pipeline jobs don't start automatically unless
112 # QEMU_CI=2 is set
1ddd2ff9 113 - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM'
28357dc5
DB
114 when: manual
115
49ac76c2
DB
116 # Upstream pipeline jobs start automatically unless told not to
117 # by setting QEMU_CI=1
118 - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
119 when: manual
120 variables:
121 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
122
123 - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
124 when: manual
125
fc998891 126 # Jobs can run if any jobs they depend on were successful
e28112d0
DB
127 - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/'
128 when: on_success
129 variables:
130 QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG
131
6a0e7ea7 132 - when: on_success