]>
Commit | Line | Data |
---|---|---|
c5008c76 AB |
1 | # Currently we have two build stages after our containers are built: |
2 | # - build (for traditional build and test or first stage build) | |
3 | # - test (for test stages, using build artefacts from a build stage) | |
d0caa0a8 DB |
4 | stages: |
5 | - containers | |
fa821f23 | 6 | - containers-layer2 |
d0caa0a8 | 7 | - build |
c5008c76 | 8 | - test |
d0caa0a8 | 9 | |
71920809 | 10 | include: |
922febe2 TH |
11 | - local: '/.gitlab-ci.d/edk2.yml' |
12 | - local: '/.gitlab-ci.d/opensbi.yml' | |
fa821f23 | 13 | - local: '/.gitlab-ci.d/containers.yml' |
6bcb5fc0 | 14 | - local: '/.gitlab-ci.d/crossbuilds.yml' |
71920809 | 15 | |
c962864f DB |
16 | .native_build_job_template: &native_build_job_definition |
17 | stage: build | |
18 | image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest | |
19 | before_script: | |
20 | - JOBS=$(expr $(nproc) + 1) | |
8d77ce1d | 21 | - sed -i s,git.qemu.org/git,gitlab.com/qemu-project, .gitmodules |
c962864f DB |
22 | script: |
23 | - mkdir build | |
24 | - cd build | |
25 | - if test -n "$TARGETS"; | |
26 | then | |
27 | ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ; | |
28 | else | |
29 | ../configure --enable-werror $CONFIGURE_ARGS ; | |
c47110d9 | 30 | fi || { cat config.log meson-logs/meson-log.txt && exit 1; } |
c962864f | 31 | - make -j"$JOBS" |
c5008c76 AB |
32 | - if test -n "$MAKE_CHECK_ARGS"; |
33 | then | |
a6eeac3b | 34 | make -j"$JOBS" $MAKE_CHECK_ARGS ; |
c5008c76 AB |
35 | fi |
36 | ||
37 | .native_test_job_template: &native_test_job_definition | |
38 | stage: test | |
39 | image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest | |
40 | script: | |
41 | - cd build | |
42 | - find . -type f -exec touch {} + | |
43 | - make $MAKE_CHECK_ARGS | |
44 | ||
5896c539 TH |
45 | .acceptance_template: &acceptance_definition |
46 | cache: | |
47 | key: "${CI_JOB_NAME}-cache" | |
48 | paths: | |
49 | - ${CI_PROJECT_DIR}/avocado-cache | |
50 | policy: pull-push | |
ec4d2feb CR |
51 | artifacts: |
52 | paths: | |
53 | - build/tests/results/latest/results.xml | |
54 | reports: | |
55 | junit: build/tests/results/latest/results.xml | |
5896c539 TH |
56 | before_script: |
57 | - mkdir -p ~/.config/avocado | |
58 | - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf | |
59 | - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']" | |
60 | >> ~/.config/avocado/avocado.conf | |
61 | - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then | |
62 | du -chs ${CI_PROJECT_DIR}/avocado-cache ; | |
63 | fi | |
67202bae | 64 | - export AVOCADO_ALLOW_UNTRUSTED_CODE=1 |
c5008c76 AB |
65 | after_script: |
66 | - cd build | |
52dff285 | 67 | - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP", "CANCEL")]' | xargs cat |
5896c539 | 68 | - du -chs ${CI_PROJECT_DIR}/avocado-cache |
0a8b05c7 | 69 | |
699616db | 70 | build-system-ubuntu: |
c962864f DB |
71 | <<: *native_build_job_definition |
72 | variables: | |
73 | IMAGE: ubuntu2004 | |
699616db TH |
74 | TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu |
75 | moxie-softmmu microblazeel-softmmu mips64el-softmmu | |
a6eeac3b | 76 | MAKE_CHECK_ARGS: check-build |
d0f26e68 | 77 | CONFIGURE_ARGS: --enable-docs |
c5008c76 | 78 | artifacts: |
0a796d63 | 79 | expire_in: 2 days |
c5008c76 AB |
80 | paths: |
81 | - build | |
82 | ||
699616db | 83 | check-system-ubuntu: |
c5008c76 AB |
84 | <<: *native_test_job_definition |
85 | needs: | |
699616db | 86 | - job: build-system-ubuntu |
c5008c76 AB |
87 | artifacts: true |
88 | variables: | |
89 | IMAGE: ubuntu2004 | |
c962864f | 90 | MAKE_CHECK_ARGS: check |
0a8b05c7 | 91 | |
699616db | 92 | acceptance-system-ubuntu: |
c5008c76 AB |
93 | <<: *native_test_job_definition |
94 | needs: | |
699616db | 95 | - job: build-system-ubuntu |
c5008c76 AB |
96 | artifacts: true |
97 | variables: | |
98 | IMAGE: ubuntu2004 | |
99 | MAKE_CHECK_ARGS: check-acceptance | |
5896c539 | 100 | <<: *acceptance_definition |
c5008c76 | 101 | |
699616db TH |
102 | build-system-debian: |
103 | <<: *native_build_job_definition | |
104 | variables: | |
105 | IMAGE: debian-amd64 | |
106 | TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu | |
107 | riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu | |
108 | MAKE_CHECK_ARGS: check-build | |
d0f26e68 | 109 | CONFIGURE_ARGS: --enable-docs |
699616db | 110 | artifacts: |
0a796d63 | 111 | expire_in: 2 days |
699616db TH |
112 | paths: |
113 | - build | |
114 | ||
115 | check-system-debian: | |
116 | <<: *native_test_job_definition | |
117 | needs: | |
118 | - job: build-system-debian | |
119 | artifacts: true | |
120 | variables: | |
121 | IMAGE: debian-amd64 | |
122 | MAKE_CHECK_ARGS: check | |
123 | ||
124 | acceptance-system-debian: | |
125 | <<: *native_test_job_definition | |
126 | needs: | |
127 | - job: build-system-debian | |
128 | artifacts: true | |
129 | variables: | |
130 | IMAGE: debian-amd64 | |
131 | MAKE_CHECK_ARGS: check-acceptance | |
5896c539 | 132 | <<: *acceptance_definition |
699616db TH |
133 | |
134 | build-system-fedora: | |
c962864f DB |
135 | <<: *native_build_job_definition |
136 | variables: | |
137 | IMAGE: fedora | |
d0f26e68 | 138 | CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs |
3ffc7f01 | 139 | TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu |
699616db | 140 | xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu |
a6eeac3b | 141 | MAKE_CHECK_ARGS: check-build |
c5008c76 | 142 | artifacts: |
0a796d63 | 143 | expire_in: 2 days |
c5008c76 AB |
144 | paths: |
145 | - build | |
146 | ||
699616db | 147 | check-system-fedora: |
c5008c76 AB |
148 | <<: *native_test_job_definition |
149 | needs: | |
699616db | 150 | - job: build-system-fedora |
c5008c76 AB |
151 | artifacts: true |
152 | variables: | |
153 | IMAGE: fedora | |
c962864f | 154 | MAKE_CHECK_ARGS: check |
0a8b05c7 | 155 | |
699616db | 156 | acceptance-system-fedora: |
c5008c76 AB |
157 | <<: *native_test_job_definition |
158 | needs: | |
699616db | 159 | - job: build-system-fedora |
c5008c76 AB |
160 | artifacts: true |
161 | variables: | |
162 | IMAGE: fedora | |
163 | MAKE_CHECK_ARGS: check-acceptance | |
5896c539 | 164 | <<: *acceptance_definition |
c5008c76 | 165 | |
699616db TH |
166 | build-system-centos: |
167 | <<: *native_build_job_definition | |
168 | variables: | |
169 | IMAGE: centos8 | |
affcc09c | 170 | CONFIGURE_ARGS: --disable-nettle --enable-gcrypt |
3ffc7f01 | 171 | TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu |
699616db TH |
172 | x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu |
173 | MAKE_CHECK_ARGS: check-build | |
174 | artifacts: | |
0a796d63 | 175 | expire_in: 2 days |
699616db TH |
176 | paths: |
177 | - build | |
178 | ||
179 | check-system-centos: | |
180 | <<: *native_test_job_definition | |
181 | needs: | |
182 | - job: build-system-centos | |
183 | artifacts: true | |
184 | variables: | |
185 | IMAGE: centos8 | |
186 | MAKE_CHECK_ARGS: check | |
187 | ||
188 | acceptance-system-centos: | |
189 | <<: *native_test_job_definition | |
190 | needs: | |
191 | - job: build-system-centos | |
192 | artifacts: true | |
193 | variables: | |
194 | IMAGE: centos8 | |
195 | MAKE_CHECK_ARGS: check-acceptance | |
5896c539 | 196 | <<: *acceptance_definition |
699616db | 197 | |
0a8b05c7 | 198 | build-disabled: |
c962864f DB |
199 | <<: *native_build_job_definition |
200 | variables: | |
201 | IMAGE: fedora | |
a7524adb TH |
202 | CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs |
203 | --disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone | |
204 | --disable-cloop --disable-coroutine-pool --disable-curl --disable-curses | |
205 | --disable-dmg --disable-docs --disable-glusterfs --disable-gnutls | |
206 | --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm | |
207 | --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb | |
208 | --disable-libxml2 --disable-linux-aio --disable-live-block-migration | |
209 | --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle | |
210 | --disable-numa --disable-parallels --disable-pie --disable-qcow1 | |
211 | --disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma | |
212 | --disable-replication --disable-sdl --disable-seccomp --disable-sheepdog | |
213 | --disable-slirp --disable-smartcard --disable-snappy --disable-spice | |
214 | --disable-strip --disable-tpm --disable-usb-redir --disable-vdi | |
215 | --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi | |
216 | --disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock | |
217 | --disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat | |
218 | --disable-xen --disable-zstd | |
219 | TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu | |
220 | s390x-softmmu i386-linux-user | |
c962864f | 221 | MAKE_CHECK_ARGS: check-qtest SPEED=slow |
0a8b05c7 TH |
222 | |
223 | build-tcg-disabled: | |
c962864f DB |
224 | <<: *native_build_job_definition |
225 | variables: | |
226 | IMAGE: centos8 | |
227 | script: | |
228 | - mkdir build | |
229 | - cd build | |
c47110d9 | 230 | - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; } |
c962864f DB |
231 | - make -j"$JOBS" |
232 | - make check-unit | |
233 | - make check-qapi-schema | |
234 | - cd tests/qemu-iotests/ | |
235 | - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048 | |
c7cf4ddb TH |
236 | 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163 |
237 | 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277 | |
d8a18da5 | 238 | - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122 |
c7cf4ddb TH |
239 | 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202 |
240 | 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258 | |
241 | 260 261 262 263 264 270 272 273 277 279 | |
0a8b05c7 TH |
242 | |
243 | build-user: | |
c962864f DB |
244 | <<: *native_build_job_definition |
245 | variables: | |
62c902e0 AB |
246 | IMAGE: debian-all-test-cross |
247 | CONFIGURE_ARGS: --disable-tools --disable-system | |
248 | MAKE_CHECK_ARGS: check-tcg | |
0a8b05c7 | 249 | |
ac74e282 AB |
250 | # Only build the softmmu targets we have check-tcg tests for |
251 | build-some-softmmu: | |
252 | <<: *native_build_job_definition | |
253 | variables: | |
254 | IMAGE: debian-all-test-cross | |
255 | CONFIGURE_ARGS: --disable-tools --enable-debug-tcg | |
256 | TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu | |
257 | MAKE_CHECK_ARGS: check-tcg | |
258 | ||
8cdb2cef AB |
259 | # Run check-tcg against linux-user (with plugins) |
260 | # we skip sparc64-linux-user until it has been fixed somewhat | |
261 | # we skip cris-linux-user as it doesn't use the common run loop | |
262 | build-user-plugins: | |
263 | <<: *native_build_job_definition | |
264 | variables: | |
265 | IMAGE: debian-all-test-cross | |
266 | CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user | |
267 | MAKE_CHECK_ARGS: check-tcg | |
268 | timeout: 1h 30m | |
269 | ||
ac74e282 AB |
270 | build-some-softmmu-plugins: |
271 | <<: *native_build_job_definition | |
272 | variables: | |
273 | IMAGE: debian-all-test-cross | |
274 | CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg | |
275 | TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu | |
276 | MAKE_CHECK_ARGS: check-tcg | |
277 | ||
0a8b05c7 | 278 | build-clang: |
c962864f DB |
279 | <<: *native_build_job_definition |
280 | variables: | |
281 | IMAGE: fedora | |
282 | CONFIGURE_ARGS: --cc=clang --cxx=clang++ | |
283 | TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu | |
b610eba3 | 284 | ppc-softmmu s390x-softmmu arm-linux-user |
c962864f | 285 | MAKE_CHECK_ARGS: check |
5f55d64b | 286 | |
1c0c06b1 AB |
287 | # These targets are on the way out |
288 | build-deprecated: | |
289 | <<: *native_build_job_definition | |
290 | variables: | |
291 | IMAGE: debian-all-test-cross | |
3ffc7f01 | 292 | CONFIGURE_ARGS: --disable-docs --disable-tools |
2614670b | 293 | MAKE_CHECK_ARGS: build-tcg |
3ffc7f01 AB |
294 | TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu |
295 | unicore32-softmmu | |
2614670b AB |
296 | artifacts: |
297 | expire_in: 2 days | |
298 | paths: | |
299 | - build | |
300 | ||
301 | # We split the check-tcg step as test failures are expected but we still | |
302 | # want to catch the build breaking. | |
303 | check-deprecated: | |
304 | <<: *native_test_job_definition | |
305 | needs: | |
306 | - job: build-deprecated | |
307 | artifacts: true | |
308 | variables: | |
309 | IMAGE: debian-all-test-cross | |
310 | MAKE_CHECK_ARGS: check-tcg | |
1c0c06b1 AB |
311 | allow_failure: true |
312 | ||
48eac101 | 313 | build-oss-fuzz: |
b610eba3 TH |
314 | <<: *native_build_job_definition |
315 | variables: | |
316 | IMAGE: fedora | |
317 | script: | |
48eac101 AB |
318 | - mkdir build-oss-fuzz |
319 | - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" | |
320 | ./scripts/oss-fuzz/build.sh | |
5ab04d5e | 321 | - export ASAN_OPTIONS="fast_unwind_on_malloc=0" |
48eac101 AB |
322 | - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f |
323 | | grep -v slirp); do | |
324 | grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; | |
325 | echo Testing ${fuzzer} ... ; | |
320c6e78 | 326 | "${fuzzer}" -runs=1 -seed=1 || exit 1 ; |
b610eba3 | 327 | done |
5ab04d5e TH |
328 | # Unrelated to fuzzer: run some tests with -fsanitize=address |
329 | - cd build-oss-fuzz && make check-qtest-i386 check-unit | |
b610eba3 | 330 | |
5f55d64b | 331 | build-tci: |
c962864f DB |
332 | <<: *native_build_job_definition |
333 | variables: | |
334 | IMAGE: fedora | |
335 | script: | |
336 | - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64" | |
337 | - mkdir build | |
338 | - cd build | |
339 | - ../configure --enable-tcg-interpreter | |
c47110d9 | 340 | --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; } |
c962864f DB |
341 | - make -j"$JOBS" |
342 | - make run-tcg-tests-x86_64-softmmu | |
343 | - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test | |
344 | - for tg in $TARGETS ; do | |
64ed6f92 | 345 | export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; |
c962864f DB |
346 | ./tests/qtest/boot-serial-test || exit 1 ; |
347 | ./tests/qtest/cdrom-test || exit 1 ; | |
348 | done | |
64ed6f92 PB |
349 | - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test |
350 | - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow | |
affcc09c DB |
351 | |
352 | # Most jobs test latest gcrypt or nettle builds | |
353 | # | |
354 | # These jobs test old gcrypt and nettle from RHEL7 | |
355 | # which had some API differences. | |
356 | build-crypto-old-nettle: | |
357 | <<: *native_build_job_definition | |
358 | variables: | |
359 | IMAGE: centos7 | |
360 | TARGETS: x86_64-softmmu x86_64-linux-user | |
361 | CONFIGURE_ARGS: --disable-gcrypt --enable-nettle | |
362 | MAKE_CHECK_ARGS: check-build | |
363 | artifacts: | |
364 | paths: | |
365 | - build | |
366 | ||
367 | check-crypto-old-nettle: | |
368 | <<: *native_test_job_definition | |
369 | needs: | |
370 | - job: build-crypto-old-nettle | |
371 | artifacts: true | |
372 | variables: | |
373 | IMAGE: centos7 | |
374 | MAKE_CHECK_ARGS: check | |
375 | ||
376 | ||
377 | build-crypto-old-gcrypt: | |
378 | <<: *native_build_job_definition | |
379 | variables: | |
380 | IMAGE: centos7 | |
381 | TARGETS: x86_64-softmmu x86_64-linux-user | |
382 | CONFIGURE_ARGS: --disable-nettle --enable-gcrypt | |
383 | MAKE_CHECK_ARGS: check-build | |
384 | artifacts: | |
385 | paths: | |
386 | - build | |
387 | ||
388 | check-crypto-old-gcrypt: | |
389 | <<: *native_test_job_definition | |
390 | needs: | |
391 | - job: build-crypto-old-gcrypt | |
392 | artifacts: true | |
393 | variables: | |
394 | IMAGE: centos7 | |
395 | MAKE_CHECK_ARGS: check | |
396 | ||
397 | ||
398 | build-crypto-only-gnutls: | |
399 | <<: *native_build_job_definition | |
400 | variables: | |
401 | IMAGE: centos7 | |
402 | TARGETS: x86_64-softmmu x86_64-linux-user | |
403 | CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls | |
404 | MAKE_CHECK_ARGS: check-build | |
405 | artifacts: | |
406 | paths: | |
407 | - build | |
408 | ||
409 | check-crypto-only-gnutls: | |
410 | <<: *native_test_job_definition | |
411 | needs: | |
412 | - job: build-crypto-only-gnutls | |
413 | artifacts: true | |
414 | variables: | |
415 | IMAGE: centos7 | |
416 | MAKE_CHECK_ARGS: check | |
1f475472 DB |
417 | |
418 | ||
419 | check-patch: | |
420 | stage: build | |
421 | image: $CI_REGISTRY_IMAGE/qemu/centos8:latest | |
422 | script: .gitlab-ci.d/check-patch.py | |
423 | except: | |
424 | variables: | |
425 | - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' | |
426 | variables: | |
427 | GIT_DEPTH: 1000 | |
428 | allow_failure: true | |
34ed46a2 DB |
429 | |
430 | check-dco: | |
431 | stage: build | |
432 | image: $CI_REGISTRY_IMAGE/qemu/centos8:latest | |
433 | script: .gitlab-ci.d/check-dco.py | |
434 | except: | |
435 | variables: | |
436 | - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' | |
437 | variables: | |
438 | GIT_DEPTH: 1000 | |
4daa9055 DB |
439 | |
440 | pages: | |
441 | image: $CI_REGISTRY_IMAGE/qemu/ubuntu2004:latest | |
442 | stage: test | |
443 | needs: | |
444 | - job: build-system-ubuntu | |
445 | artifacts: true | |
446 | script: | |
447 | - mkdir public | |
448 | - mv build/docs/index.html public/ | |
449 | - for i in devel interop specs system tools user ; do mv build/docs/$i public/ ; done | |
450 | artifacts: | |
451 | paths: | |
452 | - public |