-# 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
-
-# We assume GitLab has it's own caching set up for RPM/APT repositories so we
-# just take care of avocado assets here.
-cache:
- paths:
- - $HOME/avocado/data/cache
-
-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
- - 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:
- - cd build
- - find . -type f -exec touch {} +
- - make $MAKE_CHECK_ARGS
-
-.acceptance_template: &acceptance_definition
- cache:
- key: "${CI_JOB_NAME}-cache"
- paths:
- - ${CI_PROJECT_DIR}/avocado-cache
- policy: pull-push
- 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
- - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
- du -chs ${CI_PROJECT_DIR}/avocado-cache ;
- fi
- after_script:
- - cd build
- - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP")]' | xargs cat
- - du -chs ${CI_PROJECT_DIR}/avocado-cache
-
-build-system-ubuntu:
- <<: *native_build_job_definition
- variables:
- IMAGE: ubuntu2004
- 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
- variables:
- IMAGE: debian-amd64
- 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
-
-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
- variables:
- IMAGE: fedora
- CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
- 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
- variables:
- IMAGE: centos8
- CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
- 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-disabled:
- <<: *native_build_job_definition
- variables:
- IMAGE: fedora
- CONFIGURE_ARGS: --disable-attr --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-glusterfs --disable-gnutls
- --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm
- --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb
- --disable-libxml2 --disable-linux-aio --disable-live-block-migration
- --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle
- --disable-numa --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-spice
- --disable-strip --disable-tpm --disable-usb-redir --disable-vdi
- --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi
- --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
-
-build-tcg-disabled:
- <<: *native_build_job_definition
- variables:
- IMAGE: centos8
- script:
- - mkdir build
- - cd build
- - ../configure --disable-tcg --audio-drv-list=""
- - 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 067 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
- variables:
- IMAGE: debian-all-test-cross
- CONFIGURE_ARGS: --disable-tools --disable-system
- 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
- 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-clang:
- <<: *native_build_job_definition
- variables:
- IMAGE: fedora
- CONFIGURE_ARGS: --cc=clang --cxx=clang++
- TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
- ppc-softmmu s390x-softmmu arm-linux-user
- MAKE_CHECK_ARGS: check
-
-# These targets are on the way out
-build-deprecated:
- <<: *native_build_job_definition
- 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
-
-build-oss-fuzz:
- <<: *native_build_job_definition
- 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
- variables:
- IMAGE: fedora
- 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)"
- - make -j"$JOBS"
- - make run-tcg-tests-x86_64-softmmu
- - 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
-
-# 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
- 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
- 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
- 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
+# This is the GitLab CI configuration file for the mainstream QEMU
+# project: https://gitlab.com/qemu-project/qemu/-/pipelines
+#
+# !!! DO NOT ADD ANY NEW CONFIGURATION TO THIS FILE !!!
+#
+# Only documentation or comments is accepted.
+#
+# To use a different set of jobs than the mainstream QEMU project,
+# you need to set the location of your custom yml file at "custom CI/CD
+# configuration path", on your GitLab CI namespace:
+# https://docs.gitlab.com/ee/ci/pipelines/settings.html#custom-cicd-configuration-path
+#
+# ----------------------------------------------------------------------
+#
+# QEMU CI jobs are based on templates. Some templates provide
+# user-configurable options, modifiable via configuration variables.
+#
+# See https://qemu-project.gitlab.io/qemu/devel/ci.html#custom-ci-cd-variables
+# for more information.
+#
-check-crypto-only-gnutls:
- <<: *native_test_job_definition
- needs:
- - job: build-crypto-only-gnutls
- artifacts: true
- variables:
- IMAGE: centos7
- MAKE_CHECK_ARGS: check
+include:
+ - local: '/.gitlab-ci.d/qemu-project.yml'