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