]> git.proxmox.com Git - mirror_qemu.git/blame - .gitlab-ci.yml
Update version for v5.2.0 release
[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
a7524adb
TH
202 CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs
203 --disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone
204 --disable-cloop --disable-coroutine-pool --disable-curl --disable-curses
205 --disable-dmg --disable-docs --disable-glusterfs --disable-gnutls
206 --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm
207 --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb
208 --disable-libxml2 --disable-linux-aio --disable-live-block-migration
209 --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle
210 --disable-numa --disable-parallels --disable-pie --disable-qcow1
211 --disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma
212 --disable-replication --disable-sdl --disable-seccomp --disable-sheepdog
213 --disable-slirp --disable-smartcard --disable-snappy --disable-spice
214 --disable-strip --disable-tpm --disable-usb-redir --disable-vdi
215 --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi
216 --disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock
217 --disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat
218 --disable-xen --disable-zstd
219 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
220 s390x-softmmu i386-linux-user
c962864f 221 MAKE_CHECK_ARGS: check-qtest SPEED=slow
0a8b05c7
TH
222
223build-tcg-disabled:
c962864f
DB
224 <<: *native_build_job_definition
225 variables:
226 IMAGE: centos8
227 script:
228 - mkdir build
229 - cd build
c47110d9 230 - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
c962864f
DB
231 - make -j"$JOBS"
232 - make check-unit
233 - make check-qapi-schema
234 - cd tests/qemu-iotests/
235 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
c7cf4ddb
TH
236 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
237 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
d8a18da5 238 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
c7cf4ddb
TH
239 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
240 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
241 260 261 262 263 264 270 272 273 277 279
0a8b05c7
TH
242
243build-user:
c962864f
DB
244 <<: *native_build_job_definition
245 variables:
62c902e0
AB
246 IMAGE: debian-all-test-cross
247 CONFIGURE_ARGS: --disable-tools --disable-system
248 MAKE_CHECK_ARGS: check-tcg
0a8b05c7 249
ac74e282
AB
250# Only build the softmmu targets we have check-tcg tests for
251build-some-softmmu:
252 <<: *native_build_job_definition
253 variables:
254 IMAGE: debian-all-test-cross
255 CONFIGURE_ARGS: --disable-tools --enable-debug-tcg
256 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
257 MAKE_CHECK_ARGS: check-tcg
258
8cdb2cef
AB
259# Run check-tcg against linux-user (with plugins)
260# we skip sparc64-linux-user until it has been fixed somewhat
261# we skip cris-linux-user as it doesn't use the common run loop
262build-user-plugins:
263 <<: *native_build_job_definition
264 variables:
265 IMAGE: debian-all-test-cross
266 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
267 MAKE_CHECK_ARGS: check-tcg
268 timeout: 1h 30m
269
ac74e282
AB
270build-some-softmmu-plugins:
271 <<: *native_build_job_definition
272 variables:
273 IMAGE: debian-all-test-cross
274 CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg
275 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu
276 MAKE_CHECK_ARGS: check-tcg
277
0a8b05c7 278build-clang:
c962864f
DB
279 <<: *native_build_job_definition
280 variables:
281 IMAGE: fedora
282 CONFIGURE_ARGS: --cc=clang --cxx=clang++
283 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
b610eba3 284 ppc-softmmu s390x-softmmu arm-linux-user
c962864f 285 MAKE_CHECK_ARGS: check
5f55d64b 286
1c0c06b1
AB
287# These targets are on the way out
288build-deprecated:
289 <<: *native_build_job_definition
290 variables:
291 IMAGE: debian-all-test-cross
3ffc7f01 292 CONFIGURE_ARGS: --disable-docs --disable-tools
2614670b 293 MAKE_CHECK_ARGS: build-tcg
3ffc7f01
AB
294 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
295 unicore32-softmmu
2614670b
AB
296 artifacts:
297 expire_in: 2 days
298 paths:
299 - build
300
301# We split the check-tcg step as test failures are expected but we still
302# want to catch the build breaking.
303check-deprecated:
304 <<: *native_test_job_definition
305 needs:
306 - job: build-deprecated
307 artifacts: true
308 variables:
309 IMAGE: debian-all-test-cross
310 MAKE_CHECK_ARGS: check-tcg
1c0c06b1
AB
311 allow_failure: true
312
48eac101 313build-oss-fuzz:
b610eba3
TH
314 <<: *native_build_job_definition
315 variables:
316 IMAGE: fedora
317 script:
48eac101
AB
318 - mkdir build-oss-fuzz
319 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
320 ./scripts/oss-fuzz/build.sh
5ab04d5e 321 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
48eac101
AB
322 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
323 | grep -v slirp); do
324 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
325 echo Testing ${fuzzer} ... ;
320c6e78 326 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
b610eba3 327 done
5ab04d5e
TH
328 # Unrelated to fuzzer: run some tests with -fsanitize=address
329 - cd build-oss-fuzz && make check-qtest-i386 check-unit
b610eba3 330
5f55d64b 331build-tci:
c962864f
DB
332 <<: *native_build_job_definition
333 variables:
334 IMAGE: fedora
335 script:
336 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
337 - mkdir build
338 - cd build
339 - ../configure --enable-tcg-interpreter
c47110d9 340 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
c962864f
DB
341 - make -j"$JOBS"
342 - make run-tcg-tests-x86_64-softmmu
343 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
344 - for tg in $TARGETS ; do
64ed6f92 345 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
c962864f
DB
346 ./tests/qtest/boot-serial-test || exit 1 ;
347 ./tests/qtest/cdrom-test || exit 1 ;
348 done
64ed6f92
PB
349 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
350 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
affcc09c
DB
351
352# Most jobs test latest gcrypt or nettle builds
353#
354# These jobs test old gcrypt and nettle from RHEL7
355# which had some API differences.
356build-crypto-old-nettle:
357 <<: *native_build_job_definition
358 variables:
359 IMAGE: centos7
360 TARGETS: x86_64-softmmu x86_64-linux-user
361 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
362 MAKE_CHECK_ARGS: check-build
363 artifacts:
364 paths:
365 - build
366
367check-crypto-old-nettle:
368 <<: *native_test_job_definition
369 needs:
370 - job: build-crypto-old-nettle
371 artifacts: true
372 variables:
373 IMAGE: centos7
374 MAKE_CHECK_ARGS: check
375
376
377build-crypto-old-gcrypt:
378 <<: *native_build_job_definition
379 variables:
380 IMAGE: centos7
381 TARGETS: x86_64-softmmu x86_64-linux-user
382 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
383 MAKE_CHECK_ARGS: check-build
384 artifacts:
385 paths:
386 - build
387
388check-crypto-old-gcrypt:
389 <<: *native_test_job_definition
390 needs:
391 - job: build-crypto-old-gcrypt
392 artifacts: true
393 variables:
394 IMAGE: centos7
395 MAKE_CHECK_ARGS: check
396
397
398build-crypto-only-gnutls:
399 <<: *native_build_job_definition
400 variables:
401 IMAGE: centos7
402 TARGETS: x86_64-softmmu x86_64-linux-user
403 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
404 MAKE_CHECK_ARGS: check-build
405 artifacts:
406 paths:
407 - build
408
409check-crypto-only-gnutls:
410 <<: *native_test_job_definition
411 needs:
412 - job: build-crypto-only-gnutls
413 artifacts: true
414 variables:
415 IMAGE: centos7
416 MAKE_CHECK_ARGS: check
1f475472 417
1352d568
PMD
418# We don't need to exercise every backend with every front-end
419build-trace-multi-user:
420 <<: *native_build_job_definition
421 variables:
422 IMAGE: ubuntu2004
423 CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system
424
425build-trace-ftrace-system:
426 <<: *native_build_job_definition
427 variables:
428 IMAGE: ubuntu2004
429 CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu
430
431build-trace-ust-system:
432 <<: *native_build_job_definition
433 variables:
434 IMAGE: ubuntu2004
435 CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu
1f475472
DB
436
437check-patch:
438 stage: build
439 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
440 script: .gitlab-ci.d/check-patch.py
441 except:
442 variables:
443 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
444 variables:
445 GIT_DEPTH: 1000
446 allow_failure: true
34ed46a2
DB
447
448check-dco:
449 stage: build
450 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
451 script: .gitlab-ci.d/check-dco.py
452 except:
453 variables:
454 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
455 variables:
456 GIT_DEPTH: 1000
4daa9055
DB
457
458pages:
459 image: $CI_REGISTRY_IMAGE/qemu/ubuntu2004:latest
460 stage: test
461 needs:
462 - job: build-system-ubuntu
463 artifacts: true
464 script:
465 - mkdir public
466 - mv build/docs/index.html public/
467 - for i in devel interop specs system tools user ; do mv build/docs/$i public/ ; done
468 artifacts:
469 paths:
470 - public