]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.d/buildtest.yml
f0b0edc634cf12e8f81e08e924c358f151b8cd2f
[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 AVOCADO_TAGS: arch:avr arch:loongarch64 arch:mips64 arch:mipsel
34
35 build-system-ubuntu:
36 extends:
37 - .native_build_job_template
38 - .native_build_artifact_template
39 needs:
40 job: amd64-ubuntu2204-container
41 variables:
42 IMAGE: ubuntu2204
43 CONFIGURE_ARGS: --enable-docs
44 TARGETS: alpha-softmmu 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 AVOCADO_TAGS: arch:alpha arch:microblazeel arch:mips64el
65
66 build-system-debian:
67 extends:
68 - .native_build_job_template
69 - .native_build_artifact_template
70 needs:
71 job: amd64-debian-container
72 variables:
73 IMAGE: debian
74 CONFIGURE_ARGS: --with-coroutine=sigaltstack
75 TARGETS: arm-softmmu i386-softmmu riscv64-softmmu sh4eb-softmmu
76 sparc-softmmu xtensa-softmmu
77 MAKE_CHECK_ARGS: check-build
78
79 check-system-debian:
80 extends: .native_test_job_template
81 needs:
82 - job: build-system-debian
83 artifacts: true
84 variables:
85 IMAGE: debian
86 MAKE_CHECK_ARGS: check
87
88 avocado-system-debian:
89 extends: .avocado_test_job_template
90 needs:
91 - job: build-system-debian
92 artifacts: true
93 variables:
94 IMAGE: debian
95 MAKE_CHECK_ARGS: check-avocado
96 AVOCADO_TAGS: arch:arm arch:i386 arch:riscv64 arch:sh4 arch:sparc arch:xtensa
97
98 crash-test-debian:
99 extends: .native_test_job_template
100 needs:
101 - job: build-system-debian
102 artifacts: true
103 variables:
104 IMAGE: debian
105 script:
106 - cd build
107 - make NINJA=":" check-venv
108 - pyvenv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386
109
110 build-system-fedora:
111 extends:
112 - .native_build_job_template
113 - .native_build_artifact_template
114 needs:
115 job: amd64-fedora-container
116 variables:
117 IMAGE: fedora
118 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
119 TARGETS: microblaze-softmmu mips-softmmu
120 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
121 MAKE_CHECK_ARGS: check-build
122
123 check-system-fedora:
124 extends: .native_test_job_template
125 needs:
126 - job: build-system-fedora
127 artifacts: true
128 variables:
129 IMAGE: fedora
130 MAKE_CHECK_ARGS: check
131
132 avocado-system-fedora:
133 extends: .avocado_test_job_template
134 needs:
135 - job: build-system-fedora
136 artifacts: true
137 variables:
138 IMAGE: fedora
139 MAKE_CHECK_ARGS: check-avocado
140 AVOCADO_TAGS: arch:microblaze arch:mips arch:xtensa arch:m68k
141 arch:riscv32 arch:ppc arch:sparc64
142
143 crash-test-fedora:
144 extends: .native_test_job_template
145 needs:
146 - job: build-system-fedora
147 artifacts: true
148 variables:
149 IMAGE: fedora
150 script:
151 - cd build
152 - make NINJA=":" check-venv
153 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
154 - pyvenv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
155
156 build-system-centos:
157 extends:
158 - .native_build_job_template
159 - .native_build_artifact_template
160 needs:
161 job: amd64-centos8-container
162 variables:
163 IMAGE: centos8
164 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-vfio-user-server
165 --enable-modules --enable-trace-backends=dtrace --enable-docs
166 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
167 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
168 MAKE_CHECK_ARGS: check-build
169
170 # Previous QEMU release. Used for cross-version migration tests.
171 build-previous-qemu:
172 extends: .native_build_job_template
173 artifacts:
174 when: on_success
175 expire_in: 2 days
176 paths:
177 - build-previous
178 exclude:
179 - build-previous/**/*.p
180 - build-previous/**/*.a.p
181 - build-previous/**/*.fa.p
182 - build-previous/**/*.c.o
183 - build-previous/**/*.c.o.d
184 - build-previous/**/*.fa
185 needs:
186 job: amd64-opensuse-leap-container
187 variables:
188 IMAGE: opensuse-leap
189 TARGETS: x86_64-softmmu aarch64-softmmu
190 before_script:
191 - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
192 - git checkout $QEMU_PREV_VERSION
193 after_script:
194 - mv build build-previous
195
196 .migration-compat-common:
197 extends: .common_test_job_template
198 needs:
199 - job: build-previous-qemu
200 - job: build-system-opensuse
201 # The old QEMU could have bugs unrelated to migration that are
202 # already fixed in the current development branch, so this test
203 # might fail.
204 allow_failure: true
205 variables:
206 IMAGE: opensuse-leap
207 MAKE_CHECK_ARGS: check-build
208 script:
209 # Use the migration-tests from the older QEMU tree. This avoids
210 # testing an old QEMU against new features/tests that it is not
211 # compatible with.
212 - cd build-previous
213 # old to new
214 - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET}
215 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
216 # new to old
217 - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET}
218 QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
219
220 migration-compat-aarch64:
221 extends: .migration-compat-common
222 variables:
223 TARGET: aarch64
224
225 migration-compat-x86_64:
226 extends: .migration-compat-common
227 variables:
228 TARGET: x86_64
229
230 check-system-centos:
231 extends: .native_test_job_template
232 needs:
233 - job: build-system-centos
234 artifacts: true
235 variables:
236 IMAGE: centos8
237 MAKE_CHECK_ARGS: check
238
239 avocado-system-centos:
240 extends: .avocado_test_job_template
241 needs:
242 - job: build-system-centos
243 artifacts: true
244 variables:
245 IMAGE: centos8
246 MAKE_CHECK_ARGS: check-avocado
247 AVOCADO_TAGS: arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx
248 arch:sh4 arch:nios2
249
250 build-system-opensuse:
251 extends:
252 - .native_build_job_template
253 - .native_build_artifact_template
254 needs:
255 job: amd64-opensuse-leap-container
256 variables:
257 IMAGE: opensuse-leap
258 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu
259 MAKE_CHECK_ARGS: check-build
260
261 check-system-opensuse:
262 extends: .native_test_job_template
263 needs:
264 - job: build-system-opensuse
265 artifacts: true
266 variables:
267 IMAGE: opensuse-leap
268 MAKE_CHECK_ARGS: check
269
270 avocado-system-opensuse:
271 extends: .avocado_test_job_template
272 needs:
273 - job: build-system-opensuse
274 artifacts: true
275 variables:
276 IMAGE: opensuse-leap
277 MAKE_CHECK_ARGS: check-avocado
278 AVOCADO_TAGS: arch:s390x arch:x86_64 arch:aarch64
279
280 #
281 # Flaky tests. We don't run these by default and they are allow fail
282 # but often the CI system is the only way to trigger the failures.
283 #
284
285 build-system-flaky:
286 extends:
287 - .native_build_job_template
288 - .native_build_artifact_template
289 needs:
290 job: amd64-debian-container
291 variables:
292 IMAGE: debian
293 QEMU_JOB_OPTIONAL: 1
294 TARGETS: aarch64-softmmu arm-softmmu mips64el-softmmu
295 ppc64-softmmu rx-softmmu s390x-softmmu sh4-softmmu x86_64-softmmu
296 MAKE_CHECK_ARGS: check-build
297
298 avocado-system-flaky:
299 extends: .avocado_test_job_template
300 needs:
301 - job: build-system-flaky
302 artifacts: true
303 allow_failure: true
304 variables:
305 IMAGE: debian
306 MAKE_CHECK_ARGS: check-avocado
307 QEMU_JOB_OPTIONAL: 1
308 QEMU_TEST_FLAKY_TESTS: 1
309 AVOCADO_TAGS: flaky
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 # Also use a different coroutine implementation (which is only really of
317 # interest to KVM users, i.e. with TCG disabled)
318 build-tcg-disabled:
319 extends: .native_build_job_template
320 needs:
321 job: amd64-centos8-container
322 variables:
323 IMAGE: centos8
324 script:
325 - mkdir build
326 - cd build
327 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext
328 --disable-docs --disable-sdl --disable-gtk --disable-vnc
329 || { cat config.log meson-logs/meson-log.txt && exit 1; }
330 - make -j"$JOBS"
331 - make check-unit
332 - make check-qapi-schema
333 - cd tests/qemu-iotests/
334 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
335 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
336 170 171 183 184 192 194 208 221 226 227 236 253 277 image-fleecing
337 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
338 124 132 139 142 144 145 151 152 155 157 165 194 196 200 202
339 208 209 216 218 227 234 246 247 248 250 254 255 257 258
340 260 261 262 263 264 270 272 273 277 279 image-fleecing
341
342 build-user:
343 extends: .native_build_job_template
344 needs:
345 job: amd64-debian-user-cross-container
346 variables:
347 IMAGE: debian-all-test-cross
348 CONFIGURE_ARGS: --disable-tools --disable-system
349 --target-list-exclude=alpha-linux-user,sh4-linux-user
350 MAKE_CHECK_ARGS: check-tcg
351
352 build-user-static:
353 extends: .native_build_job_template
354 needs:
355 job: amd64-debian-user-cross-container
356 variables:
357 IMAGE: debian-all-test-cross
358 CONFIGURE_ARGS: --disable-tools --disable-system --static
359 --target-list-exclude=alpha-linux-user,sh4-linux-user
360 MAKE_CHECK_ARGS: check-tcg
361
362 # targets stuck on older compilers
363 build-legacy:
364 extends: .native_build_job_template
365 needs:
366 job: amd64-debian-legacy-cross-container
367 variables:
368 IMAGE: debian-legacy-test-cross
369 TARGETS: alpha-linux-user alpha-softmmu sh4-linux-user
370 CONFIGURE_ARGS: --disable-tools
371 MAKE_CHECK_ARGS: check-tcg
372
373 build-user-hexagon:
374 extends: .native_build_job_template
375 needs:
376 job: hexagon-cross-container
377 variables:
378 IMAGE: debian-hexagon-cross
379 TARGETS: hexagon-linux-user
380 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg
381 MAKE_CHECK_ARGS: check-tcg
382
383 # Build the softmmu targets we have check-tcg tests and compilers in
384 # our omnibus all-test-cross container. Those targets that haven't got
385 # Debian cross compiler support need to use special containers.
386 build-some-softmmu:
387 extends: .native_build_job_template
388 needs:
389 job: amd64-debian-user-cross-container
390 variables:
391 IMAGE: debian-all-test-cross
392 CONFIGURE_ARGS: --disable-tools --enable-debug
393 TARGETS: arm-softmmu aarch64-softmmu i386-softmmu riscv64-softmmu
394 s390x-softmmu x86_64-softmmu
395 MAKE_CHECK_ARGS: check-tcg
396
397 build-loongarch64:
398 extends: .native_build_job_template
399 needs:
400 job: loongarch-debian-cross-container
401 variables:
402 IMAGE: debian-loongarch-cross
403 CONFIGURE_ARGS: --disable-tools --enable-debug
404 TARGETS: loongarch64-linux-user loongarch64-softmmu
405 MAKE_CHECK_ARGS: check-tcg
406
407 # We build tricore in a very minimal tricore only container
408 build-tricore-softmmu:
409 extends: .native_build_job_template
410 needs:
411 job: tricore-debian-cross-container
412 variables:
413 IMAGE: debian-tricore-cross
414 CONFIGURE_ARGS: --disable-tools --disable-fdt --enable-debug
415 TARGETS: tricore-softmmu
416 MAKE_CHECK_ARGS: check-tcg
417
418 clang-system:
419 extends: .native_build_job_template
420 needs:
421 job: amd64-fedora-container
422 variables:
423 IMAGE: fedora
424 CONFIGURE_ARGS: --cc=clang --cxx=clang++
425 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
426 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu s390x-softmmu
427 MAKE_CHECK_ARGS: check-qtest check-tcg
428
429 clang-user:
430 extends: .native_build_job_template
431 needs:
432 job: amd64-debian-user-cross-container
433 timeout: 70m
434 variables:
435 IMAGE: debian-all-test-cross
436 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system
437 --target-list-exclude=alpha-linux-user,microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user
438 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined
439 MAKE_CHECK_ARGS: check-unit check-tcg
440
441 # Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory.
442 # On gitlab runners, default value sometimes end up calling 2 lds concurrently and
443 # triggers an Out-Of-Memory error
444 #
445 # Since slirp callbacks are used in QEMU Timers, we cannot use libslirp with
446 # CFI builds, and thus have to disable it here.
447 #
448 # Split in three sets of build/check/avocado to limit the execution time of each
449 # job
450 build-cfi-aarch64:
451 extends:
452 - .native_build_job_template
453 - .native_build_artifact_template
454 needs:
455 - job: amd64-fedora-container
456 variables:
457 LD_JOBS: 1
458 AR: llvm-ar
459 IMAGE: fedora
460 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
461 --enable-safe-stack --disable-slirp
462 TARGETS: aarch64-softmmu
463 MAKE_CHECK_ARGS: check-build
464 # FIXME: This job is often failing, likely due to out-of-memory problems in
465 # the constrained containers of the shared runners. Thus this is marked as
466 # skipped until the situation has been solved.
467 QEMU_JOB_SKIPPED: 1
468 timeout: 90m
469
470 check-cfi-aarch64:
471 extends: .native_test_job_template
472 needs:
473 - job: build-cfi-aarch64
474 artifacts: true
475 variables:
476 IMAGE: fedora
477 MAKE_CHECK_ARGS: check
478
479 avocado-cfi-aarch64:
480 extends: .avocado_test_job_template
481 needs:
482 - job: build-cfi-aarch64
483 artifacts: true
484 variables:
485 IMAGE: fedora
486 MAKE_CHECK_ARGS: check-avocado
487
488 build-cfi-ppc64-s390x:
489 extends:
490 - .native_build_job_template
491 - .native_build_artifact_template
492 needs:
493 - job: amd64-fedora-container
494 variables:
495 LD_JOBS: 1
496 AR: llvm-ar
497 IMAGE: fedora
498 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
499 --enable-safe-stack --disable-slirp
500 TARGETS: ppc64-softmmu s390x-softmmu
501 MAKE_CHECK_ARGS: check-build
502 # FIXME: This job is often failing, likely due to out-of-memory problems in
503 # the constrained containers of the shared runners. Thus this is marked as
504 # skipped until the situation has been solved.
505 QEMU_JOB_SKIPPED: 1
506 timeout: 80m
507
508 check-cfi-ppc64-s390x:
509 extends: .native_test_job_template
510 needs:
511 - job: build-cfi-ppc64-s390x
512 artifacts: true
513 variables:
514 IMAGE: fedora
515 MAKE_CHECK_ARGS: check
516
517 avocado-cfi-ppc64-s390x:
518 extends: .avocado_test_job_template
519 needs:
520 - job: build-cfi-ppc64-s390x
521 artifacts: true
522 variables:
523 IMAGE: fedora
524 MAKE_CHECK_ARGS: check-avocado
525
526 build-cfi-x86_64:
527 extends:
528 - .native_build_job_template
529 - .native_build_artifact_template
530 needs:
531 - job: amd64-fedora-container
532 variables:
533 LD_JOBS: 1
534 AR: llvm-ar
535 IMAGE: fedora
536 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug
537 --enable-safe-stack --disable-slirp
538 TARGETS: x86_64-softmmu
539 MAKE_CHECK_ARGS: check-build
540 timeout: 70m
541
542 check-cfi-x86_64:
543 extends: .native_test_job_template
544 needs:
545 - job: build-cfi-x86_64
546 artifacts: true
547 variables:
548 IMAGE: fedora
549 MAKE_CHECK_ARGS: check
550
551 avocado-cfi-x86_64:
552 extends: .avocado_test_job_template
553 needs:
554 - job: build-cfi-x86_64
555 artifacts: true
556 variables:
557 IMAGE: fedora
558 MAKE_CHECK_ARGS: check-avocado
559
560 tsan-build:
561 extends: .native_build_job_template
562 needs:
563 job: amd64-ubuntu2204-container
564 variables:
565 IMAGE: ubuntu2204
566 CONFIGURE_ARGS: --enable-tsan --cc=clang --cxx=clang++
567 --enable-trace-backends=ust --disable-slirp
568 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user
569
570 # gcov is a GCC features
571 gcov:
572 extends: .native_build_job_template
573 needs:
574 job: amd64-ubuntu2204-container
575 timeout: 80m
576 variables:
577 IMAGE: ubuntu2204
578 CONFIGURE_ARGS: --enable-gcov
579 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu
580 MAKE_CHECK_ARGS: check-unit check-softfloat
581 after_script:
582 - cd build
583 - gcovr --xml-pretty --exclude-unreachable-branches --print-summary
584 -o coverage.xml --root ${CI_PROJECT_DIR} . *.p
585 coverage: /^\s*lines:\s*\d+.\d+\%/
586 artifacts:
587 name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
588 when: always
589 expire_in: 2 days
590 paths:
591 - build/meson-logs/testlog.txt
592 reports:
593 junit: build/meson-logs/testlog.junit.xml
594 coverage_report:
595 coverage_format: cobertura
596 path: build/coverage.xml
597
598 build-oss-fuzz:
599 extends: .native_build_job_template
600 needs:
601 job: amd64-fedora-container
602 variables:
603 IMAGE: fedora
604 script:
605 - mkdir build-oss-fuzz
606 - export LSAN_OPTIONS=suppressions=scripts/oss-fuzz/lsan_suppressions.txt
607 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
608 ./scripts/oss-fuzz/build.sh
609 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
610 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
611 | grep -v slirp); do
612 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
613 echo Testing ${fuzzer} ... ;
614 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
615 done
616
617 build-tci:
618 extends: .native_build_job_template
619 needs:
620 job: amd64-debian-user-cross-container
621 variables:
622 IMAGE: debian-all-test-cross
623 script:
624 - TARGETS="aarch64 arm hppa m68k microblaze ppc64 s390x x86_64"
625 - mkdir build
626 - cd build
627 - ../configure --enable-tcg-interpreter --disable-docs --disable-gtk --disable-vnc
628 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
629 || { cat config.log meson-logs/meson-log.txt && exit 1; }
630 - make -j"$JOBS"
631 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
632 - for tg in $TARGETS ; do
633 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
634 ./tests/qtest/boot-serial-test || exit 1 ;
635 ./tests/qtest/cdrom-test || exit 1 ;
636 done
637 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
638 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
639 - make check-tcg
640
641 # Check our reduced build configurations
642 build-without-defaults:
643 extends: .native_build_job_template
644 needs:
645 job: amd64-centos8-container
646 variables:
647 IMAGE: centos8
648 CONFIGURE_ARGS:
649 --without-default-devices
650 --without-default-features
651 --disable-fdt
652 --disable-pie
653 --disable-qom-cast-debug
654 --disable-strip
655 TARGETS: avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
656 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
657 MAKE_CHECK_ARGS: check
658
659 build-libvhost-user:
660 extends: .base_job_template
661 stage: build
662 image: $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
663 needs:
664 job: amd64-fedora-container
665 script:
666 - mkdir subprojects/libvhost-user/build
667 - cd subprojects/libvhost-user/build
668 - meson
669 - ninja
670
671 # No targets are built here, just tools, docs, and unit tests. This
672 # also feeds into the eventual documentation deployment steps later
673 build-tools-and-docs-debian:
674 extends:
675 - .native_build_job_template
676 - .native_build_artifact_template
677 needs:
678 job: amd64-debian-container
679 # when running on 'master' we use pre-existing container
680 optional: true
681 variables:
682 IMAGE: debian
683 MAKE_CHECK_ARGS: check-unit ctags TAGS cscope
684 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
685 QEMU_JOB_PUBLISH: 1
686
687 # Prepare for GitLab pages deployment. Anything copied into the
688 # "public" directory will be deployed to $USER.gitlab.io/$PROJECT
689 #
690 # GitLab publishes from any branch that triggers a CI pipeline
691 #
692 # For the main repo we don't want to publish from 'staging'
693 # since that content may not be pushed, nor do we wish to
694 # publish from 'stable-NNN' branches as that content is outdated.
695 # Thus we restrict to just the default branch
696 #
697 # For contributor forks we want to publish from any repo so
698 # that users can see the results of their commits, regardless
699 # of what topic branch they're currently using
700 pages:
701 extends: .base_job_template
702 image: $CI_REGISTRY_IMAGE/qemu/debian:$QEMU_CI_CONTAINER_TAG
703 stage: test
704 needs:
705 - job: build-tools-and-docs-debian
706 script:
707 - mkdir -p public
708 # HTML-ised source tree
709 - make gtags
710 # We unset variables to work around a bug in some htags versions
711 # which causes it to fail when the environment is large
712 - CI_COMMIT_MESSAGE= CI_COMMIT_TAG_MESSAGE= htags
713 -anT --tree-view=filetree -m qemu_init
714 -t "Welcome to the QEMU sourcecode"
715 - mv HTML public/src
716 # Project documentation
717 - make -C build install DESTDIR=$(pwd)/temp-install
718 - mv temp-install/usr/local/share/doc/qemu/* public/
719 artifacts:
720 when: on_success
721 paths:
722 - public
723 variables:
724 QEMU_JOB_PUBLISH: 1