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)
10 # We assume GitLab has it's own caching set up for RPM/APT repositories so we
11 # just take care of avocado assets here.
14 - $HOME/avocado/data/cache
17 - local: '/.gitlab-ci.d/edk2.yml'
18 - local: '/.gitlab-ci.d/opensbi.yml'
19 - local: '/.gitlab-ci.d/containers.yml'
20 - local: '/.gitlab-ci.d/crossbuilds.yml'
22 .native_build_job_template: &native_build_job_definition
24 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
26 - JOBS=$(expr $(nproc) + 1)
30 - if test -n "$TARGETS";
32 ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
34 ../configure --enable-werror $CONFIGURE_ARGS ;
37 - if test -n "$MAKE_CHECK_ARGS";
39 make -j"$JOBS" $MAKE_CHECK_ARGS ;
42 .native_test_job_template: &native_test_job_definition
44 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
47 - find . -type f -exec touch {} +
48 - make $MAKE_CHECK_ARGS
50 .acceptance_template: &acceptance_definition
52 key: "${CI_JOB_NAME}-cache"
54 - ${CI_PROJECT_DIR}/avocado-cache
57 - mkdir -p ~/.config/avocado
58 - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
59 - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
60 >> ~/.config/avocado/avocado.conf
61 - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
62 du -chs ${CI_PROJECT_DIR}/avocado-cache ;
66 - 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
67 - du -chs ${CI_PROJECT_DIR}/avocado-cache
70 <<: *native_build_job_definition
73 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
74 moxie-softmmu microblazeel-softmmu mips64el-softmmu
75 MAKE_CHECK_ARGS: check-build
82 <<: *native_test_job_definition
84 - job: build-system-ubuntu
88 MAKE_CHECK_ARGS: check
90 acceptance-system-ubuntu:
91 <<: *native_test_job_definition
93 - job: build-system-ubuntu
97 MAKE_CHECK_ARGS: check-acceptance
98 <<: *acceptance_definition
101 <<: *native_build_job_definition
104 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
105 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
106 MAKE_CHECK_ARGS: check-build
113 <<: *native_test_job_definition
115 - job: build-system-debian
119 MAKE_CHECK_ARGS: check
121 acceptance-system-debian:
122 <<: *native_test_job_definition
124 - job: build-system-debian
128 MAKE_CHECK_ARGS: check-acceptance
129 <<: *acceptance_definition
132 <<: *native_build_job_definition
135 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
136 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
137 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
138 MAKE_CHECK_ARGS: check-build
145 <<: *native_test_job_definition
147 - job: build-system-fedora
151 MAKE_CHECK_ARGS: check
153 acceptance-system-fedora:
154 <<: *native_test_job_definition
156 - job: build-system-fedora
160 MAKE_CHECK_ARGS: check-acceptance
161 <<: *acceptance_definition
164 <<: *native_build_job_definition
167 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
168 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
169 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
170 MAKE_CHECK_ARGS: check-build
177 <<: *native_test_job_definition
179 - job: build-system-centos
183 MAKE_CHECK_ARGS: check
185 acceptance-system-centos:
186 <<: *native_test_job_definition
188 - job: build-system-centos
192 MAKE_CHECK_ARGS: check-acceptance
193 <<: *acceptance_definition
196 <<: *native_build_job_definition
199 CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs
200 --disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone
201 --disable-cloop --disable-coroutine-pool --disable-curl --disable-curses
202 --disable-dmg --disable-docs --disable-glusterfs --disable-gnutls
203 --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm
204 --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb
205 --disable-libxml2 --disable-linux-aio --disable-live-block-migration
206 --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle
207 --disable-numa --disable-parallels --disable-pie --disable-qcow1
208 --disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma
209 --disable-replication --disable-sdl --disable-seccomp --disable-sheepdog
210 --disable-slirp --disable-smartcard --disable-snappy --disable-spice
211 --disable-strip --disable-tpm --disable-usb-redir --disable-vdi
212 --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi
213 --disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock
214 --disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat
215 --disable-xen --disable-zstd
216 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
217 s390x-softmmu i386-linux-user
218 MAKE_CHECK_ARGS: check-qtest SPEED=slow
221 <<: *native_build_job_definition
227 - ../configure --disable-tcg --audio-drv-list=""
230 - make check-qapi-schema
231 - cd tests/qemu-iotests/
232 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
233 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
234 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
235 - ./check -qcow2 028 051 056 057 058 065 067 068 082 085 091 095 096 102 122
236 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
237 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
238 260 261 262 263 264 270 272 273 277 279
241 <<: *native_build_job_definition
243 IMAGE: debian-all-test-cross
244 CONFIGURE_ARGS: --disable-tools --disable-system
245 MAKE_CHECK_ARGS: check-tcg
247 # Run check-tcg against linux-user (with plugins)
248 # we skip sparc64-linux-user until it has been fixed somewhat
249 # we skip cris-linux-user as it doesn't use the common run loop
251 <<: *native_build_job_definition
253 IMAGE: debian-all-test-cross
254 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
255 MAKE_CHECK_ARGS: check-tcg
259 <<: *native_build_job_definition
262 CONFIGURE_ARGS: --cc=clang --cxx=clang++
263 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
264 ppc-softmmu s390x-softmmu arm-linux-user
265 MAKE_CHECK_ARGS: check
267 # These targets are on the way out
269 <<: *native_build_job_definition
271 IMAGE: debian-all-test-cross
272 CONFIGURE_ARGS: --disable-docs --disable-tools
273 MAKE_CHECK_ARGS: build-tcg
274 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
281 # We split the check-tcg step as test failures are expected but we still
282 # want to catch the build breaking.
284 <<: *native_test_job_definition
286 - job: build-deprecated
289 IMAGE: debian-all-test-cross
290 MAKE_CHECK_ARGS: check-tcg
294 <<: *native_build_job_definition
298 - mkdir build-oss-fuzz
299 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
300 ./scripts/oss-fuzz/build.sh
301 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
302 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
304 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
305 echo Testing ${fuzzer} ... ;
306 "${fuzzer}" -runs=1000 -seed=1 || exit 1 ;
308 # Unrelated to fuzzer: run some tests with -fsanitize=address
309 - cd build-oss-fuzz && make check-qtest-i386 check-unit
312 <<: *native_build_job_definition
316 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
319 - ../configure --enable-tcg-interpreter
320 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
322 - make run-tcg-tests-x86_64-softmmu
323 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
324 - for tg in $TARGETS ; do
325 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
326 ./tests/qtest/boot-serial-test || exit 1 ;
327 ./tests/qtest/cdrom-test || exit 1 ;
329 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
330 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
332 # Most jobs test latest gcrypt or nettle builds
334 # These jobs test old gcrypt and nettle from RHEL7
335 # which had some API differences.
336 build-crypto-old-nettle:
337 <<: *native_build_job_definition
340 TARGETS: x86_64-softmmu x86_64-linux-user
341 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
342 MAKE_CHECK_ARGS: check-build
347 check-crypto-old-nettle:
348 <<: *native_test_job_definition
350 - job: build-crypto-old-nettle
354 MAKE_CHECK_ARGS: check
357 build-crypto-old-gcrypt:
358 <<: *native_build_job_definition
361 TARGETS: x86_64-softmmu x86_64-linux-user
362 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
363 MAKE_CHECK_ARGS: check-build
368 check-crypto-old-gcrypt:
369 <<: *native_test_job_definition
371 - job: build-crypto-old-gcrypt
375 MAKE_CHECK_ARGS: check
378 build-crypto-only-gnutls:
379 <<: *native_build_job_definition
382 TARGETS: x86_64-softmmu x86_64-linux-user
383 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
384 MAKE_CHECK_ARGS: check-build
389 check-crypto-only-gnutls:
390 <<: *native_test_job_definition
392 - job: build-crypto-only-gnutls
396 MAKE_CHECK_ARGS: check