1include: 2 - local: '/.gitlab-ci.d/buildtest-template.yml' 3 4build-system-alpine: 5 extends: 6 - .native_build_job_template 7 - .native_build_artifact_template 8 needs: 9 - job: amd64-alpine-container 10 variables: 11 IMAGE: alpine 12 TARGETS: avr-softmmu loongarch64-softmmu mips64-softmmu mipsel-softmmu 13 MAKE_CHECK_ARGS: check-build 14 CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog 15 16check-system-alpine: 17 extends: .native_test_job_template 18 needs: 19 - job: build-system-alpine 20 artifacts: true 21 variables: 22 IMAGE: alpine 23 MAKE_CHECK_ARGS: check-unit check-qtest 24 25functional-system-alpine: 26 extends: .functional_test_job_template 27 needs: 28 - job: build-system-alpine 29 artifacts: true 30 variables: 31 IMAGE: alpine 32 MAKE_CHECK_ARGS: check-avocado check-functional 33 AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel 34 35build-system-ubuntu: 36 extends: 37 - .native_build_job_template 38 - .native_build_artifact_template 39 needs: 40 job: amd64-ubuntu2204-container 41 variables: 42 IMAGE: ubuntu2204 43 CONFIGURE_ARGS: --enable-docs 44 TARGETS: alpha-softmmu microblazeel-softmmu mips64el-softmmu 45 MAKE_CHECK_ARGS: check-build 46 47check-system-ubuntu: 48 extends: .native_test_job_template 49 needs: 50 - job: build-system-ubuntu 51 artifacts: true 52 variables: 53 IMAGE: ubuntu2204 54 MAKE_CHECK_ARGS: check 55 56functional-system-ubuntu: 57 extends: .functional_test_job_template 58 needs: 59 - job: build-system-ubuntu 60 artifacts: true 61 variables: 62 IMAGE: ubuntu2204 63 MAKE_CHECK_ARGS: check-avocado check-functional 64 AVOCADO_TAGS: arch:alpha arch:microblazeel arch:mips64el 65 66build-system-debian: 67 extends: 68 - .native_build_job_template 69 - .native_build_artifact_template 70 needs: 71 job: amd64-debian-container 72 variables: 73 IMAGE: debian 74 CONFIGURE_ARGS: --with-coroutine=sigaltstack 75 TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4-softmmu 76 sparc-softmmu xtensa-softmmu 77 MAKE_CHECK_ARGS: check-build 78 79check-system-debian: 80 extends: .native_test_job_template 81 needs: 82 - job: build-system-debian 83 artifacts: true 84 variables: 85 IMAGE: debian 86 MAKE_CHECK_ARGS: check 87 88functional-system-debian: 89 extends: .functional_test_job_template 90 needs: 91 - job: build-system-debian 92 artifacts: true 93 variables: 94 IMAGE: debian 95 MAKE_CHECK_ARGS: check-avocado check-functional 96 AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa 97 98crash-test-debian: 99 extends: .native_test_job_template 100 needs: 101 - job: build-system-debian 102 artifacts: true 103 variables: 104 IMAGE: debian 105 script: 106 - cd build 107 - make NINJA=":" check-venv 108 - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386 109 110build-system-fedora: 111 extends: 112 - .native_build_job_template 113 - .native_build_artifact_template 114 needs: 115 job: amd64-fedora-container 116 variables: 117 IMAGE: fedora 118 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs 119 TARGETS: microblaze-softmmu mips-softmmu 120 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu 121 MAKE_CHECK_ARGS: check-build 122 123build-system-fedora-rust-nightly: 124 extends: 125 - .native_build_job_template 126 - .native_build_artifact_template 127 needs: 128 job: amd64-fedora-rust-nightly-container 129 variables: 130 IMAGE: fedora-rust-nightly 131 CONFIGURE_ARGS: --disable-docs --enable-rust 132 TARGETS: aarch64-softmmu 133 MAKE_CHECK_ARGS: check-build 134 allow_failure: true 135 136check-system-fedora: 137 extends: .native_test_job_template 138 needs: 139 - job: build-system-fedora 140 artifacts: true 141 variables: 142 IMAGE: fedora 143 MAKE_CHECK_ARGS: check 144 145functional-system-fedora: 146 extends: .functional_test_job_template 147 needs: 148 - job: build-system-fedora 149 artifacts: true 150 variables: 151 IMAGE: fedora 152 MAKE_CHECK_ARGS: check-avocado check-functional 153 AVOCADO_TAGS: arch:microblaze arch:mips arch:xtensa arch:m68k 154 arch:riscv32 arch:ppc arch:sparc64 155 156crash-test-fedora: 157 extends: .native_test_job_template 158 needs: 159 - job: build-system-fedora 160 artifacts: true 161 variables: 162 IMAGE: fedora 163 script: 164 - cd build 165 - make NINJA=":" check-venv 166 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc 167 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32 168 169build-system-centos: 170 extends: 171 - .native_build_job_template 172 - .native_build_artifact_template 173 needs: 174 job: amd64-centos9-container 175 variables: 176 IMAGE: centos9 177 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server 178 --enable-modules --enable-trace-backends=dtrace --enable-docs 179 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu 180 x86_64-softmmu rx-softmmu sh4-softmmu 181 MAKE_CHECK_ARGS: check-build 182 183# Previous QEMU release. Used for cross-version migration tests. 184build-previous-qemu: 185 extends: .native_build_job_template 186 artifacts: 187 when: on_success 188 expire_in: 2 days 189 paths: 190 - build-previous 191 exclude: 192 - build-previous/**/*.p 193 - build-previous/**/*.a.p 194 - build-previous/**/*.c.o 195 - build-previous/**/*.c.o.d 196 needs: 197 job: amd64-opensuse-leap-container 198 variables: 199 IMAGE: opensuse-leap 200 TARGETS: x86_64-softmmu aarch64-softmmu 201 # Override the default flags as we need more to grab the old version 202 GIT_FETCH_EXTRA_FLAGS: --prune --quiet 203 before_script: 204 - source scripts/ci/gitlab-ci-section 205 - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)" 206 - git remote add upstream https://gitlab.com/qemu-project/qemu 207 - git fetch upstream refs/tags/$QEMU_PREV_VERSION:refs/tags/$QEMU_PREV_VERSION 208 - git checkout $QEMU_PREV_VERSION 209 after_script: 210 - mv build build-previous 211 212.migration-compat-common: 213 extends: .common_test_job_template 214 needs: 215 - job: build-previous-qemu 216 - job: build-system-opensuse 217 # The old QEMU could have bugs unrelated to migration that are 218 # already fixed in the current development branch, so this test 219 # might fail. 220 allow_failure: true 221 variables: 222 IMAGE: opensuse-leap 223 MAKE_CHECK_ARGS: check-build 224 script: 225 # Use the migration-tests from the older QEMU tree. This avoids 226 # testing an old QEMU against new features/tests that it is not 227 # compatible with. 228 - cd build-previous 229 # Don't allow python-based tests to run. The 230 # vmstate-checker-script test has a race that causes it to fail 231 # sometimes. It cannot be fixed it because this job runs the test 232 # from the old QEMU version. The test will be removed on master, 233 # but this job will only see the change in the next release. 234 # 235 # TODO: remove this line after 9.2 release 236 - unset PYTHON 237 # old to new 238 - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET} 239 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test 240 # new to old 241 - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET} 242 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test 243 244# This job needs to be disabled until we can have an aarch64 CPU model that 245# will both (1) support both KVM and TCG, and (2) provide a stable ABI. 246# Currently only "-cpu max" can provide (1), however it doesn't guarantee 247# (2). Mark this test skipped until later. 248migration-compat-aarch64: 249 extends: .migration-compat-common 250 variables: 251 TARGET: aarch64 252 QEMU_JOB_SKIPPED: 1 253 254migration-compat-x86_64: 255 extends: .migration-compat-common 256 variables: 257 TARGET: x86_64 258 259check-system-centos: 260 extends: .native_test_job_template 261 needs: 262 - job: build-system-centos 263 artifacts: true 264 variables: 265 IMAGE: centos9 266 MAKE_CHECK_ARGS: check 267 268functional-system-centos: 269 extends: .functional_test_job_template 270 needs: 271 - job: build-system-centos 272 artifacts: true 273 variables: 274 IMAGE: centos9 275 MAKE_CHECK_ARGS: check-avocado check-functional 276 AVOCADO_TAGS: arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx 277 arch:sh4 278 279build-system-opensuse: 280 extends: 281 - .native_build_job_template 282 - .native_build_artifact_template 283 needs: 284 job: amd64-opensuse-leap-container 285 variables: 286 IMAGE: opensuse-leap 287 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu 288 MAKE_CHECK_ARGS: check-build 289 290check-system-opensuse: 291 extends: .native_test_job_template 292 needs: 293 - job: build-system-opensuse 294 artifacts: true 295 variables: 296 IMAGE: opensuse-leap 297 MAKE_CHECK_ARGS: check 298 299functional-system-opensuse: 300 extends: .functional_test_job_template 301 needs: 302 - job: build-system-opensuse 303 artifacts: true 304 variables: 305 IMAGE: opensuse-leap 306 MAKE_CHECK_ARGS: check-avocado check-functional 307 AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64 308 309# 310# Flaky tests. We don't run these by default and they are allow fail 311# but often the CI system is the only way to trigger the failures. 312# 313 314build-system-flaky: 315 extends: 316 - .native_build_job_template 317 - .native_build_artifact_template 318 needs: 319 job: amd64-debian-container 320 variables: 321 IMAGE: debian 322 QEMU_JOB_OPTIONAL: 1 323 TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu 324 ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu 325 MAKE_CHECK_ARGS: check-build 326 327functional-system-flaky: 328 extends: .functional_test_job_template 329 needs: 330 - job: build-system-flaky 331 artifacts: true 332 allow_failure: true 333 variables: 334 IMAGE: debian 335 MAKE_CHECK_ARGS: check-avocado check-functional 336 QEMU_JOB_OPTIONAL: 1 337 QEMU_TEST_FLAKY_TESTS: 1 338 AVOCADO_TAGS: flaky 339 340# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by 341# the configure script. The container doesn't contain Xen headers so 342# Xen accelerator is not detected / selected. As result it build the 343# i386-softmmu and x86_64-softmmu with KVM being the single accelerator 344# available. 345# Also use a different coroutine implementation (which is only really of 346# interest to KVM users, i.e. with TCG disabled) 347build-tcg-disabled: 348 extends: .native_build_job_template 349 needs: 350 job: amd64-centos9-container 351 variables: 352 IMAGE: centos9 353 script: 354 - mkdir build 355 - cd build 356 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext 357 --disable-docs --disable-sdl --disable-gtk --disable-vnc 358 || { cat config.log meson-logs/meson-log.txt && exit 1; } 359 - make -j"$JOBS" 360 - make check-unit 361 - make check-qapi-schema 362 - cd tests/qemu-iotests/ 363 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048 364 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163 365 170 171 184 192 194 208 221 226 227 236 253 277 image-fleecing 366 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122 367 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202 368 208 209 216 218 227 234 246 247 248 250 254 255 257 258 369 260 261 262 263 264 270 272 273 277 279 image-fleecing 370 - cd ../.. 371 - make distclean 372 373build-user: 374 extends: .native_build_job_template 375 needs: 376 job: amd64-debian-user-cross-container 377 variables: 378 IMAGE: debian-all-test-cross 379 CONFIGURE_ARGS: --disable-tools --disable-system 380 --target-list-exclude=alpha-linux-user,sh4-linux-user 381 MAKE_CHECK_ARGS: check-tcg 382 383build-user-static: 384 extends: .native_build_job_template 385 needs: 386 job: amd64-debian-user-cross-container 387 variables: 388 IMAGE: debian-all-test-cross 389 CONFIGURE_ARGS: --disable-tools --disable-system --static 390 --target-list-exclude=alpha-linux-user,sh4-linux-user 391 MAKE_CHECK_ARGS: check-tcg 392 393# targets stuck on older compilers 394build-legacy: 395 extends: .native_build_job_template 396 needs: 397 job: amd64-debian-legacy-cross-container 398 variables: 399 IMAGE: debian-legacy-test-cross 400 TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user 401 CONFIGURE_ARGS: --disable-tools 402 MAKE_CHECK_ARGS: check-tcg 403 404build-user-hexagon: 405 extends: .native_build_job_template 406 needs: 407 job: hexagon-cross-container 408 variables: 409 IMAGE: debian-hexagon-cross 410 TARGETS: hexagon-linux-user 411 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg 412 MAKE_CHECK_ARGS: check-tcg 413 414# Build the softmmu targets we have check-tcg tests and compilers in 415# our omnibus all-test-cross container. Those targets that haven't got 416# Debian cross compiler support need to use special containers. 417build-some-softmmu: 418 extends: .native_build_job_template 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: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu 425 s390x-softmmu x86_64-softmmu 426 MAKE_CHECK_ARGS: check-tcg 427 428build-loongarch64: 429 extends: .native_build_job_template 430 needs: 431 job: loongarch-debian-cross-container 432 variables: 433 IMAGE: debian-loongarch-cross 434 CONFIGURE_ARGS: --disable-tools --enable-debug 435 TARGETS: loongarch64-linux-user loongarch64-softmmu 436 MAKE_CHECK_ARGS: check-tcg 437 438# We build tricore in a very minimal tricore only container 439build-tricore-softmmu: 440 extends: .native_build_job_template 441 needs: 442 job: tricore-debian-cross-container 443 variables: 444 IMAGE: debian-tricore-cross 445 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug 446 TARGETS: tricore-softmmu 447 MAKE_CHECK_ARGS: check-tcg 448 449clang-system: 450 extends: .native_build_job_template 451 needs: 452 job: amd64-fedora-container 453 variables: 454 IMAGE: fedora 455 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan 456 --extra-cflags=-fno-sanitize-recover=undefined 457 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu 458 MAKE_CHECK_ARGS: check-qtest check-tcg 459 460clang-user: 461 extends: .native_build_job_template 462 needs: 463 job: amd64-debian-user-cross-container 464 timeout: 70m 465 variables: 466 IMAGE: debian-all-test-cross 467 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system --enable-ubsan 468 --target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user 469 --extra-cflags=-fno-sanitize-recover=undefined 470 MAKE_CHECK_ARGS: check-unit check-tcg 471 472# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory. 473# On gitlab runners, default value sometimes end up calling 2 lds concurrently and 474# triggers an Out-Of-Memory error 475# 476# Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with 477# CFI builds, and thus have to disable it here. 478# 479# Split in three sets of build/check/avocado to limit the execution time of each 480# job 481build-cfi-aarch64: 482 extends: 483 - .native_build_job_template 484 - .native_build_artifact_template 485 needs: 486 - job: amd64-fedora-container 487 variables: 488 LD_JOBS: 1 489 AR: llvm-ar 490 IMAGE: fedora 491 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 492 --enable-safe-stack --disable-slirp 493 TARGETS: aarch64-softmmu 494 MAKE_CHECK_ARGS: check-build 495 # FIXME: This job is often failing, likely due to out-of-memory problems in 496 # the constrained containers of the shared runners. Thus this is marked as 497 # skipped until the situation has been solved. 498 QEMU_JOB_SKIPPED: 1 499 timeout: 90m 500 501check-cfi-aarch64: 502 extends: .native_test_job_template 503 needs: 504 - job: build-cfi-aarch64 505 artifacts: true 506 variables: 507 IMAGE: fedora 508 MAKE_CHECK_ARGS: check 509 510functional-cfi-aarch64: 511 extends: .functional_test_job_template 512 needs: 513 - job: build-cfi-aarch64 514 artifacts: true 515 variables: 516 IMAGE: fedora 517 MAKE_CHECK_ARGS: check-avocado check-functional 518 519build-cfi-ppc64-s390x: 520 extends: 521 - .native_build_job_template 522 - .native_build_artifact_template 523 needs: 524 - job: amd64-fedora-container 525 variables: 526 LD_JOBS: 1 527 AR: llvm-ar 528 IMAGE: fedora 529 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 530 --enable-safe-stack --disable-slirp 531 TARGETS: ppc64-softmmu s390x-softmmu 532 MAKE_CHECK_ARGS: check-build 533 # FIXME: This job is often failing, likely due to out-of-memory problems in 534 # the constrained containers of the shared runners. Thus this is marked as 535 # skipped until the situation has been solved. 536 QEMU_JOB_SKIPPED: 1 537 timeout: 80m 538 539check-cfi-ppc64-s390x: 540 extends: .native_test_job_template 541 needs: 542 - job: build-cfi-ppc64-s390x 543 artifacts: true 544 variables: 545 IMAGE: fedora 546 MAKE_CHECK_ARGS: check 547 548functional-cfi-ppc64-s390x: 549 extends: .functional_test_job_template 550 needs: 551 - job: build-cfi-ppc64-s390x 552 artifacts: true 553 variables: 554 IMAGE: fedora 555 MAKE_CHECK_ARGS: check-avocado check-functional 556 557build-cfi-x86_64: 558 extends: 559 - .native_build_job_template 560 - .native_build_artifact_template 561 needs: 562 - job: amd64-fedora-container 563 variables: 564 LD_JOBS: 1 565 AR: llvm-ar 566 IMAGE: fedora 567 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 568 --enable-safe-stack --disable-slirp 569 TARGETS: x86_64-softmmu 570 MAKE_CHECK_ARGS: check-build 571 timeout: 70m 572 573check-cfi-x86_64: 574 extends: .native_test_job_template 575 needs: 576 - job: build-cfi-x86_64 577 artifacts: true 578 variables: 579 IMAGE: fedora 580 MAKE_CHECK_ARGS: check 581 582functional-cfi-x86_64: 583 extends: .functional_test_job_template 584 needs: 585 - job: build-cfi-x86_64 586 artifacts: true 587 variables: 588 IMAGE: fedora 589 MAKE_CHECK_ARGS: check-avocado check-functional 590 591tsan-build: 592 extends: .native_build_job_template 593 needs: 594 job: amd64-ubuntu2204-container 595 variables: 596 IMAGE: ubuntu2204 597 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++ 598 --enable-trace-backends=ust --disable-slirp 599 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user 600 # Remove when we switch to a distro with clang >= 18 601 # https://github.com/google/sanitizers/issues/1716 602 MAKE: setarch -R make 603 604# gcov is a GCC features 605gcov: 606 extends: .native_build_job_template 607 needs: 608 job: amd64-ubuntu2204-container 609 timeout: 80m 610 variables: 611 IMAGE: ubuntu2204 612 CONFIGURE_ARGS: --enable-gcov 613 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu 614 MAKE_CHECK_ARGS: check-unit check-softfloat 615 after_script: 616 - cd build 617 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary 618 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p 619 coverage: /^\s*lines:\s*\d+.\d+\%/ 620 artifacts: 621 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA} 622 when: always 623 expire_in: 2 days 624 paths: 625 - build/meson-logs/testlog.txt 626 reports: 627 junit: build/meson-logs/testlog.junit.xml 628 coverage_report: 629 coverage_format: cobertura 630 path: build/coverage.xml 631 632build-oss-fuzz: 633 extends: .native_build_job_template 634 needs: 635 job: amd64-fedora-container 636 variables: 637 IMAGE: fedora 638 script: 639 - mkdir build-oss-fuzz 640 - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt 641 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" 642 ./scripts/oss-fuzz/build.sh 643 - export ASAN_OPTIONS="fast_unwind_on_malloc=0" 644 - failures=0 645 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f 646 | grep -v slirp); do 647 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; 648 echo Testing ${fuzzer} ... ; 649 "${fuzzer}" -runs=1 -seed=1 || { echo "FAILED:"" ${fuzzer} exit code is $?"; failures=$(($failures+1)); }; 650 done 651 - echo "Number of failures:"" $failures" 652 - test $failures = 0 653 654build-tci: 655 extends: .native_build_job_template 656 needs: 657 job: amd64-debian-user-cross-container 658 variables: 659 IMAGE: debian-all-test-cross 660 script: 661 - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64" 662 - mkdir build 663 - cd build 664 - ../configure --enable-tcg-interpreter --disable-kvm --disable-docs --disable-gtk --disable-vnc 665 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" 666 || { cat config.log meson-logs/meson-log.txt && exit 1; } 667 - make -j"$JOBS" 668 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test 669 - for tg in $TARGETS ; do 670 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; 671 ./tests/qtest/boot-serial-test || exit 1 ; 672 ./tests/qtest/cdrom-test || exit 1 ; 673 done 674 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test 675 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow 676 - make check-tcg 677 678# Check our reduced build configurations 679build-without-defaults: 680 extends: .native_build_job_template 681 needs: 682 job: amd64-centos9-container 683 variables: 684 IMAGE: centos9 685 CONFIGURE_ARGS: 686 --without-default-devices 687 --without-default-features 688 --disable-fdt 689 --disable-pie 690 --disable-qom-cast-debug 691 --disable-strip 692 --target-list-exclude=aarch64-softmmu,microblaze-softmmu,mips64-softmmu,mipsel-softmmu,ppc64-softmmu,sh4el-softmmu,xtensa-softmmu,x86_64-softmmu 693 MAKE_CHECK_ARGS: check 694 695build-libvhost-user: 696 extends: .base_job_template 697 stage: build 698 image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG 699 needs: 700 job: amd64-fedora-container 701 script: 702 - mkdir subprojects/libvhost-user/build 703 - cd subprojects/libvhost-user/build 704 - meson 705 - ninja 706 707# No targets are built here, just tools, docs, and unit tests. This 708# also feeds into the eventual documentation deployment steps later 709build-tools-and-docs-debian: 710 extends: 711 - .native_build_job_template 712 - .native_build_artifact_template 713 needs: 714 job: amd64-debian-container 715 # when running on 'master' we use pre-existing container 716 optional: true 717 variables: 718 IMAGE: debian 719 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope 720 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools 721 QEMU_JOB_PUBLISH: 1 722 723# Prepare for GitLab pages deployment. Anything copied into the 724# "public" directory will be deployed to $USER.gitlab.io/$PROJECT 725# 726# GitLab publishes from any branch that triggers a CI pipeline 727# 728# For the main repo we don't want to publish from 'staging' 729# since that content may not be pushed, nor do we wish to 730# publish from 'stable-NNN' branches as that content is outdated. 731# Thus we restrict to just the default branch 732# 733# For contributor forks we want to publish from any repo so 734# that users can see the results of their commits, regardless 735# of what topic branch they're currently using 736pages: 737 extends: .base_job_template 738 image: $CI_REGISTRY_IMAGE/qemu/debian:$QEMU_CI_CONTAINER_TAG 739 stage: test 740 needs: 741 - job: build-tools-and-docs-debian 742 script: 743 - mkdir -p public 744 # HTML-ised source tree 745 - make gtags 746 # We unset variables to work around a bug in some htags versions 747 # which causes it to fail when the environment is large 748 - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= htags 749 -anT --tree-view=filetree -m qemu_init 750 -t "Welcome to the QEMU sourcecode" 751 - mv HTML public/src 752 # Project documentation 753 - make -C build install DESTDIR=$(pwd)/temp-install 754 - mv temp-install/usr/local/share/doc/qemu/* public/ 755 artifacts: 756 when: on_success 757 paths: 758 - public 759 variables: 760 QEMU_JOB_PUBLISH: 1 761 762coverity: 763 image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG 764 stage: build 765 allow_failure: true 766 timeout: 3h 767 needs: 768 - job: amd64-fedora-container 769 optional: true 770 before_script: 771 - dnf install -y curl wget 772 script: 773 # would be nice to cancel the job if over quota (https://gitlab.com/gitlab-org/gitlab/-/issues/256089) 774 # for example: 775 # curl --request POST --header "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/cancel 776 - 'scripts/coverity-scan/run-coverity-scan --check-upload-only || { exitcode=$?; if test $exitcode = 1; then 777 exit 0; 778 else 779 exit $exitcode; 780 fi; }; 781 scripts/coverity-scan/run-coverity-scan --update-tools-only > update-tools.log 2>&1 || { cat update-tools.log; exit 1; }; 782 scripts/coverity-scan/run-coverity-scan --no-update-tools' 783 rules: 784 - if: '$COVERITY_TOKEN == null' 785 when: never 786 - if: '$COVERITY_EMAIL == null' 787 when: never 788 # Never included on upstream pipelines, except for schedules 789 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"' 790 when: on_success 791 - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' 792 when: never 793 # Forks don't get any pipeline unless QEMU_CI=1 or QEMU_CI=2 is set 794 - if: '$QEMU_CI != "1" && $QEMU_CI != "2"' 795 when: never 796 # Always manual on forks even if $QEMU_CI == "2" 797 - when: manual 798