mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 09:55:55 +00:00
![Thomas Huth](/assets/img/avatar_default.png)
In commit6957fd98dc
("gitlab: add avocado asset caching") we tried to save the Avocado cache (as in commitc1073e44b4
with Travis-CI) however it doesn't work as expected. For some reason Avocado uses /root/avocado_cache/ which we can not select later. Manually generate a Avocado config to force the use of the current job's directory. This patch is based on an earlier version from Philippe Mathieu-Daudé. Message-Id: <20200730141326.8260-5-thuth@redhat.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com>
274 lines
8 KiB
YAML
274 lines
8 KiB
YAML
# 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
|
|
- containers-layer3
|
|
- 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'
|
|
|
|
.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:
|
|
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:
|
|
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
|
|
TARGETS: tricore-softmmu unicore32-softmmu microblaze-softmmu mips-softmmu
|
|
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
|
MAKE_CHECK_ARGS: check-build
|
|
artifacts:
|
|
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
|
|
TARGETS: ppc64-softmmu lm32-softmmu or1k-softmmu s390x-softmmu
|
|
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
|
MAKE_CHECK_ARGS: check-build
|
|
artifacts:
|
|
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-rdma --disable-slirp --disable-curl
|
|
--disable-capstone --disable-live-block-migration --disable-glusterfs
|
|
--disable-replication --disable-coroutine-pool --disable-smartcard
|
|
--disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm
|
|
--disable-qom-cast-debug --disable-spice --disable-vhost-vsock
|
|
--disable-vhost-net --disable-vhost-crypto --disable-vhost-user
|
|
TARGETS: i386-softmmu ppc64-softmmu mips64-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
|
|
|
|
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
|
|
|
|
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
|
|
- 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} ... ;
|
|
ASAN_OPTIONS="fast_unwind_on_malloc=0"
|
|
"${fuzzer}" -runs=1000 -seed=1 || exit 1 ;
|
|
done
|
|
|
|
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="${tg}-softmmu/qemu-system-${tg}" ;
|
|
./tests/qtest/boot-serial-test || exit 1 ;
|
|
./tests/qtest/cdrom-test || exit 1 ;
|
|
done
|
|
- QTEST_QEMU_BINARY="x86_64-softmmu/qemu-system-x86_64" ./tests/qtest/pxe-test
|
|
- QTEST_QEMU_BINARY="s390x-softmmu/qemu-system-s390x" ./tests/qtest/pxe-test -m slow
|