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