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