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