xref: /qemu/.gitlab-ci.yml (revision ac6d7074)
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