]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/buildtest.yml
Merge tag 'pull-hex-20230518-1' of https://github.com/quic/qemu into staging
[mirror_qemu.git] / .gitlab-ci.d / buildtest.yml
1 include:
2 - local: '/.gitlab-ci.d/buildtest-template.yml'
3
4 build-system-alpine:
5 extends:
6 - .native_build_job_template
7 - .native_build_artifact_template
8 needs:
9 - job: amd64-alpine-container
10 variables:
11 IMAGE: alpine
12 TARGETS: avr-softmmu loongarch64-softmmu mips64-softmmu mipsel-softmmu
13 MAKE_CHECK_ARGS: check-build
14 CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog
15
16 check-system-alpine:
17 extends: .native_test_job_template
18 needs:
19 - job: build-system-alpine
20 artifacts: true
21 variables:
22 IMAGE: alpine
23 MAKE_CHECK_ARGS: check-unit check-qtest
24
25 avocado-system-alpine:
26 extends: .avocado_test_job_template
27 needs:
28 - job: build-system-alpine
29 artifacts: true
30 variables:
31 IMAGE: alpine
32 MAKE_CHECK_ARGS: check-avocado
33
34 build-system-ubuntu:
35 extends:
36 - .native_build_job_template
37 - .native_build_artifact_template
38 needs:
39 job: amd64-ubuntu2204-container
40 variables:
41 IMAGE: ubuntu2204
42 CONFIGURE_ARGS: --enable-docs
43 TARGETS: alpha-softmmu cris-softmmu hppa-softmmu
44 microblazeel-softmmu mips64el-softmmu
45 MAKE_CHECK_ARGS: check-build
46
47 check-system-ubuntu:
48 extends: .native_test_job_template
49 needs:
50 - job: build-system-ubuntu
51 artifacts: true
52 variables:
53 IMAGE: ubuntu2204
54 MAKE_CHECK_ARGS: check
55
56 avocado-system-ubuntu:
57 extends: .avocado_test_job_template
58 needs:
59 - job: build-system-ubuntu
60 artifacts: true
61 variables:
62 IMAGE: ubuntu2204
63 MAKE_CHECK_ARGS: check-avocado
64
65 build-system-debian:
66 extends:
67 - .native_build_job_template
68 - .native_build_artifact_template
69 needs:
70 job: amd64-debian-container
71 variables:
72 IMAGE: debian-amd64
73 CONFIGURE_ARGS: --with-coroutine=sigaltstack
74 TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
75 sparc-softmmu xtensaeb-softmmu
76 MAKE_CHECK_ARGS: check-build
77
78 check-system-debian:
79 extends: .native_test_job_template
80 needs:
81 - job: build-system-debian
82 artifacts: true
83 variables:
84 IMAGE: debian-amd64
85 MAKE_CHECK_ARGS: check
86
87 avocado-system-debian:
88 extends: .avocado_test_job_template
89 needs:
90 - job: build-system-debian
91 artifacts: true
92 variables:
93 IMAGE: debian-amd64
94 MAKE_CHECK_ARGS: check-avocado
95
96 crash-test-debian:
97 extends: .native_test_job_template
98 needs:
99 - job: build-system-debian
100 artifacts: true
101 variables:
102 IMAGE: debian-amd64
103 script:
104 - cd build
105 - make NINJA=":" check-venv
106 - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
107
108 build-system-fedora:
109 extends:
110 - .native_build_job_template
111 - .native_build_artifact_template
112 needs:
113 job: amd64-fedora-container
114 variables:
115 IMAGE: fedora
116 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
117 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
118 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
119 MAKE_CHECK_ARGS: check-build
120
121 check-system-fedora:
122 extends: .native_test_job_template
123 needs:
124 - job: build-system-fedora
125 artifacts: true
126 variables:
127 IMAGE: fedora
128 MAKE_CHECK_ARGS: check
129
130 avocado-system-fedora:
131 extends: .avocado_test_job_template
132 needs:
133 - job: build-system-fedora
134 artifacts: true
135 variables:
136 IMAGE: fedora
137 MAKE_CHECK_ARGS: check-avocado
138
139 crash-test-fedora:
140 extends: .native_test_job_template
141 needs:
142 - job: build-system-fedora
143 artifacts: true
144 variables:
145 IMAGE: fedora
146 script:
147 - cd build
148 - make NINJA=":" check-venv
149 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
150 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
151
152 build-system-centos:
153 extends:
154 - .native_build_job_template
155 - .native_build_artifact_template
156 needs:
157 job: amd64-centos8-container
158 variables:
159 IMAGE: centos8
160 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server
161 --enable-modules --enable-trace-backends=dtrace --enable-docs
162 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
163 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
164 MAKE_CHECK_ARGS: check-build
165
166 check-system-centos:
167 extends: .native_test_job_template
168 needs:
169 - job: build-system-centos
170 artifacts: true
171 variables:
172 IMAGE: centos8
173 MAKE_CHECK_ARGS: check
174
175 avocado-system-centos:
176 extends: .avocado_test_job_template
177 needs:
178 - job: build-system-centos
179 artifacts: true
180 variables:
181 IMAGE: centos8
182 MAKE_CHECK_ARGS: check-avocado
183
184 build-system-opensuse:
185 extends:
186 - .native_build_job_template
187 - .native_build_artifact_template
188 needs:
189 job: amd64-opensuse-leap-container
190 variables:
191 IMAGE: opensuse-leap
192 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
193 MAKE_CHECK_ARGS: check-build
194
195 check-system-opensuse:
196 extends: .native_test_job_template
197 needs:
198 - job: build-system-opensuse
199 artifacts: true
200 variables:
201 IMAGE: opensuse-leap
202 MAKE_CHECK_ARGS: check
203
204 avocado-system-opensuse:
205 extends: .avocado_test_job_template
206 needs:
207 - job: build-system-opensuse
208 artifacts: true
209 variables:
210 IMAGE: opensuse-leap
211 MAKE_CHECK_ARGS: check-avocado
212
213
214 # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by
215 # the configure script. The container doesn't contain Xen headers so
216 # Xen accelerator is not detected / selected. As result it build the
217 # i386-softmmu and x86_64-softmmu with KVM being the single accelerator
218 # available.
219 # Also use a different coroutine implementation (which is only really of
220 # interest to KVM users, i.e. with TCG disabled)
221 build-tcg-disabled:
222 extends: .native_build_job_template
223 needs:
224 job: amd64-centos8-container
225 variables:
226 IMAGE: centos8
227 script:
228 - mkdir build
229 - cd build
230 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
231 --disable-docs --disable-sdl --disable-gtk --disable-vnc
232 || { cat config.log meson-logs/meson-log.txt && exit 1; }
233 - make -j"$JOBS"
234 - make check-unit
235 - make check-qapi-schema
236 - cd tests/qemu-iotests/
237 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
238 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
239 170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
240 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
241 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
242 208 209 216 218 227 234 246 247 248 250 254 255 257 258
243 260 261 262 263 264 270 272 273 277 279 image-fleecing
244
245 build-user:
246 extends: .native_build_job_template
247 needs:
248 job: amd64-debian-user-cross-container
249 variables:
250 IMAGE: debian-all-test-cross
251 CONFIGURE_ARGS: --disable-tools --disable-system
252 MAKE_CHECK_ARGS: check-tcg
253
254 build-user-static:
255 extends: .native_build_job_template
256 needs:
257 job: amd64-debian-user-cross-container
258 variables:
259 IMAGE: debian-all-test-cross
260 CONFIGURE_ARGS: --disable-tools --disable-system --static
261 MAKE_CHECK_ARGS: check-tcg
262
263 build-user-hexagon:
264 extends: .native_build_job_template
265 needs:
266 job: hexagon-cross-container
267 variables:
268 IMAGE: debian-hexagon-cross
269 TARGETS: hexagon-linux-user
270 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
271 MAKE_CHECK_ARGS: check-tcg
272
273 # Only build the softmmu targets we have check-tcg tests for
274 build-some-softmmu:
275 extends: .native_build_job_template
276 needs:
277 job: amd64-debian-user-cross-container
278 variables:
279 IMAGE: debian-all-test-cross
280 CONFIGURE_ARGS: --disable-tools --enable-debug
281 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
282 MAKE_CHECK_ARGS: check-tcg
283
284 # We build tricore in a very minimal tricore only container
285 build-tricore-softmmu:
286 extends: .native_build_job_template
287 needs:
288 job: tricore-debian-cross-container
289 variables:
290 IMAGE: debian-tricore-cross
291 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
292 TARGETS: tricore-softmmu
293 MAKE_CHECK_ARGS: check-tcg
294
295 clang-system:
296 extends: .native_build_job_template
297 needs:
298 job: amd64-fedora-container
299 variables:
300 IMAGE: fedora
301 CONFIGURE_ARGS: --cc=clang --cxx=clang++
302 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
303 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
304 MAKE_CHECK_ARGS: check-qtest check-tcg
305
306 clang-user:
307 extends: .native_build_job_template
308 needs:
309 job: amd64-debian-user-cross-container
310 timeout: 70m
311 variables:
312 IMAGE: debian-all-test-cross
313 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
314 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
315 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
316 MAKE_CHECK_ARGS: check-unit check-tcg
317
318 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
319 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
320 # triggers an Out-Of-Memory error
321 #
322 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
323 # CFI builds, and thus have to disable it here.
324 #
325 # Split in three sets of build/check/avocado to limit the execution time of each
326 # job
327 build-cfi-aarch64:
328 extends:
329 - .native_build_job_template
330 - .native_build_artifact_template
331 needs:
332 - job: amd64-fedora-container
333 variables:
334 LD_JOBS: 1
335 AR: llvm-ar
336 IMAGE: fedora
337 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
338 --enable-safe-stack --disable-slirp
339 TARGETS: aarch64-softmmu
340 MAKE_CHECK_ARGS: check-build
341 # FIXME: This job is often failing, likely due to out-of-memory problems in
342 # the constrained containers of the shared runners. Thus this is marked as
343 # skipped until the situation has been solved.
344 QEMU_JOB_SKIPPED: 1
345 timeout: 90m
346
347 check-cfi-aarch64:
348 extends: .native_test_job_template
349 needs:
350 - job: build-cfi-aarch64
351 artifacts: true
352 variables:
353 IMAGE: fedora
354 MAKE_CHECK_ARGS: check
355
356 avocado-cfi-aarch64:
357 extends: .avocado_test_job_template
358 needs:
359 - job: build-cfi-aarch64
360 artifacts: true
361 variables:
362 IMAGE: fedora
363 MAKE_CHECK_ARGS: check-avocado
364
365 build-cfi-ppc64-s390x:
366 extends:
367 - .native_build_job_template
368 - .native_build_artifact_template
369 needs:
370 - job: amd64-fedora-container
371 variables:
372 LD_JOBS: 1
373 AR: llvm-ar
374 IMAGE: fedora
375 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
376 --enable-safe-stack --disable-slirp
377 TARGETS: ppc64-softmmu s390x-softmmu
378 MAKE_CHECK_ARGS: check-build
379 # FIXME: This job is often failing, likely due to out-of-memory problems in
380 # the constrained containers of the shared runners. Thus this is marked as
381 # skipped until the situation has been solved.
382 QEMU_JOB_SKIPPED: 1
383 timeout: 80m
384
385 check-cfi-ppc64-s390x:
386 extends: .native_test_job_template
387 needs:
388 - job: build-cfi-ppc64-s390x
389 artifacts: true
390 variables:
391 IMAGE: fedora
392 MAKE_CHECK_ARGS: check
393
394 avocado-cfi-ppc64-s390x:
395 extends: .avocado_test_job_template
396 needs:
397 - job: build-cfi-ppc64-s390x
398 artifacts: true
399 variables:
400 IMAGE: fedora
401 MAKE_CHECK_ARGS: check-avocado
402
403 build-cfi-x86_64:
404 extends:
405 - .native_build_job_template
406 - .native_build_artifact_template
407 needs:
408 - job: amd64-fedora-container
409 variables:
410 LD_JOBS: 1
411 AR: llvm-ar
412 IMAGE: fedora
413 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
414 --enable-safe-stack --disable-slirp
415 TARGETS: x86_64-softmmu
416 MAKE_CHECK_ARGS: check-build
417 timeout: 70m
418
419 check-cfi-x86_64:
420 extends: .native_test_job_template
421 needs:
422 - job: build-cfi-x86_64
423 artifacts: true
424 variables:
425 IMAGE: fedora
426 MAKE_CHECK_ARGS: check
427
428 avocado-cfi-x86_64:
429 extends: .avocado_test_job_template
430 needs:
431 - job: build-cfi-x86_64
432 artifacts: true
433 variables:
434 IMAGE: fedora
435 MAKE_CHECK_ARGS: check-avocado
436
437 tsan-build:
438 extends: .native_build_job_template
439 needs:
440 job: amd64-ubuntu2204-container
441 variables:
442 IMAGE: ubuntu2204
443 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
444 --enable-trace-backends=ust --disable-slirp
445 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
446
447 # gcov is a GCC features
448 gcov:
449 extends: .native_build_job_template
450 needs:
451 job: amd64-ubuntu2204-container
452 timeout: 80m
453 variables:
454 IMAGE: ubuntu2204
455 CONFIGURE_ARGS: --enable-gcov
456 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
457 MAKE_CHECK_ARGS: check
458 after_script:
459 - cd build
460 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
461 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
462 coverage: /^\s*lines:\s*\d+.\d+\%/
463 artifacts:
464 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
465 expire_in: 2 days
466 reports:
467 coverage_report:
468 coverage_format: cobertura
469 path: build/coverage.xml
470
471 build-oss-fuzz:
472 extends: .native_build_job_template
473 needs:
474 job: amd64-fedora-container
475 variables:
476 IMAGE: fedora
477 script:
478 - mkdir build-oss-fuzz
479 - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
480 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
481 ./scripts/oss-fuzz/build.sh
482 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
483 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
484 | grep -v slirp); do
485 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
486 echo Testing ${fuzzer} ... ;
487 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
488 done
489
490 build-tci:
491 extends: .native_build_job_template
492 needs:
493 job: amd64-debian-user-cross-container
494 variables:
495 IMAGE: debian-all-test-cross
496 script:
497 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64"
498 - mkdir build
499 - cd build
500 - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
501 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
502 || { cat config.log meson-logs/meson-log.txt && exit 1; }
503 - make -j"$JOBS"
504 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
505 - for tg in $TARGETS ; do
506 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
507 ./tests/qtest/boot-serial-test || exit 1 ;
508 ./tests/qtest/cdrom-test || exit 1 ;
509 done
510 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
511 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
512 - make check-tcg
513
514 # Check our reduced build configurations
515 build-without-defaults:
516 extends: .native_build_job_template
517 needs:
518 job: amd64-centos8-container
519 variables:
520 IMAGE: centos8
521 CONFIGURE_ARGS:
522 --without-default-devices
523 --without-default-features
524 --disable-fdt
525 --disable-pie
526 --disable-qom-cast-debug
527 --disable-strip
528 TARGETS: avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
529 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
530 MAKE_CHECK_ARGS: check-unit check-qtest-avr check-qtest-mips64
531
532 build-libvhost-user:
533 extends: .base_job_template
534 stage: build
535 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
536 needs:
537 job: amd64-fedora-container
538 script:
539 - mkdir subprojects/libvhost-user/build
540 - cd subprojects/libvhost-user/build
541 - meson
542 - ninja
543
544 # No targets are built here, just tools, docs, and unit tests. This
545 # also feeds into the eventual documentation deployment steps later
546 build-tools-and-docs-debian:
547 extends:
548 - .native_build_job_template
549 - .native_build_artifact_template
550 needs:
551 job: amd64-debian-container
552 # when running on 'master' we use pre-existing container
553 optional: true
554 variables:
555 IMAGE: debian-amd64
556 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
557 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
558 QEMU_JOB_PUBLISH: 1
559
560 # Prepare for GitLab pages deployment. Anything copied into the
561 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
562 #
563 # GitLab publishes from any branch that triggers a CI pipeline
564 #
565 # For the main repo we don't want to publish from 'staging'
566 # since that content may not be pushed, nor do we wish to
567 # publish from 'stable-NNN' branches as that content is outdated.
568 # Thus we restrict to just the default branch
569 #
570 # For contributor forks we want to publish from any repo so
571 # that users can see the results of their commits, regardless
572 # of what topic branch they're currently using
573 pages:
574 extends: .base_job_template
575 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
576 stage: test
577 needs:
578 - job: build-tools-and-docs-debian
579 script:
580 - mkdir -p public
581 # HTML-ised source tree
582 - make gtags
583 - htags -anT --tree-view=filetree -m qemu_init
584 -t "Welcome to the QEMU sourcecode"
585 - mv HTML public/src
586 # Project documentation
587 - make -C build install DESTDIR=$(pwd)/temp-install
588 - mv temp-install/usr/local/share/doc/qemu/* public/
589 artifacts:
590 paths:
591 - public
592 variables:
593 QEMU_JOB_PUBLISH: 1