]> git.proxmox.com Git - mirror_qemu.git/blob - .gitlab-ci.yml
gitlab-ci: Remove the Debian9-based containers and containers-layer3
[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 build-clang:
248 <<: *native_build_job_definition
249 variables:
250 IMAGE: fedora
251 CONFIGURE_ARGS: --cc=clang --cxx=clang++
252 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
253 ppc-softmmu s390x-softmmu arm-linux-user
254 MAKE_CHECK_ARGS: check
255
256 # These targets are on the way out
257 build-deprecated:
258 <<: *native_build_job_definition
259 variables:
260 IMAGE: debian-all-test-cross
261 CONFIGURE_ARGS: --disable-docs --disable-tools
262 MAKE_CHECK_ARGS: check-tcg
263 TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
264 unicore32-softmmu
265 allow_failure: true
266
267 build-oss-fuzz:
268 <<: *native_build_job_definition
269 variables:
270 IMAGE: fedora
271 script:
272 - mkdir build-oss-fuzz
273 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
274 ./scripts/oss-fuzz/build.sh
275 - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
276 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
277 | grep -v slirp); do
278 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
279 echo Testing ${fuzzer} ... ;
280 "${fuzzer}" -runs=1000 -seed=1 || exit 1 ;
281 done
282 # Unrelated to fuzzer: run some tests with -fsanitize=address
283 - cd build-oss-fuzz && make check-qtest-i386 check-unit
284
285 build-tci:
286 <<: *native_build_job_definition
287 variables:
288 IMAGE: fedora
289 script:
290 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
291 - mkdir build
292 - cd build
293 - ../configure --enable-tcg-interpreter
294 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)"
295 - make -j"$JOBS"
296 - make run-tcg-tests-x86_64-softmmu
297 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
298 - for tg in $TARGETS ; do
299 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
300 ./tests/qtest/boot-serial-test || exit 1 ;
301 ./tests/qtest/cdrom-test || exit 1 ;
302 done
303 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
304 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow
305
306 # Most jobs test latest gcrypt or nettle builds
307 #
308 # These jobs test old gcrypt and nettle from RHEL7
309 # which had some API differences.
310 build-crypto-old-nettle:
311 <<: *native_build_job_definition
312 variables:
313 IMAGE: centos7
314 TARGETS: x86_64-softmmu x86_64-linux-user
315 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
316 MAKE_CHECK_ARGS: check-build
317 artifacts:
318 paths:
319 - build
320
321 check-crypto-old-nettle:
322 <<: *native_test_job_definition
323 needs:
324 - job: build-crypto-old-nettle
325 artifacts: true
326 variables:
327 IMAGE: centos7
328 MAKE_CHECK_ARGS: check
329
330
331 build-crypto-old-gcrypt:
332 <<: *native_build_job_definition
333 variables:
334 IMAGE: centos7
335 TARGETS: x86_64-softmmu x86_64-linux-user
336 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
337 MAKE_CHECK_ARGS: check-build
338 artifacts:
339 paths:
340 - build
341
342 check-crypto-old-gcrypt:
343 <<: *native_test_job_definition
344 needs:
345 - job: build-crypto-old-gcrypt
346 artifacts: true
347 variables:
348 IMAGE: centos7
349 MAKE_CHECK_ARGS: check
350
351
352 build-crypto-only-gnutls:
353 <<: *native_build_job_definition
354 variables:
355 IMAGE: centos7
356 TARGETS: x86_64-softmmu x86_64-linux-user
357 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
358 MAKE_CHECK_ARGS: check-build
359 artifacts:
360 paths:
361 - build
362
363 check-crypto-only-gnutls:
364 <<: *native_test_job_definition
365 needs:
366 - job: build-crypto-only-gnutls
367 artifacts: true
368 variables:
369 IMAGE: centos7
370 MAKE_CHECK_ARGS: check