]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.yml
iotests/308: Add test for FUSE exports
[mirror_qemu.git] / .gitlab-ci.yml
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)
4 stages:
5 - containers
6 - containers-layer2
7 - build
8 - test
9
10 include:
11 - local: '/.gitlab-ci.d/edk2.yml'
12 - local: '/.gitlab-ci.d/opensbi.yml'
13 - local: '/.gitlab-ci.d/containers.yml'
14 - local: '/.gitlab-ci.d/crossbuilds.yml'
15
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)
21 - sed -i s,git.qemu.org/git,gitlab.com/qemu-project, .gitmodules
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 ;
30 fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
31 - make -j"$JOBS"
32 - if test -n "$MAKE_CHECK_ARGS";
33 then
34 make -j"$JOBS" $MAKE_CHECK_ARGS ;
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
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
51 artifacts:
52 paths:
53 - build/tests/results/latest/results.xml
54 reports:
55 junit: build/tests/results/latest/results.xml
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
64 - export AVOCADO_ALLOW_UNTRUSTED_CODE=1
65 after_script:
66 - cd build
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
68 - du -chs ${CI_PROJECT_DIR}/avocado-cache
69
70 build-system-ubuntu:
71 <<: *native_build_job_definition
72 variables:
73 IMAGE: ubuntu2004
74 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
75 moxie-softmmu microblazeel-softmmu mips64el-softmmu
76 MAKE_CHECK_ARGS: check-build
77 CONFIGURE_ARGS: --enable-docs
78 artifacts:
79 expire_in: 2 days
80 paths:
81 - build
82
83 check-system-ubuntu:
84 <<: *native_test_job_definition
85 needs:
86 - job: build-system-ubuntu
87 artifacts: true
88 variables:
89 IMAGE: ubuntu2004
90 MAKE_CHECK_ARGS: check
91
92 acceptance-system-ubuntu:
93 <<: *native_test_job_definition
94 needs:
95 - job: build-system-ubuntu
96 artifacts: true
97 variables:
98 IMAGE: ubuntu2004
99 MAKE_CHECK_ARGS: check-acceptance
100 <<: *acceptance_definition
101
102 build-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
109 CONFIGURE_ARGS: --enable-docs
110 artifacts:
111 expire_in: 2 days
112 paths:
113 - build
114
115 check-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
124 acceptance-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
132 <<: *acceptance_definition
133
134 build-system-fedora:
135 <<: *native_build_job_definition
136 variables:
137 IMAGE: fedora
138 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
139 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
140 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
141 MAKE_CHECK_ARGS: check-build
142 artifacts:
143 expire_in: 2 days
144 paths:
145 - build
146
147 check-system-fedora:
148 <<: *native_test_job_definition
149 needs:
150 - job: build-system-fedora
151 artifacts: true
152 variables:
153 IMAGE: fedora
154 MAKE_CHECK_ARGS: check
155
156 acceptance-system-fedora:
157 <<: *native_test_job_definition
158 needs:
159 - job: build-system-fedora
160 artifacts: true
161 variables:
162 IMAGE: fedora
163 MAKE_CHECK_ARGS: check-acceptance
164 <<: *acceptance_definition
165
166 build-system-centos:
167 <<: *native_build_job_definition
168 variables:
169 IMAGE: centos8
170 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
171 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
172 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
173 MAKE_CHECK_ARGS: check-build
174 artifacts:
175 expire_in: 2 days
176 paths:
177 - build
178
179 check-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
188 acceptance-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
196 <<: *acceptance_definition
197
198 build-disabled:
199 <<: *native_build_job_definition
200 variables:
201 IMAGE: fedora
202 CONFIGURE_ARGS:
203 --disable-attr
204 --disable-auth-pam
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
217 --disable-gcrypt
218 --disable-glusterfs
219 --disable-gnutls
220 --disable-gtk
221 --disable-guest-agent
222 --disable-iconv
223 --disable-keyring
224 --disable-kvm
225 --disable-libiscsi
226 --disable-libpmem
227 --disable-libssh
228 --disable-libudev
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
238 --disable-opengl
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
253 --disable-sparse
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
271 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
272 s390x-softmmu i386-linux-user
273 MAKE_CHECK_ARGS: check-qtest SPEED=slow
274
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.
280 build-tcg-disabled:
281 <<: *native_build_job_definition
282 variables:
283 IMAGE: centos8
284 script:
285 - mkdir build
286 - cd build
287 - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
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
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
295 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
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
299
300 build-user:
301 <<: *native_build_job_definition
302 variables:
303 IMAGE: debian-all-test-cross
304 CONFIGURE_ARGS: --disable-tools --disable-system
305 MAKE_CHECK_ARGS: check-tcg
306
307 build-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
314 # Only build the softmmu targets we have check-tcg tests for
315 build-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
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
326 build-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
334 build-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
342 build-clang:
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
348 ppc-softmmu s390x-softmmu arm-linux-user
349 MAKE_CHECK_ARGS: check
350
351 # These targets are on the way out
352 build-deprecated:
353 <<: *native_build_job_definition
354 variables:
355 IMAGE: debian-all-test-cross
356 CONFIGURE_ARGS: --disable-docs --disable-tools
357 MAKE_CHECK_ARGS: build-tcg
358 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
359 unicore32-softmmu
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.
367 check-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
375 allow_failure: true
376
377 build-oss-fuzz:
378 <<: *native_build_job_definition
379 variables:
380 IMAGE: fedora
381 script:
382 - mkdir build-oss-fuzz
383 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
384 ./scripts/oss-fuzz/build.sh
385 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
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} ... ;
390 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
391 done
392 # Unrelated to fuzzer: run some tests with -fsanitize=address
393 - cd build-oss-fuzz && make check-qtest-i386 check-unit
394
395 build-tci:
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
404 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
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
409 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
410 ./tests/qtest/boot-serial-test || exit 1 ;
411 ./tests/qtest/cdrom-test || exit 1 ;
412 done
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
415
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
418 build-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
425 build-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
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.
436 build-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
447 check-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
457 build-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
468 check-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
478 build-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
489 check-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
497
498 # We don't need to exercise every backend with every front-end
499 build-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
505 build-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
511 build-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
516
517 check-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
527
528 check-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
537
538 build-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
549 pages:
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