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 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 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 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 132functional-system-fedora: 133 extends: .functional_test_job_template 134 needs: 135 - job: build-system-fedora 136 artifacts: true 137 variables: 138 IMAGE: fedora 139 MAKE_CHECK_ARGS: check-avocado check-functional 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 - source scripts/ci/gitlab-ci-section 192 - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)" 193 - git remote add upstream https://gitlab.com/qemu-project/qemu 194 - git fetch upstream refs/tags/$QEMU_PREV_VERSION:refs/tags/$QEMU_PREV_VERSION 195 - git checkout $QEMU_PREV_VERSION 196 after_script: 197 - mv build build-previous 198 199.migration-compat-common: 200 extends: .common_test_job_template 201 needs: 202 - job: build-previous-qemu 203 - job: build-system-opensuse 204 # The old QEMU could have bugs unrelated to migration that are 205 # already fixed in the current development branch, so this test 206 # might fail. 207 allow_failure: true 208 variables: 209 IMAGE: opensuse-leap 210 MAKE_CHECK_ARGS: check-build 211 script: 212 # Use the migration-tests from the older QEMU tree. This avoids 213 # testing an old QEMU against new features/tests that it is not 214 # compatible with. 215 - cd build-previous 216 # Don't allow python-based tests to run. The 217 # vmstate-checker-script test has a race that causes it to fail 218 # sometimes. It cannot be fixed it because this job runs the test 219 # from the old QEMU version. The test will be removed on master, 220 # but this job will only see the change in the next release. 221 # 222 # TODO: remove this line after 9.2 release 223 - unset PYTHON 224 # old to new 225 - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET} 226 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test 227 # new to old 228 - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET} 229 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test 230 231# This job needs to be disabled until we can have an aarch64 CPU model that 232# will both (1) support both KVM and TCG, and (2) provide a stable ABI. 233# Currently only "-cpu max" can provide (1), however it doesn't guarantee 234# (2). Mark this test skipped until later. 235migration-compat-aarch64: 236 extends: .migration-compat-common 237 variables: 238 TARGET: aarch64 239 QEMU_JOB_SKIPPED: 1 240 241migration-compat-x86_64: 242 extends: .migration-compat-common 243 variables: 244 TARGET: x86_64 245 246check-system-centos: 247 extends: .native_test_job_template 248 needs: 249 - job: build-system-centos 250 artifacts: true 251 variables: 252 IMAGE: centos9 253 MAKE_CHECK_ARGS: check 254 255functional-system-centos: 256 extends: .functional_test_job_template 257 needs: 258 - job: build-system-centos 259 artifacts: true 260 variables: 261 IMAGE: centos9 262 MAKE_CHECK_ARGS: check-avocado check-functional 263 AVOCADO_TAGS: arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx 264 arch:sh4 265 266build-system-opensuse: 267 extends: 268 - .native_build_job_template 269 - .native_build_artifact_template 270 needs: 271 job: amd64-opensuse-leap-container 272 variables: 273 IMAGE: opensuse-leap 274 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu 275 MAKE_CHECK_ARGS: check-build 276 277check-system-opensuse: 278 extends: .native_test_job_template 279 needs: 280 - job: build-system-opensuse 281 artifacts: true 282 variables: 283 IMAGE: opensuse-leap 284 MAKE_CHECK_ARGS: check 285 286functional-system-opensuse: 287 extends: .functional_test_job_template 288 needs: 289 - job: build-system-opensuse 290 artifacts: true 291 variables: 292 IMAGE: opensuse-leap 293 MAKE_CHECK_ARGS: check-avocado check-functional 294 AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64 295 296# 297# Flaky tests. We don't run these by default and they are allow fail 298# but often the CI system is the only way to trigger the failures. 299# 300 301build-system-flaky: 302 extends: 303 - .native_build_job_template 304 - .native_build_artifact_template 305 needs: 306 job: amd64-debian-container 307 variables: 308 IMAGE: debian 309 QEMU_JOB_OPTIONAL: 1 310 TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu 311 ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu 312 MAKE_CHECK_ARGS: check-build 313 314functional-system-flaky: 315 extends: .functional_test_job_template 316 needs: 317 - job: build-system-flaky 318 artifacts: true 319 allow_failure: true 320 variables: 321 IMAGE: debian 322 MAKE_CHECK_ARGS: check-avocado check-functional 323 QEMU_JOB_OPTIONAL: 1 324 QEMU_TEST_FLAKY_TESTS: 1 325 AVOCADO_TAGS: flaky 326 327# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by 328# the configure script. The container doesn't contain Xen headers so 329# Xen accelerator is not detected / selected. As result it build the 330# i386-softmmu and x86_64-softmmu with KVM being the single accelerator 331# available. 332# Also use a different coroutine implementation (which is only really of 333# interest to KVM users, i.e. with TCG disabled) 334build-tcg-disabled: 335 extends: .native_build_job_template 336 needs: 337 job: amd64-centos9-container 338 variables: 339 IMAGE: centos9 340 script: 341 - mkdir build 342 - cd build 343 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext 344 --disable-docs --disable-sdl --disable-gtk --disable-vnc 345 || { cat config.log meson-logs/meson-log.txt && exit 1; } 346 - make -j"$JOBS" 347 - make check-unit 348 - make check-qapi-schema 349 - cd tests/qemu-iotests/ 350 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048 351 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163 352 170 171 184 192 194 208 221 226 227 236 253 277 image-fleecing 353 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122 354 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202 355 208 209 216 218 227 234 246 247 248 250 254 255 257 258 356 260 261 262 263 264 270 272 273 277 279 image-fleecing 357 - cd ../.. 358 - make distclean 359 360build-user: 361 extends: .native_build_job_template 362 needs: 363 job: amd64-debian-user-cross-container 364 variables: 365 IMAGE: debian-all-test-cross 366 CONFIGURE_ARGS: --disable-tools --disable-system 367 --target-list-exclude=alpha-linux-user,sh4-linux-user 368 MAKE_CHECK_ARGS: check-tcg 369 370build-user-static: 371 extends: .native_build_job_template 372 needs: 373 job: amd64-debian-user-cross-container 374 variables: 375 IMAGE: debian-all-test-cross 376 CONFIGURE_ARGS: --disable-tools --disable-system --static 377 --target-list-exclude=alpha-linux-user,sh4-linux-user 378 MAKE_CHECK_ARGS: check-tcg 379 380# targets stuck on older compilers 381build-legacy: 382 extends: .native_build_job_template 383 needs: 384 job: amd64-debian-legacy-cross-container 385 variables: 386 IMAGE: debian-legacy-test-cross 387 TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user 388 CONFIGURE_ARGS: --disable-tools 389 MAKE_CHECK_ARGS: check-tcg 390 391build-user-hexagon: 392 extends: .native_build_job_template 393 needs: 394 job: hexagon-cross-container 395 variables: 396 IMAGE: debian-hexagon-cross 397 TARGETS: hexagon-linux-user 398 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg 399 MAKE_CHECK_ARGS: check-tcg 400 401# Build the softmmu targets we have check-tcg tests and compilers in 402# our omnibus all-test-cross container. Those targets that haven't got 403# Debian cross compiler support need to use special containers. 404build-some-softmmu: 405 extends: .native_build_job_template 406 needs: 407 job: amd64-debian-user-cross-container 408 variables: 409 IMAGE: debian-all-test-cross 410 CONFIGURE_ARGS: --disable-tools --enable-debug 411 TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu 412 s390x-softmmu x86_64-softmmu 413 MAKE_CHECK_ARGS: check-tcg 414 415build-loongarch64: 416 extends: .native_build_job_template 417 needs: 418 job: loongarch-debian-cross-container 419 variables: 420 IMAGE: debian-loongarch-cross 421 CONFIGURE_ARGS: --disable-tools --enable-debug 422 TARGETS: loongarch64-linux-user loongarch64-softmmu 423 MAKE_CHECK_ARGS: check-tcg 424 425# We build tricore in a very minimal tricore only container 426build-tricore-softmmu: 427 extends: .native_build_job_template 428 needs: 429 job: tricore-debian-cross-container 430 variables: 431 IMAGE: debian-tricore-cross 432 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug 433 TARGETS: tricore-softmmu 434 MAKE_CHECK_ARGS: check-tcg 435 436clang-system: 437 extends: .native_build_job_template 438 needs: 439 job: amd64-fedora-container 440 variables: 441 IMAGE: fedora 442 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan 443 --extra-cflags=-fno-sanitize-recover=undefined 444 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu 445 MAKE_CHECK_ARGS: check-qtest check-tcg 446 447clang-user: 448 extends: .native_build_job_template 449 needs: 450 job: amd64-debian-user-cross-container 451 timeout: 70m 452 variables: 453 IMAGE: debian-all-test-cross 454 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system --enable-ubsan 455 --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 456 --extra-cflags=-fno-sanitize-recover=undefined 457 MAKE_CHECK_ARGS: check-unit check-tcg 458 459# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory. 460# On gitlab runners, default value sometimes end up calling 2 lds concurrently and 461# triggers an Out-Of-Memory error 462# 463# Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with 464# CFI builds, and thus have to disable it here. 465# 466# Split in three sets of build/check/avocado to limit the execution time of each 467# job 468build-cfi-aarch64: 469 extends: 470 - .native_build_job_template 471 - .native_build_artifact_template 472 needs: 473 - job: amd64-fedora-container 474 variables: 475 LD_JOBS: 1 476 AR: llvm-ar 477 IMAGE: fedora 478 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 479 --enable-safe-stack --disable-slirp 480 TARGETS: aarch64-softmmu 481 MAKE_CHECK_ARGS: check-build 482 # FIXME: This job is often failing, likely due to out-of-memory problems in 483 # the constrained containers of the shared runners. Thus this is marked as 484 # skipped until the situation has been solved. 485 QEMU_JOB_SKIPPED: 1 486 timeout: 90m 487 488check-cfi-aarch64: 489 extends: .native_test_job_template 490 needs: 491 - job: build-cfi-aarch64 492 artifacts: true 493 variables: 494 IMAGE: fedora 495 MAKE_CHECK_ARGS: check 496 497functional-cfi-aarch64: 498 extends: .functional_test_job_template 499 needs: 500 - job: build-cfi-aarch64 501 artifacts: true 502 variables: 503 IMAGE: fedora 504 MAKE_CHECK_ARGS: check-avocado check-functional 505 506build-cfi-ppc64-s390x: 507 extends: 508 - .native_build_job_template 509 - .native_build_artifact_template 510 needs: 511 - job: amd64-fedora-container 512 variables: 513 LD_JOBS: 1 514 AR: llvm-ar 515 IMAGE: fedora 516 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 517 --enable-safe-stack --disable-slirp 518 TARGETS: ppc64-softmmu s390x-softmmu 519 MAKE_CHECK_ARGS: check-build 520 # FIXME: This job is often failing, likely due to out-of-memory problems in 521 # the constrained containers of the shared runners. Thus this is marked as 522 # skipped until the situation has been solved. 523 QEMU_JOB_SKIPPED: 1 524 timeout: 80m 525 526check-cfi-ppc64-s390x: 527 extends: .native_test_job_template 528 needs: 529 - job: build-cfi-ppc64-s390x 530 artifacts: true 531 variables: 532 IMAGE: fedora 533 MAKE_CHECK_ARGS: check 534 535functional-cfi-ppc64-s390x: 536 extends: .functional_test_job_template 537 needs: 538 - job: build-cfi-ppc64-s390x 539 artifacts: true 540 variables: 541 IMAGE: fedora 542 MAKE_CHECK_ARGS: check-avocado check-functional 543 544build-cfi-x86_64: 545 extends: 546 - .native_build_job_template 547 - .native_build_artifact_template 548 needs: 549 - job: amd64-fedora-container 550 variables: 551 LD_JOBS: 1 552 AR: llvm-ar 553 IMAGE: fedora 554 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 555 --enable-safe-stack --disable-slirp 556 TARGETS: x86_64-softmmu 557 MAKE_CHECK_ARGS: check-build 558 timeout: 70m 559 560check-cfi-x86_64: 561 extends: .native_test_job_template 562 needs: 563 - job: build-cfi-x86_64 564 artifacts: true 565 variables: 566 IMAGE: fedora 567 MAKE_CHECK_ARGS: check 568 569functional-cfi-x86_64: 570 extends: .functional_test_job_template 571 needs: 572 - job: build-cfi-x86_64 573 artifacts: true 574 variables: 575 IMAGE: fedora 576 MAKE_CHECK_ARGS: check-avocado check-functional 577 578tsan-build: 579 extends: .native_build_job_template 580 needs: 581 job: amd64-ubuntu2204-container 582 variables: 583 IMAGE: ubuntu2204 584 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++ 585 --enable-trace-backends=ust --disable-slirp 586 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user 587 # Remove when we switch to a distro with clang >= 18 588 # https://github.com/google/sanitizers/issues/1716 589 MAKE: setarch -R make 590 591# gcov is a GCC features 592gcov: 593 extends: .native_build_job_template 594 needs: 595 job: amd64-ubuntu2204-container 596 timeout: 80m 597 variables: 598 IMAGE: ubuntu2204 599 CONFIGURE_ARGS: --enable-gcov 600 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu 601 MAKE_CHECK_ARGS: check-unit check-softfloat 602 after_script: 603 - cd build 604 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary 605 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p 606 coverage: /^\s*lines:\s*\d+.\d+\%/ 607 artifacts: 608 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA} 609 when: always 610 expire_in: 2 days 611 paths: 612 - build/meson-logs/testlog.txt 613 reports: 614 junit: build/meson-logs/testlog.junit.xml 615 coverage_report: 616 coverage_format: cobertura 617 path: build/coverage.xml 618 619build-oss-fuzz: 620 extends: .native_build_job_template 621 needs: 622 job: amd64-fedora-container 623 variables: 624 IMAGE: fedora 625 script: 626 - mkdir build-oss-fuzz 627 - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt 628 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" 629 ./scripts/oss-fuzz/build.sh 630 - export ASAN_OPTIONS="fast_unwind_on_malloc=0" 631 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f 632 | grep -v slirp); do 633 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; 634 echo Testing ${fuzzer} ... ; 635 "${fuzzer}" -runs=1 -seed=1 || exit 1 ; 636 done 637 638build-tci: 639 extends: .native_build_job_template 640 needs: 641 job: amd64-debian-user-cross-container 642 variables: 643 IMAGE: debian-all-test-cross 644 script: 645 - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64" 646 - mkdir build 647 - cd build 648 - ../configure --enable-tcg-interpreter --disable-kvm --disable-docs --disable-gtk --disable-vnc 649 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" 650 || { cat config.log meson-logs/meson-log.txt && exit 1; } 651 - make -j"$JOBS" 652 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test 653 - for tg in $TARGETS ; do 654 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; 655 ./tests/qtest/boot-serial-test || exit 1 ; 656 ./tests/qtest/cdrom-test || exit 1 ; 657 done 658 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test 659 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow 660 - make check-tcg 661 662# Check our reduced build configurations 663build-without-defaults: 664 extends: .native_build_job_template 665 needs: 666 job: amd64-centos9-container 667 variables: 668 IMAGE: centos9 669 CONFIGURE_ARGS: 670 --without-default-devices 671 --without-default-features 672 --disable-fdt 673 --disable-pie 674 --disable-qom-cast-debug 675 --disable-strip 676 --target-list-exclude=aarch64-softmmu,microblaze-softmmu,mips64-softmmu,mipsel-softmmu,ppc64-softmmu,sh4el-softmmu,xtensa-softmmu,x86_64-softmmu 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