]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.yml
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20201110' into...
[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: --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
221 MAKE_CHECK_ARGS: check-qtest SPEED=slow
222
223 build-tcg-disabled:
224 <<: *native_build_job_definition
225 variables:
226 IMAGE: centos8
227 script:
228 - mkdir build
229 - cd build
230 - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
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
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
238 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
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
242
243 build-user:
244 <<: *native_build_job_definition
245 variables:
246 IMAGE: debian-all-test-cross
247 CONFIGURE_ARGS: --disable-tools --disable-system
248 MAKE_CHECK_ARGS: check-tcg
249
250 # Run check-tcg against linux-user (with plugins)
251 # we skip sparc64-linux-user until it has been fixed somewhat
252 # we skip cris-linux-user as it doesn't use the common run loop
253 build-user-plugins:
254 <<: *native_build_job_definition
255 variables:
256 IMAGE: debian-all-test-cross
257 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
258 MAKE_CHECK_ARGS: check-tcg
259 timeout: 1h 30m
260
261 build-clang:
262 <<: *native_build_job_definition
263 variables:
264 IMAGE: fedora
265 CONFIGURE_ARGS: --cc=clang --cxx=clang++
266 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
267 ppc-softmmu s390x-softmmu arm-linux-user
268 MAKE_CHECK_ARGS: check
269
270 # These targets are on the way out
271 build-deprecated:
272 <<: *native_build_job_definition
273 variables:
274 IMAGE: debian-all-test-cross
275 CONFIGURE_ARGS: --disable-docs --disable-tools
276 MAKE_CHECK_ARGS: build-tcg
277 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
278 unicore32-softmmu
279 artifacts:
280 expire_in: 2 days
281 paths:
282 - build
283
284 # We split the check-tcg step as test failures are expected but we still
285 # want to catch the build breaking.
286 check-deprecated:
287 <<: *native_test_job_definition
288 needs:
289 - job: build-deprecated
290 artifacts: true
291 variables:
292 IMAGE: debian-all-test-cross
293 MAKE_CHECK_ARGS: check-tcg
294 allow_failure: true
295
296 build-oss-fuzz:
297 <<: *native_build_job_definition
298 variables:
299 IMAGE: fedora
300 script:
301 - mkdir build-oss-fuzz
302 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
303 ./scripts/oss-fuzz/build.sh
304 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
305 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
306 | grep -v slirp); do
307 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
308 echo Testing ${fuzzer} ... ;
309 "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
310 done
311 # Unrelated to fuzzer: run some tests with -fsanitize=address
312 - cd build-oss-fuzz && make check-qtest-i386 check-unit
313
314 build-tci:
315 <<: *native_build_job_definition
316 variables:
317 IMAGE: fedora
318 script:
319 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
320 - mkdir build
321 - cd build
322 - ../configure --enable-tcg-interpreter
323 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
324 - make -j"$JOBS"
325 - make run-tcg-tests-x86_64-softmmu
326 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
327 - for tg in $TARGETS ; do
328 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
329 ./tests/qtest/boot-serial-test || exit 1 ;
330 ./tests/qtest/cdrom-test || exit 1 ;
331 done
332 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
333 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
334
335 # Most jobs test latest gcrypt or nettle builds
336 #
337 # These jobs test old gcrypt and nettle from RHEL7
338 # which had some API differences.
339 build-crypto-old-nettle:
340 <<: *native_build_job_definition
341 variables:
342 IMAGE: centos7
343 TARGETS: x86_64-softmmu x86_64-linux-user
344 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
345 MAKE_CHECK_ARGS: check-build
346 artifacts:
347 paths:
348 - build
349
350 check-crypto-old-nettle:
351 <<: *native_test_job_definition
352 needs:
353 - job: build-crypto-old-nettle
354 artifacts: true
355 variables:
356 IMAGE: centos7
357 MAKE_CHECK_ARGS: check
358
359
360 build-crypto-old-gcrypt:
361 <<: *native_build_job_definition
362 variables:
363 IMAGE: centos7
364 TARGETS: x86_64-softmmu x86_64-linux-user
365 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
366 MAKE_CHECK_ARGS: check-build
367 artifacts:
368 paths:
369 - build
370
371 check-crypto-old-gcrypt:
372 <<: *native_test_job_definition
373 needs:
374 - job: build-crypto-old-gcrypt
375 artifacts: true
376 variables:
377 IMAGE: centos7
378 MAKE_CHECK_ARGS: check
379
380
381 build-crypto-only-gnutls:
382 <<: *native_build_job_definition
383 variables:
384 IMAGE: centos7
385 TARGETS: x86_64-softmmu x86_64-linux-user
386 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
387 MAKE_CHECK_ARGS: check-build
388 artifacts:
389 paths:
390 - build
391
392 check-crypto-only-gnutls:
393 <<: *native_test_job_definition
394 needs:
395 - job: build-crypto-only-gnutls
396 artifacts: true
397 variables:
398 IMAGE: centos7
399 MAKE_CHECK_ARGS: check
400
401
402 check-patch:
403 stage: build
404 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
405 script: .gitlab-ci.d/check-patch.py
406 except:
407 variables:
408 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
409 variables:
410 GIT_DEPTH: 1000
411 allow_failure: true
412
413 check-dco:
414 stage: build
415 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
416 script: .gitlab-ci.d/check-dco.py
417 except:
418 variables:
419 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
420 variables:
421 GIT_DEPTH: 1000
422
423 pages:
424 image: $CI_REGISTRY_IMAGE/qemu/ubuntu2004:latest
425 stage: test
426 needs:
427 - job: build-system-ubuntu
428 artifacts: true
429 script:
430 - mkdir public
431 - mv build/docs/index.html public/
432 - for i in devel interop specs system tools user ; do mv build/docs/$i public/ ; done
433 artifacts:
434 paths:
435 - public