]> git.proxmox.com Git - mirror_qemu.git/blame - .gitlab-ci.yml
qdev: Wrap getters and setters in separate helpers
[mirror_qemu.git] / .gitlab-ci.yml
CommitLineData
c5008c76
AB
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)
d0caa0a8
DB
4stages:
5 - containers
fa821f23 6 - containers-layer2
d0caa0a8 7 - build
c5008c76 8 - test
d0caa0a8 9
71920809 10include:
922febe2
TH
11 - local: '/.gitlab-ci.d/edk2.yml'
12 - local: '/.gitlab-ci.d/opensbi.yml'
fa821f23 13 - local: '/.gitlab-ci.d/containers.yml'
6bcb5fc0 14 - local: '/.gitlab-ci.d/crossbuilds.yml'
71920809 15
c962864f
DB
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)
8d77ce1d 21 - sed -i s,git.qemu.org/git,gitlab.com/qemu-project, .gitmodules
c962864f
DB
22 script:
23 - mkdir build
24 - cd build
25 - if test -n "$TARGETS";
26 then
27 ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
28 else
29 ../configure --enable-werror $CONFIGURE_ARGS ;
c47110d9 30 fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
c962864f 31 - make -j"$JOBS"
c5008c76
AB
32 - if test -n "$MAKE_CHECK_ARGS";
33 then
a6eeac3b 34 make -j"$JOBS" $MAKE_CHECK_ARGS ;
c5008c76
AB
35 fi
36
37.native_test_job_template: &native_test_job_definition
38 stage: test
39 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
40 script:
41 - cd build
42 - find . -type f -exec touch {} +
43 - make $MAKE_CHECK_ARGS
44
5896c539
TH
45.acceptance_template: &acceptance_definition
46 cache:
47 key: "${CI_JOB_NAME}-cache"
48 paths:
49 - ${CI_PROJECT_DIR}/avocado-cache
50 policy: pull-push
ec4d2feb
CR
51 artifacts:
52 paths:
53 - build/tests/results/latest/results.xml
54 reports:
55 junit: build/tests/results/latest/results.xml
5896c539
TH
56 before_script:
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 ;
63 fi
67202bae 64 - export AVOCADO_ALLOW_UNTRUSTED_CODE=1
c5008c76
AB
65 after_script:
66 - cd build
52dff285 67 - 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", "CANCEL")]' | xargs cat
5896c539 68 - du -chs ${CI_PROJECT_DIR}/avocado-cache
0a8b05c7 69
699616db 70build-system-ubuntu:
c962864f
DB
71 <<: *native_build_job_definition
72 variables:
73 IMAGE: ubuntu2004
699616db
TH
74 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
75 moxie-softmmu microblazeel-softmmu mips64el-softmmu
a6eeac3b 76 MAKE_CHECK_ARGS: check-build
d0f26e68 77 CONFIGURE_ARGS: --enable-docs
c5008c76 78 artifacts:
0a796d63 79 expire_in: 2 days
c5008c76
AB
80 paths:
81 - build
82
699616db 83check-system-ubuntu:
c5008c76
AB
84 <<: *native_test_job_definition
85 needs:
699616db 86 - job: build-system-ubuntu
c5008c76
AB
87 artifacts: true
88 variables:
89 IMAGE: ubuntu2004
c962864f 90 MAKE_CHECK_ARGS: check
0a8b05c7 91
699616db 92acceptance-system-ubuntu:
c5008c76
AB
93 <<: *native_test_job_definition
94 needs:
699616db 95 - job: build-system-ubuntu
c5008c76
AB
96 artifacts: true
97 variables:
98 IMAGE: ubuntu2004
99 MAKE_CHECK_ARGS: check-acceptance
5896c539 100 <<: *acceptance_definition
c5008c76 101
699616db
TH
102build-system-debian:
103 <<: *native_build_job_definition
104 variables:
105 IMAGE: debian-amd64
106 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
107 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
108 MAKE_CHECK_ARGS: check-build
d0f26e68 109 CONFIGURE_ARGS: --enable-docs
699616db 110 artifacts:
0a796d63 111 expire_in: 2 days
699616db
TH
112 paths:
113 - build
114
115check-system-debian:
116 <<: *native_test_job_definition
117 needs:
118 - job: build-system-debian
119 artifacts: true
120 variables:
121 IMAGE: debian-amd64
122 MAKE_CHECK_ARGS: check
123
124acceptance-system-debian:
125 <<: *native_test_job_definition
126 needs:
127 - job: build-system-debian
128 artifacts: true
129 variables:
130 IMAGE: debian-amd64
131 MAKE_CHECK_ARGS: check-acceptance
5896c539 132 <<: *acceptance_definition
699616db
TH
133
134build-system-fedora:
c962864f
DB
135 <<: *native_build_job_definition
136 variables:
137 IMAGE: fedora
d0f26e68 138 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
3ffc7f01 139 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
699616db 140 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
a6eeac3b 141 MAKE_CHECK_ARGS: check-build
c5008c76 142 artifacts:
0a796d63 143 expire_in: 2 days
c5008c76
AB
144 paths:
145 - build
146
699616db 147check-system-fedora:
c5008c76
AB
148 <<: *native_test_job_definition
149 needs:
699616db 150 - job: build-system-fedora
c5008c76
AB
151 artifacts: true
152 variables:
153 IMAGE: fedora
c962864f 154 MAKE_CHECK_ARGS: check
0a8b05c7 155
699616db 156acceptance-system-fedora:
c5008c76
AB
157 <<: *native_test_job_definition
158 needs:
699616db 159 - job: build-system-fedora
c5008c76
AB
160 artifacts: true
161 variables:
162 IMAGE: fedora
163 MAKE_CHECK_ARGS: check-acceptance
5896c539 164 <<: *acceptance_definition
c5008c76 165
699616db
TH
166build-system-centos:
167 <<: *native_build_job_definition
168 variables:
169 IMAGE: centos8
affcc09c 170 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
3ffc7f01 171 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
699616db
TH
172 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
173 MAKE_CHECK_ARGS: check-build
174 artifacts:
0a796d63 175 expire_in: 2 days
699616db
TH
176 paths:
177 - build
178
179check-system-centos:
180 <<: *native_test_job_definition
181 needs:
182 - job: build-system-centos
183 artifacts: true
184 variables:
185 IMAGE: centos8
186 MAKE_CHECK_ARGS: check
187
188acceptance-system-centos:
189 <<: *native_test_job_definition
190 needs:
191 - job: build-system-centos
192 artifacts: true
193 variables:
194 IMAGE: centos8
195 MAKE_CHECK_ARGS: check-acceptance
5896c539 196 <<: *acceptance_definition
699616db 197
0a8b05c7 198build-disabled:
c962864f
DB
199 <<: *native_build_job_definition
200 variables:
201 IMAGE: fedora
94a4f816
PMD
202 CONFIGURE_ARGS:
203 --disable-attr
0c4d885f 204 --disable-auth-pam
94a4f816
PMD
205 --disable-avx2
206 --disable-bochs
207 --disable-brlapi
208 --disable-bzip2
209 --disable-cap-ng
210 --disable-capstone
211 --disable-cloop
212 --disable-coroutine-pool
213 --disable-curl
214 --disable-curses
215 --disable-dmg
216 --disable-docs
0c4d885f 217 --disable-gcrypt
94a4f816
PMD
218 --disable-glusterfs
219 --disable-gnutls
220 --disable-gtk
221 --disable-guest-agent
222 --disable-iconv
0c4d885f 223 --disable-keyring
94a4f816
PMD
224 --disable-kvm
225 --disable-libiscsi
226 --disable-libpmem
227 --disable-libssh
0c4d885f 228 --disable-libudev
94a4f816
PMD
229 --disable-libusb
230 --disable-libxml2
231 --disable-linux-aio
232 --disable-live-block-migration
233 --disable-lzo
234 --disable-malloc-trim
235 --disable-mpath
236 --disable-nettle
237 --disable-numa
0c4d885f 238 --disable-opengl
94a4f816
PMD
239 --disable-parallels
240 --disable-pie
241 --disable-qcow1
242 --disable-qed
243 --disable-qom-cast-debug
244 --disable-rbd
245 --disable-rdma
246 --disable-replication
247 --disable-sdl
248 --disable-seccomp
249 --disable-sheepdog
250 --disable-slirp
251 --disable-smartcard
252 --disable-snappy
0c4d885f 253 --disable-sparse
94a4f816
PMD
254 --disable-spice
255 --disable-strip
256 --disable-tpm
257 --disable-usb-redir
258 --disable-vdi
259 --disable-vhost-crypto
260 --disable-vhost-net
261 --disable-vhost-scsi
262 --disable-vhost-user
263 --disable-vhost-vdpa
264 --disable-vhost-vsock
265 --disable-virglrenderer
266 --disable-vnc
267 --disable-vte
268 --disable-vvfat
269 --disable-xen
270 --disable-zstd
a7524adb
TH
271 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
272 s390x-softmmu i386-linux-user
c962864f 273 MAKE_CHECK_ARGS: check-qtest SPEED=slow
0a8b05c7 274
37b6fd66
PMD
275# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
276# the configure script. The container doesn't contain Xen headers so
277# Xen accelerator is not detected / selected. As result it build the
278# i386-softmmu and x86_64-softmmu with KVM being the single accelerator
279# available.
0a8b05c7 280build-tcg-disabled:
c962864f
DB
281 <<: *native_build_job_definition
282 variables:
283 IMAGE: centos8
284 script:
285 - mkdir build
286 - cd build
c47110d9 287 - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
c962864f
DB
288 - make -j"$JOBS"
289 - make check-unit
290 - make check-qapi-schema
291 - cd tests/qemu-iotests/
292 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
c7cf4ddb
TH
293 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
294 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
d8a18da5 295 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
c7cf4ddb
TH
296 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
297 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
298 260 261 262 263 264 270 272 273 277 279
0a8b05c7
TH
299
300build-user:
c962864f
DB
301 <<: *native_build_job_definition
302 variables:
62c902e0
AB
303 IMAGE: debian-all-test-cross
304 CONFIGURE_ARGS: --disable-tools --disable-system
305 MAKE_CHECK_ARGS: check-tcg
0a8b05c7 306
d01bc253
PMD
307build-user-static:
308 <<: *native_build_job_definition
309 variables:
310 IMAGE: debian-all-test-cross
311 CONFIGURE_ARGS: --disable-tools --disable-system --static
312 MAKE_CHECK_ARGS: check-tcg
313
ac74e282
AB
314# Only build the softmmu targets we have check-tcg tests for
315build-some-softmmu:
316 <<: *native_build_job_definition
317 variables:
318 IMAGE: debian-all-test-cross
319 CONFIGURE_ARGS: --disable-tools --enable-debug-tcg
320 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
321 MAKE_CHECK_ARGS: check-tcg
322
8cdb2cef
AB
323# Run check-tcg against linux-user (with plugins)
324# we skip sparc64-linux-user until it has been fixed somewhat
325# we skip cris-linux-user as it doesn't use the common run loop
326build-user-plugins:
327 <<: *native_build_job_definition
328 variables:
329 IMAGE: debian-all-test-cross
330 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
331 MAKE_CHECK_ARGS: check-tcg
332 timeout: 1h 30m
333
ac74e282
AB
334build-some-softmmu-plugins:
335 <<: *native_build_job_definition
336 variables:
337 IMAGE: debian-all-test-cross
338 CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
339 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
340 MAKE_CHECK_ARGS: check-tcg
341
0a8b05c7 342build-clang:
c962864f
DB
343 <<: *native_build_job_definition
344 variables:
345 IMAGE: fedora
346 CONFIGURE_ARGS: --cc=clang --cxx=clang++
347 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
b610eba3 348 ppc-softmmu s390x-softmmu arm-linux-user
c962864f 349 MAKE_CHECK_ARGS: check
5f55d64b 350
1c0c06b1
AB
351# These targets are on the way out
352build-deprecated:
353 <<: *native_build_job_definition
354 variables:
355 IMAGE: debian-all-test-cross
3ffc7f01 356 CONFIGURE_ARGS: --disable-docs --disable-tools
2614670b 357 MAKE_CHECK_ARGS: build-tcg
3ffc7f01
AB
358 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
359 unicore32-softmmu
2614670b
AB
360 artifacts:
361 expire_in: 2 days
362 paths:
363 - build
364
365# We split the check-tcg step as test failures are expected but we still
366# want to catch the build breaking.
367check-deprecated:
368 <<: *native_test_job_definition
369 needs:
370 - job: build-deprecated
371 artifacts: true
372 variables:
373 IMAGE: debian-all-test-cross
374 MAKE_CHECK_ARGS: check-tcg
1c0c06b1
AB
375 allow_failure: true
376
48eac101 377build-oss-fuzz:
b610eba3
TH
378 <<: *native_build_job_definition
379 variables:
380 IMAGE: fedora
381 script:
48eac101
AB
382 - mkdir build-oss-fuzz
383 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
384 ./scripts/oss-fuzz/build.sh
5ab04d5e 385 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
48eac101
AB
386 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
387 | grep -v slirp); do
388 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
389 echo Testing ${fuzzer} ... ;
320c6e78 390 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
b610eba3 391 done
5ab04d5e
TH
392 # Unrelated to fuzzer: run some tests with -fsanitize=address
393 - cd build-oss-fuzz && make check-qtest-i386 check-unit
b610eba3 394
5f55d64b 395build-tci:
c962864f
DB
396 <<: *native_build_job_definition
397 variables:
398 IMAGE: fedora
399 script:
400 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
401 - mkdir build
402 - cd build
403 - ../configure --enable-tcg-interpreter
c47110d9 404 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
c962864f
DB
405 - make -j"$JOBS"
406 - make run-tcg-tests-x86_64-softmmu
407 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
408 - for tg in $TARGETS ; do
64ed6f92 409 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
c962864f
DB
410 ./tests/qtest/boot-serial-test || exit 1 ;
411 ./tests/qtest/cdrom-test || exit 1 ;
412 done
64ed6f92
PB
413 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
414 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
affcc09c 415
d1a8b308
PMD
416# Alternate coroutines implementations are only really of interest to KVM users
417# However we can't test against KVM on Gitlab-CI so we can only run unit tests
418build-coroutine-ucontext:
419 <<: *native_build_job_definition
420 variables:
421 IMAGE: ubuntu2004
422 CONFIGURE_ARGS: --with-coroutine=ucontext --disable-tcg
423 MAKE_CHECK_ARGS: check-unit
424
425build-coroutine-sigaltstack:
426 <<: *native_build_job_definition
427 variables:
428 IMAGE: ubuntu2004
429 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg
430 MAKE_CHECK_ARGS: check-unit
431
affcc09c
DB
432# Most jobs test latest gcrypt or nettle builds
433#
434# These jobs test old gcrypt and nettle from RHEL7
435# which had some API differences.
436build-crypto-old-nettle:
437 <<: *native_build_job_definition
438 variables:
439 IMAGE: centos7
440 TARGETS: x86_64-softmmu x86_64-linux-user
441 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
442 MAKE_CHECK_ARGS: check-build
443 artifacts:
444 paths:
445 - build
446
447check-crypto-old-nettle:
448 <<: *native_test_job_definition
449 needs:
450 - job: build-crypto-old-nettle
451 artifacts: true
452 variables:
453 IMAGE: centos7
454 MAKE_CHECK_ARGS: check
455
456
457build-crypto-old-gcrypt:
458 <<: *native_build_job_definition
459 variables:
460 IMAGE: centos7
461 TARGETS: x86_64-softmmu x86_64-linux-user
462 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
463 MAKE_CHECK_ARGS: check-build
464 artifacts:
465 paths:
466 - build
467
468check-crypto-old-gcrypt:
469 <<: *native_test_job_definition
470 needs:
471 - job: build-crypto-old-gcrypt
472 artifacts: true
473 variables:
474 IMAGE: centos7
475 MAKE_CHECK_ARGS: check
476
477
478build-crypto-only-gnutls:
479 <<: *native_build_job_definition
480 variables:
481 IMAGE: centos7
482 TARGETS: x86_64-softmmu x86_64-linux-user
483 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
484 MAKE_CHECK_ARGS: check-build
485 artifacts:
486 paths:
487 - build
488
489check-crypto-only-gnutls:
490 <<: *native_test_job_definition
491 needs:
492 - job: build-crypto-only-gnutls
493 artifacts: true
494 variables:
495 IMAGE: centos7
496 MAKE_CHECK_ARGS: check
1f475472 497
1352d568
PMD
498# We don't need to exercise every backend with every front-end
499build-trace-multi-user:
500 <<: *native_build_job_definition
501 variables:
502 IMAGE: ubuntu2004
503 CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system
504
505build-trace-ftrace-system:
506 <<: *native_build_job_definition
507 variables:
508 IMAGE: ubuntu2004
509 CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu
510
511build-trace-ust-system:
512 <<: *native_build_job_definition
513 variables:
514 IMAGE: ubuntu2004
515 CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu
1f475472
DB
516
517check-patch:
518 stage: build
519 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
520 script: .gitlab-ci.d/check-patch.py
521 except:
522 variables:
523 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
524 variables:
525 GIT_DEPTH: 1000
526 allow_failure: true
34ed46a2
DB
527
528check-dco:
529 stage: build
530 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
531 script: .gitlab-ci.d/check-dco.py
532 except:
533 variables:
534 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
535 variables:
536 GIT_DEPTH: 1000
4daa9055 537
c4698e36
MAL
538build-libvhost-user:
539 stage: build
540 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
541 before_script:
542 - dnf install -y meson ninja-build
543 script:
544 - mkdir subprojects/libvhost-user/build
545 - cd subprojects/libvhost-user/build
546 - meson
547 - ninja
548
4daa9055
DB
549pages:
550 image: $CI_REGISTRY_IMAGE/qemu/ubuntu2004:latest
551 stage: test
552 needs:
553 - job: build-system-ubuntu
554 artifacts: true
555 script:
556 - mkdir public
557 - mv build/docs/index.html public/
558 - for i in devel interop specs system tools user ; do mv build/docs/$i public/ ; done
559 artifacts:
560 paths:
561 - public