]>
Commit | Line | Data |
---|---|---|
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 | name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" | |
53 | when: always | |
54 | expire_in: 2 days | |
55 | paths: | |
56 | - build/tests/results/latest/results.xml | |
57 | - build/tests/results/latest/test-results | |
58 | reports: | |
59 | junit: build/tests/results/latest/results.xml | |
60 | before_script: | |
61 | - mkdir -p ~/.config/avocado | |
62 | - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf | |
63 | - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']" | |
64 | >> ~/.config/avocado/avocado.conf | |
65 | - echo -e '[job.output.testlogs]\nstatuses = ["FAIL"]' | |
66 | >> ~/.config/avocado/avocado.conf | |
67 | - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then | |
68 | du -chs ${CI_PROJECT_DIR}/avocado-cache ; | |
69 | fi | |
70 | - export AVOCADO_ALLOW_UNTRUSTED_CODE=1 | |
71 | after_script: | |
72 | - cd build | |
73 | - du -chs ${CI_PROJECT_DIR}/avocado-cache | |
74 | ||
75 | build-system-ubuntu: | |
76 | <<: *native_build_job_definition | |
77 | variables: | |
78 | IMAGE: ubuntu2004 | |
79 | TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu | |
80 | moxie-softmmu microblazeel-softmmu mips64el-softmmu | |
81 | MAKE_CHECK_ARGS: check-build | |
82 | CONFIGURE_ARGS: --enable-docs | |
83 | artifacts: | |
84 | expire_in: 2 days | |
85 | paths: | |
86 | - build | |
87 | ||
88 | check-system-ubuntu: | |
89 | <<: *native_test_job_definition | |
90 | needs: | |
91 | - job: build-system-ubuntu | |
92 | artifacts: true | |
93 | variables: | |
94 | IMAGE: ubuntu2004 | |
95 | MAKE_CHECK_ARGS: check | |
96 | ||
97 | acceptance-system-ubuntu: | |
98 | <<: *native_test_job_definition | |
99 | needs: | |
100 | - job: build-system-ubuntu | |
101 | artifacts: true | |
102 | variables: | |
103 | IMAGE: ubuntu2004 | |
104 | MAKE_CHECK_ARGS: check-acceptance | |
105 | <<: *acceptance_definition | |
106 | ||
107 | build-system-debian: | |
108 | <<: *native_build_job_definition | |
109 | variables: | |
110 | IMAGE: debian-amd64 | |
111 | TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu | |
112 | riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu | |
113 | MAKE_CHECK_ARGS: check-build | |
114 | CONFIGURE_ARGS: --enable-docs | |
115 | artifacts: | |
116 | expire_in: 2 days | |
117 | paths: | |
118 | - build | |
119 | ||
120 | check-system-debian: | |
121 | <<: *native_test_job_definition | |
122 | needs: | |
123 | - job: build-system-debian | |
124 | artifacts: true | |
125 | variables: | |
126 | IMAGE: debian-amd64 | |
127 | MAKE_CHECK_ARGS: check | |
128 | ||
129 | acceptance-system-debian: | |
130 | <<: *native_test_job_definition | |
131 | needs: | |
132 | - job: build-system-debian | |
133 | artifacts: true | |
134 | variables: | |
135 | IMAGE: debian-amd64 | |
136 | MAKE_CHECK_ARGS: check-acceptance | |
137 | <<: *acceptance_definition | |
138 | ||
139 | build-system-fedora: | |
140 | <<: *native_build_job_definition | |
141 | variables: | |
142 | IMAGE: fedora | |
143 | CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs | |
144 | TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu | |
145 | xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu | |
146 | MAKE_CHECK_ARGS: check-build | |
147 | artifacts: | |
148 | expire_in: 2 days | |
149 | paths: | |
150 | - build | |
151 | ||
152 | check-system-fedora: | |
153 | <<: *native_test_job_definition | |
154 | needs: | |
155 | - job: build-system-fedora | |
156 | artifacts: true | |
157 | variables: | |
158 | IMAGE: fedora | |
159 | MAKE_CHECK_ARGS: check | |
160 | ||
161 | acceptance-system-fedora: | |
162 | <<: *native_test_job_definition | |
163 | needs: | |
164 | - job: build-system-fedora | |
165 | artifacts: true | |
166 | variables: | |
167 | IMAGE: fedora | |
168 | MAKE_CHECK_ARGS: check-acceptance | |
169 | <<: *acceptance_definition | |
170 | ||
171 | build-system-centos: | |
172 | <<: *native_build_job_definition | |
173 | variables: | |
174 | IMAGE: centos8 | |
175 | CONFIGURE_ARGS: --disable-nettle --enable-gcrypt | |
176 | TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu | |
177 | x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu | |
178 | MAKE_CHECK_ARGS: check-build | |
179 | artifacts: | |
180 | expire_in: 2 days | |
181 | paths: | |
182 | - build | |
183 | ||
184 | check-system-centos: | |
185 | <<: *native_test_job_definition | |
186 | needs: | |
187 | - job: build-system-centos | |
188 | artifacts: true | |
189 | variables: | |
190 | IMAGE: centos8 | |
191 | MAKE_CHECK_ARGS: check | |
192 | ||
193 | acceptance-system-centos: | |
194 | <<: *native_test_job_definition | |
195 | needs: | |
196 | - job: build-system-centos | |
197 | artifacts: true | |
198 | variables: | |
199 | IMAGE: centos8 | |
200 | MAKE_CHECK_ARGS: check-acceptance | |
201 | <<: *acceptance_definition | |
202 | ||
203 | build-disabled: | |
204 | <<: *native_build_job_definition | |
205 | variables: | |
206 | IMAGE: fedora | |
207 | CONFIGURE_ARGS: | |
208 | --disable-attr | |
209 | --disable-auth-pam | |
210 | --disable-avx2 | |
211 | --disable-bochs | |
212 | --disable-brlapi | |
213 | --disable-bzip2 | |
214 | --disable-cap-ng | |
215 | --disable-capstone | |
216 | --disable-cloop | |
217 | --disable-coroutine-pool | |
218 | --disable-curl | |
219 | --disable-curses | |
220 | --disable-dmg | |
221 | --disable-docs | |
222 | --disable-gcrypt | |
223 | --disable-glusterfs | |
224 | --disable-gnutls | |
225 | --disable-gtk | |
226 | --disable-guest-agent | |
227 | --disable-iconv | |
228 | --disable-keyring | |
229 | --disable-kvm | |
230 | --disable-libiscsi | |
231 | --disable-libpmem | |
232 | --disable-libssh | |
233 | --disable-libudev | |
234 | --disable-libusb | |
235 | --disable-libxml2 | |
236 | --disable-linux-aio | |
237 | --disable-live-block-migration | |
238 | --disable-lzo | |
239 | --disable-malloc-trim | |
240 | --disable-mpath | |
241 | --disable-nettle | |
242 | --disable-numa | |
243 | --disable-opengl | |
244 | --disable-parallels | |
245 | --disable-pie | |
246 | --disable-qcow1 | |
247 | --disable-qed | |
248 | --disable-qom-cast-debug | |
249 | --disable-rbd | |
250 | --disable-rdma | |
251 | --disable-replication | |
252 | --disable-sdl | |
253 | --disable-seccomp | |
254 | --disable-sheepdog | |
255 | --disable-slirp | |
256 | --disable-smartcard | |
257 | --disable-snappy | |
258 | --disable-sparse | |
259 | --disable-spice | |
260 | --disable-strip | |
261 | --disable-tpm | |
262 | --disable-usb-redir | |
263 | --disable-vdi | |
264 | --disable-vhost-crypto | |
265 | --disable-vhost-net | |
266 | --disable-vhost-scsi | |
267 | --disable-vhost-user | |
268 | --disable-vhost-vdpa | |
269 | --disable-vhost-vsock | |
270 | --disable-virglrenderer | |
271 | --disable-vnc | |
272 | --disable-vte | |
273 | --disable-vvfat | |
274 | --disable-xen | |
275 | --disable-zstd | |
276 | TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu | |
277 | s390x-softmmu i386-linux-user | |
278 | MAKE_CHECK_ARGS: check-qtest SPEED=slow | |
279 | ||
280 | # This jobs explicitly disable TCG (--disable-tcg), KVM is detected by | |
281 | # the configure script. The container doesn't contain Xen headers so | |
282 | # Xen accelerator is not detected / selected. As result it build the | |
283 | # i386-softmmu and x86_64-softmmu with KVM being the single accelerator | |
284 | # available. | |
285 | build-tcg-disabled: | |
286 | <<: *native_build_job_definition | |
287 | variables: | |
288 | IMAGE: centos8 | |
289 | script: | |
290 | - mkdir build | |
291 | - cd build | |
292 | - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; } | |
293 | - make -j"$JOBS" | |
294 | - make check-unit | |
295 | - make check-qapi-schema | |
296 | - cd tests/qemu-iotests/ | |
297 | - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048 | |
298 | 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163 | |
299 | 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277 | |
300 | - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122 | |
301 | 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202 | |
302 | 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258 | |
303 | 260 261 262 263 264 270 272 273 277 279 | |
304 | ||
305 | build-user: | |
306 | <<: *native_build_job_definition | |
307 | variables: | |
308 | IMAGE: debian-all-test-cross | |
309 | CONFIGURE_ARGS: --disable-tools --disable-system | |
310 | MAKE_CHECK_ARGS: check-tcg | |
311 | ||
312 | build-user-static: | |
313 | <<: *native_build_job_definition | |
314 | variables: | |
315 | IMAGE: debian-all-test-cross | |
316 | CONFIGURE_ARGS: --disable-tools --disable-system --static | |
317 | MAKE_CHECK_ARGS: check-tcg | |
318 | ||
319 | # Only build the softmmu targets we have check-tcg tests for | |
320 | build-some-softmmu: | |
321 | <<: *native_build_job_definition | |
322 | variables: | |
323 | IMAGE: debian-all-test-cross | |
324 | CONFIGURE_ARGS: --disable-tools --enable-debug-tcg | |
325 | TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu | |
326 | MAKE_CHECK_ARGS: check-tcg | |
327 | ||
328 | # Run check-tcg against linux-user (with plugins) | |
329 | # we skip sparc64-linux-user until it has been fixed somewhat | |
330 | # we skip cris-linux-user as it doesn't use the common run loop | |
331 | build-user-plugins: | |
332 | <<: *native_build_job_definition | |
333 | variables: | |
334 | IMAGE: debian-all-test-cross | |
335 | CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user | |
336 | MAKE_CHECK_ARGS: check-tcg | |
337 | timeout: 1h 30m | |
338 | ||
339 | build-some-softmmu-plugins: | |
340 | <<: *native_build_job_definition | |
341 | variables: | |
342 | IMAGE: debian-all-test-cross | |
343 | CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg | |
344 | TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu | |
345 | MAKE_CHECK_ARGS: check-tcg | |
346 | ||
347 | build-clang: | |
348 | <<: *native_build_job_definition | |
349 | variables: | |
350 | IMAGE: fedora | |
351 | CONFIGURE_ARGS: --cc=clang --cxx=clang++ | |
352 | TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu | |
353 | ppc-softmmu s390x-softmmu arm-linux-user | |
354 | MAKE_CHECK_ARGS: check | |
355 | ||
356 | # These targets are on the way out | |
357 | build-deprecated: | |
358 | <<: *native_build_job_definition | |
359 | variables: | |
360 | IMAGE: debian-all-test-cross | |
361 | CONFIGURE_ARGS: --disable-docs --disable-tools | |
362 | MAKE_CHECK_ARGS: build-tcg | |
363 | TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu | |
364 | unicore32-softmmu | |
365 | artifacts: | |
366 | expire_in: 2 days | |
367 | paths: | |
368 | - build | |
369 | ||
370 | # We split the check-tcg step as test failures are expected but we still | |
371 | # want to catch the build breaking. | |
372 | check-deprecated: | |
373 | <<: *native_test_job_definition | |
374 | needs: | |
375 | - job: build-deprecated | |
376 | artifacts: true | |
377 | variables: | |
378 | IMAGE: debian-all-test-cross | |
379 | MAKE_CHECK_ARGS: check-tcg | |
380 | allow_failure: true | |
381 | ||
382 | build-oss-fuzz: | |
383 | <<: *native_build_job_definition | |
384 | variables: | |
385 | IMAGE: fedora | |
386 | script: | |
387 | - mkdir build-oss-fuzz | |
388 | - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" | |
389 | ./scripts/oss-fuzz/build.sh | |
390 | - export ASAN_OPTIONS="fast_unwind_on_malloc=0" | |
391 | - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f | |
392 | | grep -v slirp); do | |
393 | grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; | |
394 | echo Testing ${fuzzer} ... ; | |
395 | "${fuzzer}" -runs=1 -seed=1 || exit 1 ; | |
396 | done | |
397 | # Unrelated to fuzzer: run some tests with -fsanitize=address | |
398 | - cd build-oss-fuzz && make check-qtest-i386 check-unit | |
399 | ||
400 | build-tci: | |
401 | <<: *native_build_job_definition | |
402 | variables: | |
403 | IMAGE: fedora | |
404 | script: | |
405 | - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64" | |
406 | - mkdir build | |
407 | - cd build | |
408 | - ../configure --enable-tcg-interpreter | |
409 | --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; } | |
410 | - make -j"$JOBS" | |
411 | - make run-tcg-tests-x86_64-softmmu | |
412 | - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test | |
413 | - for tg in $TARGETS ; do | |
414 | export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; | |
415 | ./tests/qtest/boot-serial-test || exit 1 ; | |
416 | ./tests/qtest/cdrom-test || exit 1 ; | |
417 | done | |
418 | - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test | |
419 | - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow | |
420 | ||
421 | # Alternate coroutines implementations are only really of interest to KVM users | |
422 | # However we can't test against KVM on Gitlab-CI so we can only run unit tests | |
423 | build-coroutine-ucontext: | |
424 | <<: *native_build_job_definition | |
425 | variables: | |
426 | IMAGE: ubuntu2004 | |
427 | CONFIGURE_ARGS: --with-coroutine=ucontext --disable-tcg | |
428 | MAKE_CHECK_ARGS: check-unit | |
429 | ||
430 | build-coroutine-sigaltstack: | |
431 | <<: *native_build_job_definition | |
432 | variables: | |
433 | IMAGE: ubuntu2004 | |
434 | CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg | |
435 | MAKE_CHECK_ARGS: check-unit | |
436 | ||
437 | # Most jobs test latest gcrypt or nettle builds | |
438 | # | |
439 | # These jobs test old gcrypt and nettle from RHEL7 | |
440 | # which had some API differences. | |
441 | build-crypto-old-nettle: | |
442 | <<: *native_build_job_definition | |
443 | variables: | |
444 | IMAGE: centos7 | |
445 | TARGETS: x86_64-softmmu x86_64-linux-user | |
446 | CONFIGURE_ARGS: --disable-gcrypt --enable-nettle | |
447 | MAKE_CHECK_ARGS: check-build | |
448 | artifacts: | |
449 | paths: | |
450 | - build | |
451 | ||
452 | check-crypto-old-nettle: | |
453 | <<: *native_test_job_definition | |
454 | needs: | |
455 | - job: build-crypto-old-nettle | |
456 | artifacts: true | |
457 | variables: | |
458 | IMAGE: centos7 | |
459 | MAKE_CHECK_ARGS: check | |
460 | ||
461 | ||
462 | build-crypto-old-gcrypt: | |
463 | <<: *native_build_job_definition | |
464 | variables: | |
465 | IMAGE: centos7 | |
466 | TARGETS: x86_64-softmmu x86_64-linux-user | |
467 | CONFIGURE_ARGS: --disable-nettle --enable-gcrypt | |
468 | MAKE_CHECK_ARGS: check-build | |
469 | artifacts: | |
470 | paths: | |
471 | - build | |
472 | ||
473 | check-crypto-old-gcrypt: | |
474 | <<: *native_test_job_definition | |
475 | needs: | |
476 | - job: build-crypto-old-gcrypt | |
477 | artifacts: true | |
478 | variables: | |
479 | IMAGE: centos7 | |
480 | MAKE_CHECK_ARGS: check | |
481 | ||
482 | ||
483 | build-crypto-only-gnutls: | |
484 | <<: *native_build_job_definition | |
485 | variables: | |
486 | IMAGE: centos7 | |
487 | TARGETS: x86_64-softmmu x86_64-linux-user | |
488 | CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls | |
489 | MAKE_CHECK_ARGS: check-build | |
490 | artifacts: | |
491 | paths: | |
492 | - build | |
493 | ||
494 | check-crypto-only-gnutls: | |
495 | <<: *native_test_job_definition | |
496 | needs: | |
497 | - job: build-crypto-only-gnutls | |
498 | artifacts: true | |
499 | variables: | |
500 | IMAGE: centos7 | |
501 | MAKE_CHECK_ARGS: check | |
502 | ||
503 | # We don't need to exercise every backend with every front-end | |
504 | build-trace-multi-user: | |
505 | <<: *native_build_job_definition | |
506 | variables: | |
507 | IMAGE: ubuntu2004 | |
508 | CONFIGURE_ARGS: --enable-trace-backends=log,simple,syslog --disable-system | |
509 | ||
510 | build-trace-ftrace-system: | |
511 | <<: *native_build_job_definition | |
512 | variables: | |
513 | IMAGE: ubuntu2004 | |
514 | CONFIGURE_ARGS: --enable-trace-backends=ftrace --target-list=x86_64-softmmu | |
515 | ||
516 | build-trace-ust-system: | |
517 | <<: *native_build_job_definition | |
518 | variables: | |
519 | IMAGE: ubuntu2004 | |
520 | CONFIGURE_ARGS: --enable-trace-backends=ust --target-list=x86_64-softmmu | |
521 | ||
522 | check-patch: | |
523 | stage: build | |
524 | image: $CI_REGISTRY_IMAGE/qemu/centos8:latest | |
525 | script: .gitlab-ci.d/check-patch.py | |
526 | except: | |
527 | variables: | |
528 | - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' | |
529 | variables: | |
530 | GIT_DEPTH: 1000 | |
531 | allow_failure: true | |
532 | ||
533 | check-dco: | |
534 | stage: build | |
535 | image: $CI_REGISTRY_IMAGE/qemu/centos8:latest | |
536 | script: .gitlab-ci.d/check-dco.py | |
537 | except: | |
538 | variables: | |
539 | - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' | |
540 | variables: | |
541 | GIT_DEPTH: 1000 | |
542 | ||
543 | build-libvhost-user: | |
544 | stage: build | |
545 | image: $CI_REGISTRY_IMAGE/qemu/fedora:latest | |
546 | before_script: | |
547 | - dnf install -y meson ninja-build | |
548 | script: | |
549 | - mkdir subprojects/libvhost-user/build | |
550 | - cd subprojects/libvhost-user/build | |
551 | - meson | |
552 | - ninja | |
553 | ||
554 | pages: | |
555 | image: $CI_REGISTRY_IMAGE/qemu/ubuntu2004:latest | |
556 | stage: test | |
557 | needs: | |
558 | - job: build-system-ubuntu | |
559 | artifacts: true | |
560 | script: | |
561 | - mkdir public | |
562 | - mv build/docs/index.html public/ | |
563 | - for i in devel interop specs system tools user ; do mv build/docs/$i public/ ; done | |
564 | artifacts: | |
565 | paths: | |
566 | - public |