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