]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.yml
gitlab: move linux-user plugins test across to gitlab
[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 # We assume GitLab has it's own caching set up for RPM/APT repositories so we
11 # just take care of avocado assets here.
12 cache:
13 paths:
14 - $HOME/avocado/data/cache
15
16 include:
17 - local: '/.gitlab-ci.d/edk2.yml'
18 - local: '/.gitlab-ci.d/opensbi.yml'
19 - local: '/.gitlab-ci.d/containers.yml'
20 - local: '/.gitlab-ci.d/crossbuilds.yml'
21
22 .native_build_job_template: &native_build_job_definition
23 stage: build
24 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
25 before_script:
26 - JOBS=$(expr $(nproc) + 1)
27 script:
28 - mkdir build
29 - cd build
30 - if test -n "$TARGETS";
31 then
32 ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
33 else
34 ../configure --enable-werror $CONFIGURE_ARGS ;
35 fi
36 - make -j"$JOBS"
37 - if test -n "$MAKE_CHECK_ARGS";
38 then
39 make -j"$JOBS" $MAKE_CHECK_ARGS ;
40 fi
41
42 .native_test_job_template: &native_test_job_definition
43 stage: test
44 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
45 script:
46 - cd build
47 - find . -type f -exec touch {} +
48 - make $MAKE_CHECK_ARGS
49
50 .acceptance_template: &acceptance_definition
51 cache:
52 key: "${CI_JOB_NAME}-cache"
53 paths:
54 - ${CI_PROJECT_DIR}/avocado-cache
55 policy: pull-push
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 after_script:
65 - cd build
66 - 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")]' | xargs cat
67 - du -chs ${CI_PROJECT_DIR}/avocado-cache
68
69 build-system-ubuntu:
70 <<: *native_build_job_definition
71 variables:
72 IMAGE: ubuntu2004
73 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
74 moxie-softmmu microblazeel-softmmu mips64el-softmmu
75 MAKE_CHECK_ARGS: check-build
76 artifacts:
77 expire_in: 2 days
78 paths:
79 - build
80
81 check-system-ubuntu:
82 <<: *native_test_job_definition
83 needs:
84 - job: build-system-ubuntu
85 artifacts: true
86 variables:
87 IMAGE: ubuntu2004
88 MAKE_CHECK_ARGS: check
89
90 acceptance-system-ubuntu:
91 <<: *native_test_job_definition
92 needs:
93 - job: build-system-ubuntu
94 artifacts: true
95 variables:
96 IMAGE: ubuntu2004
97 MAKE_CHECK_ARGS: check-acceptance
98 <<: *acceptance_definition
99
100 build-system-debian:
101 <<: *native_build_job_definition
102 variables:
103 IMAGE: debian-amd64
104 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
105 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
106 MAKE_CHECK_ARGS: check-build
107 artifacts:
108 expire_in: 2 days
109 paths:
110 - build
111
112 check-system-debian:
113 <<: *native_test_job_definition
114 needs:
115 - job: build-system-debian
116 artifacts: true
117 variables:
118 IMAGE: debian-amd64
119 MAKE_CHECK_ARGS: check
120
121 acceptance-system-debian:
122 <<: *native_test_job_definition
123 needs:
124 - job: build-system-debian
125 artifacts: true
126 variables:
127 IMAGE: debian-amd64
128 MAKE_CHECK_ARGS: check-acceptance
129 <<: *acceptance_definition
130
131 build-system-fedora:
132 <<: *native_build_job_definition
133 variables:
134 IMAGE: fedora
135 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
136 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
137 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
138 MAKE_CHECK_ARGS: check-build
139 artifacts:
140 expire_in: 2 days
141 paths:
142 - build
143
144 check-system-fedora:
145 <<: *native_test_job_definition
146 needs:
147 - job: build-system-fedora
148 artifacts: true
149 variables:
150 IMAGE: fedora
151 MAKE_CHECK_ARGS: check
152
153 acceptance-system-fedora:
154 <<: *native_test_job_definition
155 needs:
156 - job: build-system-fedora
157 artifacts: true
158 variables:
159 IMAGE: fedora
160 MAKE_CHECK_ARGS: check-acceptance
161 <<: *acceptance_definition
162
163 build-system-centos:
164 <<: *native_build_job_definition
165 variables:
166 IMAGE: centos8
167 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
168 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
169 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
170 MAKE_CHECK_ARGS: check-build
171 artifacts:
172 expire_in: 2 days
173 paths:
174 - build
175
176 check-system-centos:
177 <<: *native_test_job_definition
178 needs:
179 - job: build-system-centos
180 artifacts: true
181 variables:
182 IMAGE: centos8
183 MAKE_CHECK_ARGS: check
184
185 acceptance-system-centos:
186 <<: *native_test_job_definition
187 needs:
188 - job: build-system-centos
189 artifacts: true
190 variables:
191 IMAGE: centos8
192 MAKE_CHECK_ARGS: check-acceptance
193 <<: *acceptance_definition
194
195 build-disabled:
196 <<: *native_build_job_definition
197 variables:
198 IMAGE: fedora
199 CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs
200 --disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone
201 --disable-cloop --disable-coroutine-pool --disable-curl --disable-curses
202 --disable-dmg --disable-docs --disable-glusterfs --disable-gnutls
203 --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm
204 --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb
205 --disable-libxml2 --disable-linux-aio --disable-live-block-migration
206 --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle
207 --disable-numa --disable-parallels --disable-pie --disable-qcow1
208 --disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma
209 --disable-replication --disable-sdl --disable-seccomp --disable-sheepdog
210 --disable-slirp --disable-smartcard --disable-snappy --disable-spice
211 --disable-strip --disable-tpm --disable-usb-redir --disable-vdi
212 --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi
213 --disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock
214 --disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat
215 --disable-xen --disable-zstd
216 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
217 s390x-softmmu i386-linux-user
218 MAKE_CHECK_ARGS: check-qtest SPEED=slow
219
220 build-tcg-disabled:
221 <<: *native_build_job_definition
222 variables:
223 IMAGE: centos8
224 script:
225 - mkdir build
226 - cd build
227 - ../configure --disable-tcg --audio-drv-list=""
228 - make -j"$JOBS"
229 - make check-unit
230 - make check-qapi-schema
231 - cd tests/qemu-iotests/
232 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
233 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
234 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
235 - ./check -qcow2 028 051 056 057 058 065 067 068 082 085 091 095 096 102 122
236 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
237 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
238 260 261 262 263 264 270 272 273 277 279
239
240 build-user:
241 <<: *native_build_job_definition
242 variables:
243 IMAGE: debian-all-test-cross
244 CONFIGURE_ARGS: --disable-tools --disable-system
245 MAKE_CHECK_ARGS: check-tcg
246
247 # Run check-tcg against linux-user (with plugins)
248 # we skip sparc64-linux-user until it has been fixed somewhat
249 # we skip cris-linux-user as it doesn't use the common run loop
250 build-user-plugins:
251 <<: *native_build_job_definition
252 variables:
253 IMAGE: debian-all-test-cross
254 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
255 MAKE_CHECK_ARGS: check-tcg
256 timeout: 1h 30m
257
258 build-clang:
259 <<: *native_build_job_definition
260 variables:
261 IMAGE: fedora
262 CONFIGURE_ARGS: --cc=clang --cxx=clang++
263 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
264 ppc-softmmu s390x-softmmu arm-linux-user
265 MAKE_CHECK_ARGS: check
266
267 # These targets are on the way out
268 build-deprecated:
269 <<: *native_build_job_definition
270 variables:
271 IMAGE: debian-all-test-cross
272 CONFIGURE_ARGS: --disable-docs --disable-tools
273 MAKE_CHECK_ARGS: check-tcg
274 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
275 unicore32-softmmu
276 allow_failure: true
277
278 build-oss-fuzz:
279 <<: *native_build_job_definition
280 variables:
281 IMAGE: fedora
282 script:
283 - mkdir build-oss-fuzz
284 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
285 ./scripts/oss-fuzz/build.sh
286 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
287 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
288 | grep -v slirp); do
289 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
290 echo Testing ${fuzzer} ... ;
291 "${fuzzer}" -runs=1000 -seed=1 || exit 1 ;
292 done
293 # Unrelated to fuzzer: run some tests with -fsanitize=address
294 - cd build-oss-fuzz && make check-qtest-i386 check-unit
295
296 build-tci:
297 <<: *native_build_job_definition
298 variables:
299 IMAGE: fedora
300 script:
301 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
302 - mkdir build
303 - cd build
304 - ../configure --enable-tcg-interpreter
305 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
306 - make -j"$JOBS"
307 - make run-tcg-tests-x86_64-softmmu
308 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
309 - for tg in $TARGETS ; do
310 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
311 ./tests/qtest/boot-serial-test || exit 1 ;
312 ./tests/qtest/cdrom-test || exit 1 ;
313 done
314 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
315 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
316
317 # Most jobs test latest gcrypt or nettle builds
318 #
319 # These jobs test old gcrypt and nettle from RHEL7
320 # which had some API differences.
321 build-crypto-old-nettle:
322 <<: *native_build_job_definition
323 variables:
324 IMAGE: centos7
325 TARGETS: x86_64-softmmu x86_64-linux-user
326 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
327 MAKE_CHECK_ARGS: check-build
328 artifacts:
329 paths:
330 - build
331
332 check-crypto-old-nettle:
333 <<: *native_test_job_definition
334 needs:
335 - job: build-crypto-old-nettle
336 artifacts: true
337 variables:
338 IMAGE: centos7
339 MAKE_CHECK_ARGS: check
340
341
342 build-crypto-old-gcrypt:
343 <<: *native_build_job_definition
344 variables:
345 IMAGE: centos7
346 TARGETS: x86_64-softmmu x86_64-linux-user
347 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
348 MAKE_CHECK_ARGS: check-build
349 artifacts:
350 paths:
351 - build
352
353 check-crypto-old-gcrypt:
354 <<: *native_test_job_definition
355 needs:
356 - job: build-crypto-old-gcrypt
357 artifacts: true
358 variables:
359 IMAGE: centos7
360 MAKE_CHECK_ARGS: check
361
362
363 build-crypto-only-gnutls:
364 <<: *native_build_job_definition
365 variables:
366 IMAGE: centos7
367 TARGETS: x86_64-softmmu x86_64-linux-user
368 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
369 MAKE_CHECK_ARGS: check-build
370 artifacts:
371 paths:
372 - build
373
374 check-crypto-only-gnutls:
375 <<: *native_test_job_definition
376 needs:
377 - job: build-crypto-only-gnutls
378 artifacts: true
379 variables:
380 IMAGE: centos7
381 MAKE_CHECK_ARGS: check