]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.yml
gitlab: extend timeouts for CFI builds
[mirror_qemu.git] / .gitlab-ci.yml
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)
4 stages:
5 - containers
6 - containers-layer2
7 - build
8 - test
9
10 include:
11 - local: '/.gitlab-ci.d/edk2.yml'
12 - local: '/.gitlab-ci.d/opensbi.yml'
13 - local: '/.gitlab-ci.d/containers.yml'
14 - local: '/.gitlab-ci.d/crossbuilds.yml'
15
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)
21 script:
22 - mkdir build
23 - cd build
24 - if test -n "$TARGETS";
25 then
26 ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
27 else
28 ../configure --enable-werror $CONFIGURE_ARGS ;
29 fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
30 - if test -n "$LD_JOBS";
31 then
32 meson configure . -Dbackend_max_links="$LD_JOBS" ;
33 fi || exit 1;
34 - make -j"$JOBS"
35 - if test -n "$MAKE_CHECK_ARGS";
36 then
37 make -j"$JOBS" $MAKE_CHECK_ARGS ;
38 fi
39
40 .native_test_job_template: &native_test_job_definition
41 stage: test
42 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
43 script:
44 - scripts/git-submodule.sh update
45 $(grep GIT_SUBMODULES build/config-host.mak | sed 's/GIT_SUBMODULES=//')
46 - cd build
47 - find . -type f -exec touch {} +
48 # Avoid recompiling by hiding ninja with NINJA=":"
49 - make NINJA=":" $MAKE_CHECK_ARGS
50
51 .acceptance_template: &acceptance_definition
52 cache:
53 key: "${CI_JOB_NAME}-cache"
54 paths:
55 - ${CI_PROJECT_DIR}/avocado-cache
56 policy: pull-push
57 artifacts:
58 name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
59 when: always
60 expire_in: 2 days
61 paths:
62 - build/tests/results/latest/results.xml
63 - build/tests/results/latest/test-results
64 reports:
65 junit: build/tests/results/latest/results.xml
66 before_script:
67 - mkdir -p ~/.config/avocado
68 - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
69 - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
70 >> ~/.config/avocado/avocado.conf
71 - echo -e '[job.output.testlogs]\nstatuses = ["FAIL", "INTERRUPT"]'
72 >> ~/.config/avocado/avocado.conf
73 - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
74 du -chs ${CI_PROJECT_DIR}/avocado-cache ;
75 fi
76 - export AVOCADO_ALLOW_UNTRUSTED_CODE=1
77 after_script:
78 - cd build
79 - du -chs ${CI_PROJECT_DIR}/avocado-cache
80
81 build-system-alpine:
82 <<: *native_build_job_definition
83 needs:
84 - job: amd64-alpine-container
85 variables:
86 IMAGE: alpine
87 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
88 moxie-softmmu microblazeel-softmmu mips64el-softmmu
89 MAKE_CHECK_ARGS: check-build
90 CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
91 artifacts:
92 expire_in: 2 days
93 paths:
94 - .git-submodule-status
95 - build
96
97 check-system-alpine:
98 <<: *native_test_job_definition
99 needs:
100 - job: build-system-alpine
101 artifacts: true
102 variables:
103 IMAGE: alpine
104 MAKE_CHECK_ARGS: check
105
106 acceptance-system-alpine:
107 <<: *native_test_job_definition
108 needs:
109 - job: build-system-alpine
110 artifacts: true
111 variables:
112 IMAGE: alpine
113 MAKE_CHECK_ARGS: check-acceptance
114 <<: *acceptance_definition
115
116 build-system-ubuntu:
117 <<: *native_build_job_definition
118 needs:
119 job: amd64-ubuntu2004-container
120 variables:
121 IMAGE: ubuntu2004
122 CONFIGURE_ARGS: --enable-fdt=system --enable-slirp=system
123 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
124 moxie-softmmu microblazeel-softmmu mips64el-softmmu
125 MAKE_CHECK_ARGS: check-build
126 artifacts:
127 expire_in: 2 days
128 paths:
129 - build
130
131 check-system-ubuntu:
132 <<: *native_test_job_definition
133 needs:
134 - job: build-system-ubuntu
135 artifacts: true
136 variables:
137 IMAGE: ubuntu2004
138 MAKE_CHECK_ARGS: check
139
140 acceptance-system-ubuntu:
141 <<: *native_test_job_definition
142 needs:
143 - job: build-system-ubuntu
144 artifacts: true
145 variables:
146 IMAGE: ubuntu2004
147 MAKE_CHECK_ARGS: check-acceptance
148 <<: *acceptance_definition
149
150 build-system-debian:
151 <<: *native_build_job_definition
152 needs:
153 job: amd64-debian-container
154 variables:
155 IMAGE: debian-amd64
156 CONFIGURE_ARGS: --enable-fdt=system
157 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
158 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
159 MAKE_CHECK_ARGS: check-build
160 artifacts:
161 expire_in: 2 days
162 paths:
163 - build
164
165 check-system-debian:
166 <<: *native_test_job_definition
167 needs:
168 - job: build-system-debian
169 artifacts: true
170 variables:
171 IMAGE: debian-amd64
172 MAKE_CHECK_ARGS: check
173
174 acceptance-system-debian:
175 <<: *native_test_job_definition
176 needs:
177 - job: build-system-debian
178 artifacts: true
179 variables:
180 IMAGE: debian-amd64
181 MAKE_CHECK_ARGS: check-acceptance
182 <<: *acceptance_definition
183
184 build-system-fedora:
185 <<: *native_build_job_definition
186 needs:
187 job: amd64-fedora-container
188 variables:
189 IMAGE: fedora
190 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
191 --enable-fdt=system --enable-slirp=system --enable-capstone=system
192 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
193 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
194 MAKE_CHECK_ARGS: check-build
195 artifacts:
196 expire_in: 2 days
197 paths:
198 - build
199
200 check-system-fedora:
201 <<: *native_test_job_definition
202 needs:
203 - job: build-system-fedora
204 artifacts: true
205 variables:
206 IMAGE: fedora
207 MAKE_CHECK_ARGS: check
208
209 acceptance-system-fedora:
210 <<: *native_test_job_definition
211 needs:
212 - job: build-system-fedora
213 artifacts: true
214 variables:
215 IMAGE: fedora
216 MAKE_CHECK_ARGS: check-acceptance
217 <<: *acceptance_definition
218
219 build-system-centos:
220 <<: *native_build_job_definition
221 needs:
222 job: amd64-centos8-container
223 variables:
224 IMAGE: centos8
225 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
226 --enable-modules
227 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
228 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
229 MAKE_CHECK_ARGS: check-build
230 artifacts:
231 expire_in: 2 days
232 paths:
233 - build
234
235 check-system-centos:
236 <<: *native_test_job_definition
237 needs:
238 - job: build-system-centos
239 artifacts: true
240 variables:
241 IMAGE: centos8
242 MAKE_CHECK_ARGS: check
243
244 acceptance-system-centos:
245 <<: *native_test_job_definition
246 needs:
247 - job: build-system-centos
248 artifacts: true
249 variables:
250 IMAGE: centos8
251 MAKE_CHECK_ARGS: check-acceptance
252 <<: *acceptance_definition
253
254 build-system-opensuse:
255 <<: *native_build_job_definition
256 needs:
257 job: amd64-opensuse-leap-container
258 variables:
259 IMAGE: opensuse-leap
260 CONFIGURE_ARGS: --enable-fdt=system
261 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
262 MAKE_CHECK_ARGS: check-build
263 artifacts:
264 expire_in: 2 days
265 paths:
266 - build
267
268 check-system-opensuse:
269 <<: *native_test_job_definition
270 needs:
271 - job: build-system-opensuse
272 artifacts: true
273 variables:
274 IMAGE: opensuse-leap
275 MAKE_CHECK_ARGS: check
276
277 acceptance-system-opensuse:
278 <<: *native_test_job_definition
279 needs:
280 - job: build-system-opensuse
281 artifacts: true
282 variables:
283 IMAGE: opensuse-leap
284 MAKE_CHECK_ARGS: check-acceptance
285 <<: *acceptance_definition
286
287
288 build-disabled:
289 <<: *native_build_job_definition
290 needs:
291 job: amd64-fedora-container
292 variables:
293 IMAGE: fedora
294 CONFIGURE_ARGS:
295 --disable-attr
296 --disable-auth-pam
297 --disable-avx2
298 --disable-bochs
299 --disable-brlapi
300 --disable-bzip2
301 --disable-cap-ng
302 --disable-capstone
303 --disable-cloop
304 --disable-coroutine-pool
305 --disable-curl
306 --disable-curses
307 --disable-dmg
308 --disable-docs
309 --disable-gcrypt
310 --disable-glusterfs
311 --disable-gnutls
312 --disable-gtk
313 --disable-guest-agent
314 --disable-iconv
315 --disable-keyring
316 --disable-kvm
317 --disable-libiscsi
318 --disable-libpmem
319 --disable-libssh
320 --disable-libudev
321 --disable-libusb
322 --disable-libxml2
323 --disable-linux-aio
324 --disable-live-block-migration
325 --disable-lzo
326 --disable-malloc-trim
327 --disable-mpath
328 --disable-nettle
329 --disable-numa
330 --disable-opengl
331 --disable-parallels
332 --disable-pie
333 --disable-qcow1
334 --disable-qed
335 --disable-qom-cast-debug
336 --disable-rbd
337 --disable-rdma
338 --disable-replication
339 --disable-sdl
340 --disable-seccomp
341 --disable-sheepdog
342 --disable-slirp
343 --disable-smartcard
344 --disable-snappy
345 --disable-sparse
346 --disable-spice
347 --disable-strip
348 --disable-tpm
349 --disable-usb-redir
350 --disable-vdi
351 --disable-vhost-crypto
352 --disable-vhost-net
353 --disable-vhost-scsi
354 --disable-vhost-kernel
355 --disable-vhost-user
356 --disable-vhost-vdpa
357 --disable-vhost-vsock
358 --disable-virglrenderer
359 --disable-vnc
360 --disable-vte
361 --disable-vvfat
362 --disable-xen
363 --disable-zstd
364 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
365 s390x-softmmu i386-linux-user
366 MAKE_CHECK_ARGS: check-qtest SPEED=slow
367
368 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
369 # the configure script. The container doesn't contain Xen headers so
370 # Xen accelerator is not detected / selected. As result it build the
371 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
372 # available.
373 # Also use a different coroutine implementation (which is only really of
374 # interest to KVM users, i.e. with TCG disabled)
375 build-tcg-disabled:
376 <<: *native_build_job_definition
377 needs:
378 job: amd64-centos8-container
379 variables:
380 IMAGE: centos8
381 script:
382 - mkdir build
383 - cd build
384 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
385 || { cat config.log meson-logs/meson-log.txt && exit 1; }
386 - make -j"$JOBS"
387 - make check-unit
388 - make check-qapi-schema
389 - cd tests/qemu-iotests/
390 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
391 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
392 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
393 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
394 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
395 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
396 260 261 262 263 264 270 272 273 277 279
397
398 build-user:
399 <<: *native_build_job_definition
400 needs:
401 job: amd64-debian-user-cross-container
402 variables:
403 IMAGE: debian-all-test-cross
404 CONFIGURE_ARGS: --disable-tools --disable-system
405 MAKE_CHECK_ARGS: check-tcg
406
407 build-user-static:
408 <<: *native_build_job_definition
409 needs:
410 job: amd64-debian-user-cross-container
411 variables:
412 IMAGE: debian-all-test-cross
413 CONFIGURE_ARGS: --disable-tools --disable-system --static
414 MAKE_CHECK_ARGS: check-tcg
415
416 # Only build the softmmu targets we have check-tcg tests for
417 build-some-softmmu:
418 <<: *native_build_job_definition
419 needs:
420 job: amd64-debian-user-cross-container
421 variables:
422 IMAGE: debian-all-test-cross
423 CONFIGURE_ARGS: --disable-tools --enable-debug
424 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
425 MAKE_CHECK_ARGS: check-tcg
426
427 # Run check-tcg against linux-user (with plugins)
428 # we skip sparc64-linux-user until it has been fixed somewhat
429 # we skip cris-linux-user as it doesn't use the common run loop
430 build-user-plugins:
431 <<: *native_build_job_definition
432 needs:
433 job: amd64-debian-user-cross-container
434 variables:
435 IMAGE: debian-all-test-cross
436 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
437 MAKE_CHECK_ARGS: check-tcg
438 timeout: 1h 30m
439
440 build-user-centos7:
441 <<: *native_build_job_definition
442 needs:
443 job: amd64-centos7-container
444 variables:
445 IMAGE: centos7
446 CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs
447 MAKE_CHECK_ARGS: check-tcg
448
449 build-some-softmmu-plugins:
450 <<: *native_build_job_definition
451 needs:
452 job: amd64-debian-user-cross-container
453 variables:
454 IMAGE: debian-all-test-cross
455 CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
456 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
457 MAKE_CHECK_ARGS: check-tcg
458
459 clang-system:
460 <<: *native_build_job_definition
461 needs:
462 job: amd64-fedora-container
463 variables:
464 IMAGE: fedora
465 CONFIGURE_ARGS: --cc=clang --cxx=clang++
466 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
467 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
468 ppc-softmmu s390x-softmmu
469 MAKE_CHECK_ARGS: check-qtest check-tcg
470
471 clang-user:
472 <<: *native_build_job_definition
473 needs:
474 job: amd64-debian-user-cross-container
475 variables:
476 IMAGE: debian-all-test-cross
477 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
478 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
479 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
480 MAKE_CHECK_ARGS: check-unit check-tcg
481
482 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
483 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
484 # triggers an Out-Of-Memory error
485 #
486 # Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together
487 # with QEMU and linked as a static library to avoid false positives in CFI checks.
488 # This can be accomplished by using -enable-slirp=git, which avoids the use of
489 # a system-wide version of the library
490 #
491 # Split in three sets of build/check/acceptance to limit the execution time of each
492 # job
493 build-cfi-aarch64:
494 <<: *native_build_job_definition
495 needs:
496 - job: amd64-fedora-container
497 variables:
498 LD_JOBS: 1
499 AR: llvm-ar
500 IMAGE: fedora
501 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
502 --enable-safe-stack --enable-slirp=git
503 TARGETS: aarch64-softmmu
504 MAKE_CHECK_ARGS: check-build
505 timeout: 70m
506 artifacts:
507 expire_in: 2 days
508 paths:
509 - build
510
511 check-cfi-aarch64:
512 <<: *native_test_job_definition
513 needs:
514 - job: build-cfi-aarch64
515 artifacts: true
516 variables:
517 IMAGE: fedora
518 MAKE_CHECK_ARGS: check
519
520 acceptance-cfi-aarch64:
521 <<: *native_test_job_definition
522 needs:
523 - job: build-cfi-aarch64
524 artifacts: true
525 variables:
526 IMAGE: fedora
527 MAKE_CHECK_ARGS: check-acceptance
528 <<: *acceptance_definition
529
530 build-cfi-ppc64-s390x:
531 <<: *native_build_job_definition
532 needs:
533 - job: amd64-fedora-container
534 variables:
535 LD_JOBS: 1
536 AR: llvm-ar
537 IMAGE: fedora
538 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
539 --enable-safe-stack --enable-slirp=git
540 TARGETS: ppc64-softmmu s390x-softmmu
541 MAKE_CHECK_ARGS: check-build
542 timeout: 70m
543 artifacts:
544 expire_in: 2 days
545 paths:
546 - build
547
548 check-cfi-ppc64-s390x:
549 <<: *native_test_job_definition
550 needs:
551 - job: build-cfi-ppc64-s390x
552 artifacts: true
553 variables:
554 IMAGE: fedora
555 MAKE_CHECK_ARGS: check
556
557 acceptance-cfi-ppc64-s390x:
558 <<: *native_test_job_definition
559 needs:
560 - job: build-cfi-ppc64-s390x
561 artifacts: true
562 variables:
563 IMAGE: fedora
564 MAKE_CHECK_ARGS: check-acceptance
565 <<: *acceptance_definition
566
567 build-cfi-x86_64:
568 <<: *native_build_job_definition
569 needs:
570 - job: amd64-fedora-container
571 variables:
572 LD_JOBS: 1
573 AR: llvm-ar
574 IMAGE: fedora
575 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
576 --enable-safe-stack --enable-slirp=git
577 TARGETS: x86_64-softmmu
578 MAKE_CHECK_ARGS: check-build
579 timeout: 70m
580 artifacts:
581 expire_in: 2 days
582 paths:
583 - build
584
585 check-cfi-x86_64:
586 <<: *native_test_job_definition
587 needs:
588 - job: build-cfi-x86_64
589 artifacts: true
590 variables:
591 IMAGE: fedora
592 MAKE_CHECK_ARGS: check
593
594 acceptance-cfi-x86_64:
595 <<: *native_test_job_definition
596 needs:
597 - job: build-cfi-x86_64
598 artifacts: true
599 variables:
600 IMAGE: fedora
601 MAKE_CHECK_ARGS: check-acceptance
602 <<: *acceptance_definition
603
604 tsan-build:
605 <<: *native_build_job_definition
606 needs:
607 job: amd64-ubuntu2004-container
608 variables:
609 IMAGE: ubuntu2004
610 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 --disable-docs
611 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system
612 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
613 MAKE_CHECK_ARGS: bench V=1
614
615 # These targets are on the way out
616 build-deprecated:
617 <<: *native_build_job_definition
618 needs:
619 job: amd64-debian-user-cross-container
620 variables:
621 IMAGE: debian-all-test-cross
622 CONFIGURE_ARGS: --disable-docs --disable-tools
623 MAKE_CHECK_ARGS: build-tcg
624 TARGETS: ppc64abi32-linux-user lm32-softmmu unicore32-softmmu
625 artifacts:
626 expire_in: 2 days
627 paths:
628 - build
629
630 # We split the check-tcg step as test failures are expected but we still
631 # want to catch the build breaking.
632 check-deprecated:
633 <<: *native_test_job_definition
634 needs:
635 - job: build-deprecated
636 artifacts: true
637 variables:
638 IMAGE: debian-all-test-cross
639 MAKE_CHECK_ARGS: check-tcg
640 allow_failure: true
641
642 # gprof/gcov are GCC features
643 gprof-gcov:
644 <<: *native_build_job_definition
645 needs:
646 job: amd64-ubuntu2004-container
647 variables:
648 IMAGE: ubuntu2004
649 CONFIGURE_ARGS: --enable-gprof --enable-gcov
650 MAKE_CHECK_ARGS: check
651 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
652 timeout: 70m
653 after_script:
654 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
655
656 build-oss-fuzz:
657 <<: *native_build_job_definition
658 needs:
659 job: amd64-fedora-container
660 variables:
661 IMAGE: fedora
662 script:
663 - mkdir build-oss-fuzz
664 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
665 ./scripts/oss-fuzz/build.sh
666 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
667 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
668 | grep -v slirp); do
669 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
670 echo Testing ${fuzzer} ... ;
671 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
672 done
673 # Unrelated to fuzzer: run some tests with -fsanitize=address
674 - cd build-oss-fuzz && make check-qtest-i386 check-unit
675
676 build-tci:
677 <<: *native_build_job_definition
678 needs:
679 job: amd64-debian-user-cross-container
680 variables:
681 IMAGE: debian-all-test-cross
682 script:
683 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
684 - mkdir build
685 - cd build
686 - ../configure --enable-tcg-interpreter
687 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
688 - make -j"$JOBS"
689 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
690 - for tg in $TARGETS ; do
691 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
692 ./tests/qtest/boot-serial-test || exit 1 ;
693 ./tests/qtest/cdrom-test || exit 1 ;
694 done
695 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
696 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
697 - make check-tcg
698
699 # Alternate coroutines implementations are only really of interest to KVM users
700 # However we can't test against KVM on Gitlab-CI so we can only run unit tests
701 build-coroutine-sigaltstack:
702 <<: *native_build_job_definition
703 needs:
704 job: amd64-ubuntu2004-container
705 variables:
706 IMAGE: ubuntu2004
707 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
708 --enable-trace-backends=ftrace
709 MAKE_CHECK_ARGS: check-unit
710
711 # Most jobs test latest gcrypt or nettle builds
712 #
713 # These jobs test old gcrypt and nettle from RHEL7
714 # which had some API differences.
715 crypto-old-nettle:
716 <<: *native_build_job_definition
717 needs:
718 job: amd64-centos7-container
719 variables:
720 IMAGE: centos7
721 TARGETS: x86_64-softmmu x86_64-linux-user
722 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
723 MAKE_CHECK_ARGS: check
724
725 crypto-old-gcrypt:
726 <<: *native_build_job_definition
727 needs:
728 job: amd64-centos7-container
729 variables:
730 IMAGE: centos7
731 TARGETS: x86_64-softmmu x86_64-linux-user
732 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
733 MAKE_CHECK_ARGS: check
734
735 crypto-only-gnutls:
736 <<: *native_build_job_definition
737 needs:
738 job: amd64-centos7-container
739 variables:
740 IMAGE: centos7
741 TARGETS: x86_64-softmmu x86_64-linux-user
742 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
743 MAKE_CHECK_ARGS: check
744
745
746 # Check our reduced build configurations
747 build-without-default-devices:
748 <<: *native_build_job_definition
749 needs:
750 job: amd64-centos8-container
751 variables:
752 IMAGE: centos8
753 CONFIGURE_ARGS: --without-default-devices --disable-user
754
755 build-without-default-features:
756 <<: *native_build_job_definition
757 needs:
758 job: amd64-debian-container
759 variables:
760 IMAGE: debian-amd64
761 CONFIGURE_ARGS: --without-default-features --disable-user
762 --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
763 MAKE_CHECK_ARGS: check-unit
764
765 check-patch:
766 stage: build
767 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
768 needs:
769 job: amd64-centos8-container
770 script: .gitlab-ci.d/check-patch.py
771 except:
772 variables:
773 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
774 variables:
775 GIT_DEPTH: 1000
776 allow_failure: true
777
778 check-dco:
779 stage: build
780 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
781 needs:
782 job: amd64-centos8-container
783 script: .gitlab-ci.d/check-dco.py
784 except:
785 variables:
786 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
787 variables:
788 GIT_DEPTH: 1000
789
790 build-libvhost-user:
791 stage: build
792 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
793 needs:
794 job: amd64-fedora-container
795 before_script:
796 - dnf install -y meson ninja-build
797 script:
798 - mkdir subprojects/libvhost-user/build
799 - cd subprojects/libvhost-user/build
800 - meson
801 - ninja
802
803 # No targets are built here, just tools, docs, and unit tests. This
804 # also feeds into the eventual documentation deployment steps later
805 build-tools-and-docs-debian:
806 <<: *native_build_job_definition
807 needs:
808 job: amd64-debian-container
809 variables:
810 IMAGE: debian-amd64
811 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
812 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
813 artifacts:
814 expire_in: 2 days
815 paths:
816 - build
817
818 # Prepare for GitLab pages deployment. Anything copied into the
819 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
820 pages:
821 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
822 stage: test
823 needs:
824 - job: build-tools-and-docs-debian
825 script:
826 - mkdir -p public
827 # HTML-ised source tree
828 - make gtags
829 - htags -anT --tree-view=filetree -m qemu_init
830 -t "Welcome to the QEMU sourcecode"
831 - mv HTML public/src
832 # Project documentation
833 - make -C build install DESTDIR=$(pwd)/temp-install
834 - mv temp-install/usr/local/share/doc/qemu/* public/
835 artifacts:
836 paths:
837 - public