# Currently we have two build stages after our containers are built:
#  - build (for traditional build and test or first stage build)
#  - test (for test stages, using build artefacts from a build stage)
stages:
  - containers
  - containers-layer2
  - build
  - test

include:
  - local: '/.gitlab-ci.d/edk2.yml'
  - local: '/.gitlab-ci.d/opensbi.yml'
  - local: '/.gitlab-ci.d/containers.yml'
  - local: '/.gitlab-ci.d/crossbuilds.yml'

.native_build_job_template: &native_build_job_definition
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  before_script:
    - JOBS=$(expr $(nproc) + 1)
  script:
    - mkdir build
    - cd build
    - if test -n "$TARGETS";
      then
        ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
      else
        ../configure --enable-werror $CONFIGURE_ARGS ;
      fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
    - make -j"$JOBS"
    - if test -n "$MAKE_CHECK_ARGS";
      then
        make -j"$JOBS" $MAKE_CHECK_ARGS ;
      fi

.native_test_job_template: &native_test_job_definition
  stage: test
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  script:
    - scripts/git-submodule.sh update
        $(grep GIT_SUBMODULES build/config-host.mak | sed 's/GIT_SUBMODULES=//')
    - cd build
    - find . -type f -exec touch {} +
    # Avoid recompiling by hiding ninja with NINJA=":"
    - make NINJA=":" $MAKE_CHECK_ARGS

.acceptance_template: &acceptance_definition
  cache:
    key: "${CI_JOB_NAME}-cache"
    paths:
      - ${CI_PROJECT_DIR}/avocado-cache
    policy: pull-push
  artifacts:
    name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
    when: always
    expire_in: 2 days
    paths:
      - build/tests/results/latest/results.xml
      - build/tests/results/latest/test-results
    reports:
      junit: build/tests/results/latest/results.xml
  before_script:
    - mkdir -p ~/.config/avocado
    - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
    - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
           >> ~/.config/avocado/avocado.conf
    - echo -e '[job.output.testlogs]\nstatuses = ["FAIL", "INTERRUPT"]'
           >> ~/.config/avocado/avocado.conf
    - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
        du -chs ${CI_PROJECT_DIR}/avocado-cache ;
      fi
    - export AVOCADO_ALLOW_UNTRUSTED_CODE=1
  after_script:
    - cd build
    - du -chs ${CI_PROJECT_DIR}/avocado-cache

build-system-alpine:
  <<: *native_build_job_definition
  variables:
    IMAGE: alpine
    TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
      moxie-softmmu microblazeel-softmmu mips64el-softmmu
    MAKE_CHECK_ARGS: check-build
    CONFIGURE_ARGS: --enable-docs
  artifacts:
    expire_in: 2 days
    paths:
      - .git-submodule-status
      - build

check-system-alpine:
  <<: *native_test_job_definition
  needs:
    - job: build-system-alpine
      artifacts: true
  variables:
    IMAGE: alpine
    MAKE_CHECK_ARGS: check

acceptance-system-alpine:
  <<: *native_test_job_definition
  needs:
    - job: build-system-alpine
      artifacts: true
  variables:
    IMAGE: alpine
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-ubuntu:
  <<: *native_build_job_definition
  needs:
    job: amd64-ubuntu2004-container
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --enable-fdt=system --enable-slirp=system
    TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
      moxie-softmmu microblazeel-softmmu mips64el-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-ubuntu:
  <<: *native_test_job_definition
  needs:
    - job: build-system-ubuntu
      artifacts: true
  variables:
    IMAGE: ubuntu2004
    MAKE_CHECK_ARGS: check

acceptance-system-ubuntu:
  <<: *native_test_job_definition
  needs:
    - job: build-system-ubuntu
      artifacts: true
  variables:
    IMAGE: ubuntu2004
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-debian:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-container
  variables:
    IMAGE: debian-amd64
    CONFIGURE_ARGS: --enable-fdt=system
    TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
      riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-debian:
  <<: *native_test_job_definition
  needs:
    - job: build-system-debian
      artifacts: true
  variables:
    IMAGE: debian-amd64
    MAKE_CHECK_ARGS: check

# No targets are built here, just tools, docs, and unit tests. This
# also feeds into the eventual documentation deployment steps later
build-tools-and-docs-debian:
  <<: *native_build_job_definition
  variables:
    IMAGE: debian-amd64
    MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
    CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
  artifacts:
    expire_in: 2 days
    paths:
      - build

acceptance-system-debian:
  <<: *native_test_job_definition
  needs:
    - job: build-system-debian
      artifacts: true
  variables:
    IMAGE: debian-amd64
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-fedora:
  <<: *native_build_job_definition
  needs:
    job: amd64-fedora-container
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
             --enable-fdt=system --enable-slirp=system --enable-capstone=system
    TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
      xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-fedora:
  <<: *native_test_job_definition
  needs:
    - job: build-system-fedora
      artifacts: true
  variables:
    IMAGE: fedora
    MAKE_CHECK_ARGS: check

acceptance-system-fedora:
  <<: *native_test_job_definition
  needs:
    - job: build-system-fedora
      artifacts: true
  variables:
    IMAGE: fedora
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-centos:
  <<: *native_build_job_definition
  needs:
    job: amd64-centos8-container
  variables:
    IMAGE: centos8
    CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system
                    --enable-modules
    TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
      x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-centos:
  <<: *native_test_job_definition
  needs:
    - job: build-system-centos
      artifacts: true
  variables:
    IMAGE: centos8
    MAKE_CHECK_ARGS: check

acceptance-system-centos:
  <<: *native_test_job_definition
  needs:
    - job: build-system-centos
      artifacts: true
  variables:
    IMAGE: centos8
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-opensuse:
  <<: *native_build_job_definition
  needs:
    job: amd64-opensuse-leap-container
  variables:
    IMAGE: opensuse-leap
    CONFIGURE_ARGS: --enable-fdt=system
    TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-opensuse:
  <<: *native_test_job_definition
  needs:
    - job: build-system-opensuse
      artifacts: true
  variables:
    IMAGE: opensuse-leap
    MAKE_CHECK_ARGS: check

acceptance-system-opensuse:
  <<: *native_test_job_definition
  needs:
    - job: build-system-opensuse
      artifacts: true
  variables:
    IMAGE: opensuse-leap
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition


build-disabled:
  <<: *native_build_job_definition
  needs:
    job: amd64-fedora-container
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS:
      --disable-attr
      --disable-auth-pam
      --disable-avx2
      --disable-bochs
      --disable-brlapi
      --disable-bzip2
      --disable-cap-ng
      --disable-capstone
      --disable-cloop
      --disable-coroutine-pool
      --disable-curl
      --disable-curses
      --disable-dmg
      --disable-docs
      --disable-gcrypt
      --disable-glusterfs
      --disable-gnutls
      --disable-gtk
      --disable-guest-agent
      --disable-iconv
      --disable-keyring
      --disable-kvm
      --disable-libiscsi
      --disable-libpmem
      --disable-libssh
      --disable-libudev
      --disable-libusb
      --disable-libxml2
      --disable-linux-aio
      --disable-live-block-migration
      --disable-lzo
      --disable-malloc-trim
      --disable-mpath
      --disable-nettle
      --disable-numa
      --disable-opengl
      --disable-parallels
      --disable-pie
      --disable-qcow1
      --disable-qed
      --disable-qom-cast-debug
      --disable-rbd
      --disable-rdma
      --disable-replication
      --disable-sdl
      --disable-seccomp
      --disable-sheepdog
      --disable-slirp
      --disable-smartcard
      --disable-snappy
      --disable-sparse
      --disable-spice
      --disable-strip
      --disable-tpm
      --disable-usb-redir
      --disable-vdi
      --disable-vhost-crypto
      --disable-vhost-net
      --disable-vhost-scsi
      --disable-vhost-kernel
      --disable-vhost-user
      --disable-vhost-vdpa
      --disable-vhost-vsock
      --disable-virglrenderer
      --disable-vnc
      --disable-vte
      --disable-vvfat
      --disable-xen
      --disable-zstd
    TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
      s390x-softmmu i386-linux-user
    MAKE_CHECK_ARGS: check-qtest SPEED=slow

# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
# the configure script. The container doesn't contain Xen headers so
# Xen accelerator is not detected / selected. As result it build the
# i386-softmmu and x86_64-softmmu with KVM being the single accelerator
# available.
build-tcg-disabled:
  <<: *native_build_job_definition
  needs:
    job: amd64-centos8-container
  variables:
    IMAGE: centos8
  script:
    - mkdir build
    - cd build
    - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
    - make -j"$JOBS"
    - make check-unit
    - make check-qapi-schema
    - cd tests/qemu-iotests/
    - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
            052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
            170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
    - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
            124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
            208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
            260 261 262 263 264 270 272 273 277 279

build-user:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --disable-system
    MAKE_CHECK_ARGS: check-tcg

build-user-static:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --disable-system --static
    MAKE_CHECK_ARGS: check-tcg

# Only build the softmmu targets we have check-tcg tests for
build-some-softmmu:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --enable-debug
    TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
    MAKE_CHECK_ARGS: check-tcg

# Run check-tcg against linux-user (with plugins)
# we skip sparc64-linux-user until it has been fixed somewhat
# we skip cris-linux-user as it doesn't use the common run loop
build-user-plugins:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
    MAKE_CHECK_ARGS: check-tcg
  timeout: 1h 30m

build-user-centos7:
  <<: *native_build_job_definition
  variables:
    IMAGE: centos7
    CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs
    MAKE_CHECK_ARGS: check-tcg

build-some-softmmu-plugins:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
    TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
    MAKE_CHECK_ARGS: check-tcg

clang-system:
  <<: *native_build_job_definition
  needs:
    job: amd64-fedora-container
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --cc=clang --cxx=clang++
      --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
    TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
      ppc-softmmu s390x-softmmu
    MAKE_CHECK_ARGS: check-qtest check-tcg

clang-user:
  <<: *native_build_job_definition
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
      --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
      --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
    MAKE_CHECK_ARGS: check-unit check-tcg

tsan-build:
  <<: *native_build_job_definition
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 --disable-docs
                    --enable-fdt=system --enable-slirp=system
    TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
    MAKE_CHECK_ARGS: bench V=1

# These targets are on the way out
build-deprecated:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-docs --disable-tools
    MAKE_CHECK_ARGS: build-tcg
    TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
      unicore32-softmmu
  artifacts:
    expire_in: 2 days
    paths:
      - build

# We split the check-tcg step as test failures are expected but we still
# want to catch the build breaking.
check-deprecated:
  <<: *native_test_job_definition
  needs:
    - job: build-deprecated
      artifacts: true
  variables:
    IMAGE: debian-all-test-cross
    MAKE_CHECK_ARGS: check-tcg
  allow_failure: true

# gprof/gcov are GCC features
gprof-gcov:
  <<: *native_build_job_definition
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --enable-gprof --enable-gcov
    MAKE_CHECK_ARGS: check
    TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
  timeout: 70m
  after_script:
    - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh

build-oss-fuzz:
  <<: *native_build_job_definition
  needs:
    job: amd64-fedora-container
  variables:
    IMAGE: fedora
  script:
    - mkdir build-oss-fuzz
    - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
      ./scripts/oss-fuzz/build.sh
    - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
    - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
                      | grep -v slirp); do
        grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
        echo Testing ${fuzzer} ... ;
        "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
      done
    # Unrelated to fuzzer: run some tests with -fsanitize=address
    - cd build-oss-fuzz && make check-qtest-i386 check-unit

build-tci:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-user-cross-container
  variables:
    IMAGE: debian-all-test-cross
  script:
    - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
    - mkdir build
    - cd build
    - ../configure --enable-tcg-interpreter
        --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
    - make -j"$JOBS"
    - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
    - for tg in $TARGETS ; do
        export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
        ./tests/qtest/boot-serial-test || exit 1 ;
        ./tests/qtest/cdrom-test || exit 1 ;
      done
    - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
    - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
    - make check-tcg

# Alternate coroutines implementations are only really of interest to KVM users
# However we can't test against KVM on Gitlab-CI so we can only run unit tests
build-coroutine-ucontext:
  <<: *native_build_job_definition
  needs:
    job: amd64-ubuntu2004-container
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --with-coroutine=ucontext --disable-tcg
    MAKE_CHECK_ARGS: check-unit

build-coroutine-sigaltstack:
  <<: *native_build_job_definition
  needs:
    job: amd64-ubuntu2004-container
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
    MAKE_CHECK_ARGS: check-unit

# Most jobs test latest gcrypt or nettle builds
#
# These jobs test old gcrypt and nettle from RHEL7
# which had some API differences.
build-crypto-old-nettle:
  <<: *native_build_job_definition
  needs:
    job: amd64-centos7-container
  variables:
    IMAGE: centos7
    TARGETS: x86_64-softmmu x86_64-linux-user
    CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
    MAKE_CHECK_ARGS: check-build
  artifacts:
    paths:
      - build

check-crypto-old-nettle:
  <<: *native_test_job_definition
  needs:
    - job: build-crypto-old-nettle
      artifacts: true
  variables:
    IMAGE: centos7
    MAKE_CHECK_ARGS: check


build-crypto-old-gcrypt:
  <<: *native_build_job_definition
  needs:
    job: amd64-centos7-container
  variables:
    IMAGE: centos7
    TARGETS: x86_64-softmmu x86_64-linux-user
    CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
    MAKE_CHECK_ARGS: check-build
  artifacts:
    paths:
      - build

check-crypto-old-gcrypt:
  <<: *native_test_job_definition
  needs:
    - job: build-crypto-old-gcrypt
      artifacts: true
  variables:
    IMAGE: centos7
    MAKE_CHECK_ARGS: check


build-crypto-only-gnutls:
  <<: *native_build_job_definition
  needs:
    job: amd64-centos7-container
  variables:
    IMAGE: centos7
    TARGETS: x86_64-softmmu x86_64-linux-user
    CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
    MAKE_CHECK_ARGS: check-build
  artifacts:
    paths:
      - build

check-crypto-only-gnutls:
  <<: *native_test_job_definition
  needs:
    - job: build-crypto-only-gnutls
      artifacts: true
  variables:
    IMAGE: centos7
    MAKE_CHECK_ARGS: check

# We don't need to exercise every backend with every front-end
build-trace-multi-user:
  <<: *native_build_job_definition
  needs:
    job: amd64-ubuntu2004-container
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system

build-trace-ftrace-system:
  <<: *native_build_job_definition
  needs:
    job: amd64-ubuntu2004-container
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu

build-trace-ust-system:
  <<: *native_build_job_definition
  needs:
    job: amd64-ubuntu2004-container
  variables:
    IMAGE: ubuntu2004
    CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu

# Check our reduced build configurations
build-without-default-devices:
  <<: *native_build_job_definition
  needs:
    job: amd64-centos8-container
  variables:
    IMAGE: centos8
    CONFIGURE_ARGS: --without-default-devices --disable-user

build-without-default-features:
  <<: *native_build_job_definition
  needs:
    job: amd64-debian-container
  variables:
    IMAGE: debian-amd64
    CONFIGURE_ARGS: --without-default-features --disable-user
        --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu
    MAKE_CHECK_ARGS: check-unit

check-patch:
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
  needs:
    job: amd64-centos8-container
  script: .gitlab-ci.d/check-patch.py
  except:
    variables:
      - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
  variables:
    GIT_DEPTH: 1000
  allow_failure: true

check-dco:
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
  needs:
    job: amd64-centos8-container
  script: .gitlab-ci.d/check-dco.py
  except:
    variables:
      - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
  variables:
    GIT_DEPTH: 1000

build-libvhost-user:
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
  needs:
    job: amd64-fedora-container
  before_script:
    - dnf install -y meson ninja-build
  script:
    - mkdir subprojects/libvhost-user/build
    - cd subprojects/libvhost-user/build
    - meson
    - ninja

# Prepare for GitLab pages deployment. Anything copied into the
# "public" directory will be deployed to $USER.gitlab.io/$PROJECT
pages:
  image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
  stage: test
  needs:
    - job: build-tools-and-docs-debian
  script:
    - mkdir -p public
    # HTML-ised source tree
    - make gtags
    - htags -anT --tree-view=filetree -m qemu_init
        -t "Welcome to the QEMU sourcecode"
    - mv HTML public/src
    # Project documentation
    - make -C build install DESTDIR=$(pwd)/temp-install
    - mv temp-install/usr/local/share/doc/qemu/* public/
  artifacts:
    paths:
      - public
