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