xref: /qemu/.gitlab-ci.d/custom-runners.yml (revision dbc8221f)
1# The CI jobs defined here require GitLab runners installed and
2# registered on machines that match their operating system names,
3# versions and architectures.  This is in contrast to the other CI
4# jobs that are intended to run on GitLab's "shared" runners.
5
6# Different than the default approach on "shared" runners, based on
7# containers, the custom runners have no such *requirement*, as those
8# jobs should be capable of running on operating systems with no
9# compatible container implementation, or no support from
10# gitlab-runner.  To avoid problems that gitlab-runner can cause while
11# reusing the GIT repository, let's enable the clone strategy, which
12# guarantees a fresh repository on each job run.
13variables:
14  GIT_STRATEGY: clone
15
16# All ubuntu-18.04 jobs should run successfully in an environment
17# setup by the scripts/ci/setup/build-environment.yml task
18# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
19ubuntu-18.04-s390x-all-linux-static:
20 needs: []
21 stage: build
22 tags:
23 - ubuntu_18.04
24 - s390x
25 rules:
26 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
27 - if: "$S390X_RUNNER_AVAILABLE"
28 script:
29 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
30 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
31 - mkdir build
32 - cd build
33 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
34 - make --output-sync -j`nproc`
35 - make --output-sync -j`nproc` check V=1
36 - make --output-sync -j`nproc` check-tcg V=1
37
38ubuntu-18.04-s390x-all:
39 needs: []
40 stage: build
41 tags:
42 - ubuntu_18.04
43 - s390x
44 rules:
45 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
46 - if: "$S390X_RUNNER_AVAILABLE"
47 script:
48 - mkdir build
49 - cd build
50 - ../configure --disable-libssh
51 - make --output-sync -j`nproc`
52 - make --output-sync -j`nproc` check V=1
53
54ubuntu-18.04-s390x-alldbg:
55 needs: []
56 stage: build
57 tags:
58 - ubuntu_18.04
59 - s390x
60 rules:
61 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
62   when: manual
63   allow_failure: true
64 - if: "$S390X_RUNNER_AVAILABLE"
65   when: manual
66   allow_failure: true
67 script:
68 - mkdir build
69 - cd build
70 - ../configure --enable-debug --disable-libssh
71 - make clean
72 - make --output-sync -j`nproc`
73 - make --output-sync -j`nproc` check V=1
74
75ubuntu-18.04-s390x-clang:
76 needs: []
77 stage: build
78 tags:
79 - ubuntu_18.04
80 - s390x
81 rules:
82 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
83   when: manual
84   allow_failure: true
85 - if: "$S390X_RUNNER_AVAILABLE"
86   when: manual
87   allow_failure: true
88 script:
89 - mkdir build
90 - cd build
91 - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
92 - make --output-sync -j`nproc`
93 - make --output-sync -j`nproc` check V=1
94
95ubuntu-18.04-s390x-tci:
96 needs: []
97 stage: build
98 tags:
99 - ubuntu_18.04
100 - s390x
101 rules:
102 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
103   when: manual
104   allow_failure: true
105 - if: "$S390X_RUNNER_AVAILABLE"
106   when: manual
107   allow_failure: true
108 script:
109 - mkdir build
110 - cd build
111 - ../configure --disable-libssh --enable-tcg-interpreter
112 - make --output-sync -j`nproc`
113
114ubuntu-18.04-s390x-notcg:
115 needs: []
116 stage: build
117 tags:
118 - ubuntu_18.04
119 - s390x
120 rules:
121 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
122   when: manual
123   allow_failure: true
124 - if: "$S390X_RUNNER_AVAILABLE"
125   when: manual
126   allow_failure: true
127 script:
128 - mkdir build
129 - cd build
130 - ../configure --disable-libssh --disable-tcg
131 - make --output-sync -j`nproc`
132 - make --output-sync -j`nproc` check V=1
133
134# All ubuntu-20.04 jobs should run successfully in an environment
135# setup by the scripts/ci/setup/qemu/build-environment.yml task
136# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
137ubuntu-20.04-aarch64-all-linux-static:
138 needs: []
139 stage: build
140 tags:
141 - ubuntu_20.04
142 - aarch64
143 rules:
144 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
145 - if: "$AARCH64_RUNNER_AVAILABLE"
146 script:
147 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
148 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
149 - mkdir build
150 - cd build
151 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
152 - make --output-sync -j`nproc`
153 - make --output-sync -j`nproc` check V=1
154 - make --output-sync -j`nproc` check-tcg V=1
155
156ubuntu-20.04-aarch64-all:
157 needs: []
158 stage: build
159 tags:
160 - ubuntu_20.04
161 - aarch64
162 rules:
163 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
164   when: manual
165   allow_failure: true
166 - if: "$AARCH64_RUNNER_AVAILABLE"
167   when: manual
168   allow_failure: true
169 script:
170 - mkdir build
171 - cd build
172 - ../configure --disable-libssh
173 - make --output-sync -j`nproc`
174 - make --output-sync -j`nproc` check V=1
175
176ubuntu-20.04-aarch64-alldbg:
177 needs: []
178 stage: build
179 tags:
180 - ubuntu_20.04
181 - aarch64
182 rules:
183 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
184 - if: "$AARCH64_RUNNER_AVAILABLE"
185 script:
186 - mkdir build
187 - cd build
188 - ../configure --enable-debug --disable-libssh
189 - make clean
190 - make --output-sync -j`nproc`
191 - make --output-sync -j`nproc` check V=1
192
193ubuntu-20.04-aarch64-clang:
194 needs: []
195 stage: build
196 tags:
197 - ubuntu_20.04
198 - aarch64
199 rules:
200 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
201   when: manual
202   allow_failure: true
203 - if: "$AARCH64_RUNNER_AVAILABLE"
204   when: manual
205   allow_failure: true
206 script:
207 - mkdir build
208 - cd build
209 - ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
210 - make --output-sync -j`nproc`
211 - make --output-sync -j`nproc` check V=1
212
213ubuntu-20.04-aarch64-tci:
214 needs: []
215 stage: build
216 tags:
217 - ubuntu_20.04
218 - aarch64
219 rules:
220 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
221   when: manual
222   allow_failure: true
223 - if: "$AARCH64_RUNNER_AVAILABLE"
224   when: manual
225   allow_failure: true
226 script:
227 - mkdir build
228 - cd build
229 - ../configure --disable-libssh --enable-tcg-interpreter
230 - make --output-sync -j`nproc`
231
232ubuntu-20.04-aarch64-notcg:
233 needs: []
234 stage: build
235 tags:
236 - ubuntu_20.04
237 - aarch64
238 rules:
239 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
240   when: manual
241   allow_failure: true
242 - if: "$AARCH64_RUNNER_AVAILABLE"
243   when: manual
244   allow_failure: true
245 script:
246 - mkdir build
247 - cd build
248 - ../configure --disable-libssh --disable-tcg
249 - make --output-sync -j`nproc`
250 - make --output-sync -j`nproc` check V=1
251