Files
xen/automation/gitlab-ci/build.yaml
T
Andrew Cooper a8bc31be01 CI: Refresh OpenSUSE Tumbleweed container
Existing as suse:opensuse-tumbleweed is a historical quirk, and adjusted for
consistency with all the other containers.

Make it non-root, use heredocs for legibility, and use the zypper long names
for the benefit of those wondering what was being referenced or duplicated.

Trim the dependencies substantially.  Testing docs isn't very interesting and
saves a lot of space.  Other savings come from removing a huge pile of
optional QEMU dependencies (QEMU just needs to build the Xen parts to be
useful here, not have a full GUI environment).

Finally, there where some packages such as bc, libssh2-devel, libtasn1-devel
and nasm that I'm not aware of any reason to have had, even historically.

This shaves 1G off the size of the container:

  registry.gitlab.com/xen-project/xen/opensuse  tumbleweed-x86_64      1.39GB
  registry.gitlab.com/xen-project/xen/suse      opensuse-tumbleweed    2.35GB

Furthermore, identify which components of the build use which dependencies,
which will help managing them in the future.

Thanks to Olaf Hering for dependency fixes that have been subsumed into this
total overhaul.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
Release-Acked-By: Oleksii Kurochko <oleksii.kurochko@gmail.com>
2024-07-12 16:27:28 +01:00

755 lines
15 KiB
YAML

.build-tmpl: &build
stage: build
image: registry.gitlab.com/xen-project/xen/${CONTAINER}
script:
- ./automation/scripts/build 2>&1 | tee build.log
artifacts:
paths:
- binaries/
- xen-config
- xen-cppcheck.txt
- '*.log'
- '*/*.log'
when: always
needs: []
.gcc-tmpl:
variables: &gcc
CC: gcc
CXX: g++
.clang-tmpl:
variables: &clang
CC: clang
CXX: clang++
clang: y
.x86-64-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: x86_64
tags:
- x86_64
.x86-64-build:
extends: .x86-64-build-tmpl
variables:
debug: n
.x86-64-build-debug:
extends: .x86-64-build-tmpl
variables:
debug: y
.x86-32-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: x86_32
tags:
- x86_32
.x86-32-build:
extends: .x86-32-build-tmpl
variables:
debug: n
.x86-32-build-debug:
extends: .x86-32-build-tmpl
variables:
debug: y
.gcc-x86-64-build:
extends: .x86-64-build
variables:
<<: *gcc
.gcc-x86-64-build-debug:
extends: .x86-64-build-debug
variables:
<<: *gcc
.gcc-x86-32-build:
extends: .x86-32-build
variables:
<<: *gcc
.gcc-x86-32-build-debug:
extends: .x86-32-build-debug
variables:
<<: *gcc
.clang-x86-64-build:
extends: .x86-64-build
variables:
<<: *clang
.clang-x86-64-build-debug:
extends: .x86-64-build-debug
variables:
<<: *clang
.clang-x86-32-build:
extends: .x86-32-build
variables:
<<: *clang
.clang-x86-32-build-debug:
extends: .x86-32-build-debug
variables:
<<: *clang
.arm32-cross-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: arm32
tags:
- arm64
.arm32-cross-build:
extends: .arm32-cross-build-tmpl
variables:
debug: n
.arm32-cross-build-debug:
extends: .arm32-cross-build-tmpl
variables:
debug: y
.gcc-arm32-cross-build:
extends: .arm32-cross-build
variables:
<<: *gcc
.gcc-arm32-cross-build-debug:
extends: .arm32-cross-build-debug
variables:
<<: *gcc
.arm64-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: arm64
tags:
- arm64
.arm64-build:
extends: .arm64-build-tmpl
variables:
debug: n
.arm64-build-debug:
extends: .arm64-build-tmpl
variables:
debug: y
.gcc-arm64-build:
extends: .arm64-build
variables:
<<: *gcc
.gcc-arm64-build-debug:
extends: .arm64-build-debug
variables:
<<: *gcc
.riscv64-cross-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: riscv64
tags:
- x86_64
.riscv64-cross-build:
extends: .riscv64-cross-build-tmpl
variables:
debug: n
.riscv64-cross-build-debug:
extends: .riscv64-cross-build-tmpl
variables:
debug: y
.gcc-riscv64-cross-build:
extends: .riscv64-cross-build
variables:
<<: *gcc
.gcc-riscv64-cross-build-debug:
extends: .riscv64-cross-build-debug
variables:
<<: *gcc
.ppc64le-cross-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: ppc64
tags:
- x86_64
.ppc64le-cross-build:
extends: .ppc64le-cross-build-tmpl
variables:
debug: n
.ppc64le-cross-build-debug:
extends: .ppc64le-cross-build-tmpl
variables:
debug: y
.gcc-ppc64le-cross-build:
extends: .ppc64le-cross-build
variables:
<<: *gcc
.gcc-ppc64le-cross-build-debug:
extends: .ppc64le-cross-build-debug
variables:
<<: *gcc
.yocto-test:
stage: build
image: registry.gitlab.com/xen-project/xen/${CONTAINER}
script:
- ./automation/build/yocto/build-yocto.sh -v --log-dir=./logs --xen-dir=`pwd` ${YOCTO_BOARD} ${YOCTO_OUTPUT}
variables:
YOCTO_VERSION: kirkstone
CONTAINER: yocto:${YOCTO_VERSION}-${YOCTO_BOARD}${YOCTO_HOST}
artifacts:
paths:
- 'logs/*'
- binaries/
when: always
needs: []
.yocto-test-arm64:
extends: .yocto-test
variables:
YOCTO_HOST: -arm64v8
tags:
- arm64
.yocto-test-x86-64:
extends: .yocto-test
tags:
- x86_64
.x86-64-cross-build-tmpl:
<<: *build
variables:
XEN_TARGET_ARCH: x86_64
tags:
- arm64
.x86-64-cross-build:
extends: .x86-64-cross-build-tmpl
variables:
debug: n
.gcc-x86-64-cross-build:
extends: .x86-64-cross-build
variables:
<<: *gcc
## Test artifacts common
.test-jobs-artifact-common:
stage: build
needs: []
# Arm test artifacts
alpine-3.18-arm64-rootfs-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/alpine:3.18-arm64v8
script:
- mkdir binaries && cp /initrd.tar.gz binaries/initrd.tar.gz
artifacts:
paths:
- binaries/initrd.tar.gz
tags:
- arm64
kernel-5.19-arm64-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/kernel:5.19-arm64v8
script:
- mkdir binaries && cp /Image binaries/Image
artifacts:
paths:
- binaries/Image
tags:
- arm64
qemu-system-aarch64-6.0.0-arm64-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/qemu-system-aarch64:6.0.0-arm64v8
script:
- mkdir binaries && cp /qemu-system-aarch64 binaries/qemu-system-aarch64
artifacts:
paths:
- binaries/qemu-system-aarch64
tags:
- arm64
qemu-system-aarch64-6.0.0-arm32-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/qemu-system-aarch64:6.0.0-arm64v8
script:
- mkdir binaries && cp /qemu-system-arm binaries/qemu-system-arm
artifacts:
paths:
- binaries/qemu-system-arm
tags:
- arm64
# x86_64 test artifacts
alpine-3.18-rootfs-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/alpine:3.18
script:
- mkdir binaries && cp /initrd.tar.gz binaries/initrd.tar.gz
artifacts:
paths:
- binaries/initrd.tar.gz
tags:
- x86_64
kernel-6.1.19-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/kernel:6.1.19
script:
- mkdir binaries && cp /bzImage binaries/bzImage
artifacts:
paths:
- binaries/bzImage
tags:
- x86_64
# Jobs below this line
# Build jobs needed for tests
alpine-3.18-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: alpine:3.18
alpine-3.18-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: alpine:3.18
debian-bookworm-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: debian:bookworm
debian-bookworm-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: debian:bookworm
debian-12-ppc64le-gcc-debug:
extends: .gcc-ppc64le-cross-build-debug
variables:
CONTAINER: debian:12-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
debian-12-riscv64-gcc-debug:
extends: .gcc-riscv64-cross-build-debug
variables:
CONTAINER: debian:12-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
# Arm32 cross-build
debian-bookworm-gcc-arm32:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:bookworm-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
debian-bookworm-gcc-arm32-debug:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:bookworm-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
debian-bookworm-gcc-arm32-randconfig:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:bookworm-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
RANDCONFIG: y
debian-bookworm-gcc-arm32-debug-staticmem:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:bookworm-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
debian-bookworm-gcc-arm32-debug-earlyprintk:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:bookworm-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_EARLY_UART_CHOICE_PL011=y
CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000
# Arm builds
debian-bookworm-gcc-arm64:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:bookworm-arm64v8
debian-bookworm-gcc-debug-arm64:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: debian:bookworm-arm64v8
alpine-3.18-gcc-arm64:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.18-arm64v8
alpine-3.18-gcc-debug-arm64:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.18-arm64v8
alpine-3.18-gcc-arm64-randconfig:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.18-arm64v8
RANDCONFIG: y
alpine-3.18-gcc-debug-arm64-staticmem:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.18-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
alpine-3.18-gcc-debug-arm64-static-shared-mem:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.18-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
CONFIG_STATIC_SHM=y
alpine-3.18-gcc-debug-arm64-boot-cpupools:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.18-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_BOOT_TIME_CPUPOOLS=y
alpine-3.18-gcc-debug-arm64-earlyprintk:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.18-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EARLY_UART_CHOICE_PL011=y
CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000
# Yocto test jobs
yocto-qemuarm64:
extends: .yocto-test-arm64
variables:
YOCTO_BOARD: qemuarm64
yocto-qemuarm:
extends: .yocto-test-arm64
variables:
YOCTO_BOARD: qemuarm
YOCTO_OUTPUT: --copy-output
yocto-qemux86-64:
extends: .yocto-test-x86-64
variables:
YOCTO_BOARD: qemux86-64
# Cppcheck analysis jobs
debian-bookworm-gcc-cppcheck:
extends: .gcc-x86-64-cross-build
variables:
CONTAINER: debian:bookworm-cppcheck
CROSS_COMPILE: /usr/bin/x86_64-linux-gnu-
CPPCHECK: y
HYPERVISOR_ONLY: y
debian-bookworm-gcc-arm32-cppcheck:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:bookworm-cppcheck
CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
CPPCHECK: y
HYPERVISOR_ONLY: y
debian-bookworm-gcc-arm64-cppcheck:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:bookworm-cppcheck
CPPCHECK: y
HYPERVISOR_ONLY: y
# Build jobs not needed for tests
alpine-3.18-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: alpine:3.18
alpine-3.18-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: alpine:3.18
archlinux-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: archlinux:current
allow_failure: true
archlinux-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: archlinux:current
allow_failure: true
centos-7-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: centos:7
centos-7-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: centos:7
debian-12-x86_64-gcc-ibt:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:12-x86_64-gcc-ibt
RANDCONFIG: y
EXTRA_FIXED_RANDCONFIG: |
CONFIG_XEN_IBT=y
debian-bookworm-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:bookworm
debian-bookworm-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:bookworm
debian-bookworm-gcc-randconfig:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:bookworm
RANDCONFIG: y
debian-bookworm-32-clang-debug:
extends: .clang-x86-32-build-debug
variables:
CONTAINER: debian:bookworm-i386
debian-bookworm-32-gcc-debug:
extends: .gcc-x86-32-build-debug
variables:
CONTAINER: debian:bookworm-i386
fedora-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: fedora:29
fedora-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: fedora:29
ubuntu-xenial-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:xenial
ubuntu-xenial-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: ubuntu:xenial
ubuntu-xenial-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:xenial
ubuntu-xenial-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:xenial
ubuntu-bionic-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:bionic
ubuntu-bionic-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: ubuntu:bionic
ubuntu-bionic-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:bionic
ubuntu-bionic-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:bionic
ubuntu-focal-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:focal
ubuntu-focal-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:focal
ubuntu-focal-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:focal
ubuntu-focal-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: ubuntu:focal
opensuse-leap-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: suse:opensuse-leap
opensuse-leap-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: suse:opensuse-leap
opensuse-leap-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: suse:opensuse-leap
opensuse-leap-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: suse:opensuse-leap
opensuse-tumbleweed-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: opensuse:tumbleweed-x86_64
allow_failure: true
opensuse-tumbleweed-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: opensuse:tumbleweed-x86_64
allow_failure: true
opensuse-tumbleweed-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: opensuse:tumbleweed-x86_64
allow_failure: true
opensuse-tumbleweed-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: opensuse:tumbleweed-x86_64
allow_failure: true
# PowerPC builds (x86 cross)
debian-11-ppc64le-gcc:
extends: .gcc-ppc64le-cross-build
variables:
CONTAINER: debian:11-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
debian-11-ppc64le-gcc-debug:
extends: .gcc-ppc64le-cross-build-debug
variables:
CONTAINER: debian:11-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
debian-12-ppc64le-gcc:
extends: .gcc-ppc64le-cross-build
variables:
CONTAINER: debian:12-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
# RISC-V 64 cross-build
debian-11-riscv64-gcc:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: debian:11-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
debian-11-riscv64-gcc-debug:
extends: .gcc-riscv64-cross-build-debug
variables:
CONTAINER: debian:11-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
debian-12-riscv64-gcc:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: debian:12-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
.riscv-fixed-randconfig:
variables: &riscv-fixed-randconfig
EXTRA_FIXED_RANDCONFIG: |
CONFIG_BOOT_TIME_CPUPOOLS=n
CONFIG_COVERAGE=n
CONFIG_EXPERT=y
CONFIG_GRANT_TABLE=n
CONFIG_MEM_ACCESS=n
CONFIG_PERF_COUNTERS=n
CONFIG_LIVEPATCH=n
CONFIG_XSM=n
debian-12-riscv64-gcc-randconfig:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: debian:12-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
RANDCONFIG: y
<<: *riscv-fixed-randconfig