Files
xen/automation/gitlab-ci/build.yaml
T
Andrew Cooper cfaaf09a5e CI: Update the Alpine arm64 container to 3.24
Perform standard syntax cleanup and make it a non-root container.  Switch yajl
for json-c given the deprecation of the former.  Drop dev86 which is an
x86-only dependency, and QEMU dependencies as we don't build QEMU in this
environment any more.

When updating the job names, also rename some for consistency so the arm64
fragment comes before the compiler.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Denis Mukhin <dmukhin@ford.com>
Release-Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
2026-06-15 18:04:20 +01:00

831 lines
17 KiB
YAML

.build-tmpl: &build
stage: build
image: ${XEN_REGISTRY}/${CONTAINER}
script:
- ./automation/scripts/build 2>&1 | tee build.log
artifacts:
paths:
- binaries/
- intermediates/
- xen-config
- xen-cppcheck.txt
- '*.log'
- '*/*.log'
when: always
needs: []
rules:
- if: $BUILD_FOR_TESTS_ONLY
when: never
- if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
when: on_success
# override BUILD_FOR_TESTS_ONLY exclusion
.build-test-tpl: &build-test
rules:
- if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
when: on_success
.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: ${XEN_REGISTRY}/${CONTAINER}
script:
- ./automation/build/yocto/build-yocto.sh -v --log-dir=./logs --xen-dir=`pwd` ${YOCTO_BOARD} ${YOCTO_OUTPUT}
variables:
YOCTO_VERSION: scarthgap
CONTAINER: yocto:${YOCTO_VERSION}-${YOCTO_BOARD}${YOCTO_HOST}
artifacts:
paths:
- 'logs/*'
- binaries/
when: always
needs: []
rules:
- if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
when: manual
allow_failure: true
.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
# Jobs below this line
# Build jobs needed for tests
alpine-3.24-x86_64-gcc:
extends: .gcc-x86-64-build
<<: *build-test
variables:
CONTAINER: alpine:3.24-x86_64
alpine-3.24-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
<<: *build-test
variables:
CONTAINER: alpine:3.24-x86_64
BUILD_QEMU_XEN: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_ARGO=y
CONFIG_UBSAN=y
CONFIG_UBSAN_FATAL=y
CONFIG_MICROCODE_SCAN_DEFAULT=y
CONFIG_XHCI=y
debian-13-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
<<: *build-test
variables:
CONTAINER: debian:13-x86_64
debian-13-x86_64-clang-debug:
extends: .clang-x86-64-build-debug
<<: *build-test
variables:
CONTAINER: debian:13-x86_64
debian-13-ppc64le-gcc-debug:
extends: .gcc-ppc64le-cross-build-debug
<<: *build-test
variables:
CONTAINER: debian:13-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_UBSAN=y
CONFIG_UBSAN_FATAL=y
debian-13-riscv64-gcc-debug:
extends: .gcc-riscv64-cross-build-debug
<<: *build-test
variables:
CONTAINER: debian:13-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_UBSAN=y
CONFIG_UBSAN_FATAL=y
# Arm32 cross-build
debian-12-arm32-gcc:
extends: .gcc-arm32-cross-build
<<: *build-test
variables:
CONTAINER: debian:12-arm64v8-arm32
HYPERVISOR_ONLY: y
debian-12-arm32-gcc-debug:
extends: .gcc-arm32-cross-build-debug
<<: *build-test
variables:
CONTAINER: debian:12-arm64v8-arm32
HYPERVISOR_ONLY: y
debian-12-arm32-gcc-randconfig:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:12-arm64v8-arm32
HYPERVISOR_ONLY: y
RANDCONFIG: y
debian-12-arm32-gcc-debug-staticmem:
extends: .gcc-arm32-cross-build-debug
<<: *build-test
variables:
CONTAINER: debian:12-arm64v8-arm32
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
debian-12-arm32-gcc-debug-earlyprintk:
extends: .gcc-arm32-cross-build-debug
<<: *build-test
variables:
CONTAINER: debian:12-arm64v8-arm32
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_EARLY_UART_CHOICE_PL011=y
CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000
debian-12-arm32-gcc-debug-mpu:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:12-arm64v8-arm32
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_XEN_START_ADDRESS=0x0
CONFIG_MPU=y
CONFIG_UNSUPPORTED=y
# Arm builds
debian-12-arm64-gcc:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:12-arm64v8
debian-12-arm64-gcc-debug:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: debian:12-arm64v8
debian-13-arm64-gcc:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:13-arm64v8
debian-13-arm64-gcc-debug:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: debian:13-arm64v8
alpine-3.24-arm64-gcc:
extends: .gcc-arm64-build
<<: *build-test
variables:
CONTAINER: alpine:3.24-arm64v8
alpine-3.24-arm64-gcc-debug:
extends: .gcc-arm64-build-debug
<<: *build-test
variables:
CONTAINER: alpine:3.24-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_UBSAN=y
CONFIG_UBSAN_FATAL=y
alpine-3.24-arm64-gcc-randconfig:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.24-arm64v8
RANDCONFIG: y
alpine-3.24-arm64-gcc-debug-staticmem:
extends: .gcc-arm64-build-debug
<<: *build-test
variables:
CONTAINER: alpine:3.24-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
alpine-3.24-arm64-gcc-debug-static-shared-mem:
extends: .gcc-arm64-build-debug
<<: *build-test
variables:
CONTAINER: alpine:3.24-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
CONFIG_STATIC_SHM=y
alpine-3.24-arm64-gcc-debug-boot-cpupools:
extends: .gcc-arm64-build-debug
<<: *build-test
variables:
CONTAINER: alpine:3.24-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_BOOT_TIME_CPUPOOLS=y
alpine-3.24-arm64-gcc-debug-earlyprintk:
extends: .gcc-arm64-build-debug
<<: *build-test
variables:
CONTAINER: alpine:3.24-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EARLY_UART_CHOICE_PL011=y
CONFIG_EARLY_UART_BASE_ADDRESS=0x9000000
alpine-3.24-arm64-gcc-debug-mpu:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.24-arm64v8
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_XEN_START_ADDRESS=0x0
CONFIG_MPU=y
CONFIG_UNSUPPORTED=y
# 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-12-x86_64-gcc-cppcheck:
extends: .gcc-x86-64-cross-build
variables:
CONTAINER: debian:12-arm64v8-cppcheck
CROSS_COMPILE: /usr/bin/x86_64-linux-gnu-
CPPCHECK: y
HYPERVISOR_ONLY: y
debian-12-arm32-gcc-cppcheck:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:12-arm64v8-cppcheck
CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
CPPCHECK: y
HYPERVISOR_ONLY: y
debian-12-arm64-gcc-cppcheck:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:12-arm64v8-cppcheck
CPPCHECK: y
HYPERVISOR_ONLY: y
# Build jobs not needed for tests
alpine-3.24-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: alpine:3.24-x86_64
alpine-3.24-x86_64-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: alpine:3.24-x86_64
archlinux-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: archlinux:current-x86_64
allow_failure: true
archlinux-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: archlinux:current-x86_64
allow_failure: true
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-12-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:12-x86_64
debian-12-x86_64-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: debian:12-x86_64
debian-12-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:12-x86_64
debian-12-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: debian:12-x86_64
debian-12-x86_32-clang-debug:
extends: .clang-x86-32-build-debug
variables:
CONTAINER: debian:12-x86_32
debian-12-x86_32-gcc-debug:
extends: .gcc-x86-32-build-debug
variables:
CONTAINER: debian:12-x86_32
debian-13-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:13-x86_64
debian-13-x86_64-clang-randconfig:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:13-x86_64
RANDCONFIG: y
EXTRA_FIXED_RANDCONFIG: |
CONFIG_COVERAGE=n # Disable coverage otherwise build times out.
debian-13-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:13-x86_64
debian-13-x86_64-gcc-randconfig:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:13-x86_64
RANDCONFIG: y
debian-13-x86_32-clang-debug:
extends: .clang-x86-32-build-debug
variables:
CONTAINER: debian:13-x86_32
debian-13-x86_32-gcc-debug:
extends: .gcc-x86-32-build-debug
variables:
CONTAINER: debian:13-x86_32
fedora-43-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: fedora:43-x86_64
fedora-43-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: fedora:43-x86_64
ubuntu-18.04-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:18.04-x86_64
ubuntu-18.04-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:18.04-x86_64
ubuntu-20.04-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:20.04-x86_64
ubuntu-22.04-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:22.04-x86_64
ubuntu-22.04-x86_64-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: ubuntu:22.04-x86_64
ubuntu-22.04-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:22.04-x86_64
ubuntu-24.04-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:24.04-x86_64
ubuntu-24.04-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:24.04-x86_64
ubuntu-26.04-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:26.04-x86_64
ubuntu-26.04-x86_64-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: ubuntu:26.04-x86_64
ubuntu-26.04-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:26.04-x86_64
ubuntu-26.04-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:26.04-x86_64
opensuse-leap-16.0-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: opensuse:leap-16.0-x86_64
opensuse-leap-16.0-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: opensuse:leap-16.0-x86_64
opensuse-leap-16.0-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: opensuse:leap-16.0-x86_64
opensuse-leap-16.0-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: opensuse:leap-16.0-x86_64
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
debian-12-ppc64le-gcc-debug:
extends: .gcc-ppc64le-cross-build-debug
variables:
CONTAINER: debian:12-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
debian-13-ppc64le-gcc:
extends: .gcc-ppc64le-cross-build
variables:
CONTAINER: debian:13-ppc64le
KBUILD_DEFCONFIG: ppc64_defconfig
HYPERVISOR_ONLY: y
# RISC-V 64 cross-build
debian-12-riscv64-gcc:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: debian:12-riscv64
KBUILD_DEFCONFIG: tiny64_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
debian-13-riscv64-gcc:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: debian:13-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_LIVEPATCH=n
CONFIG_QEMU_PLATFORM=y
CONFIG_VM_EVENT=n
CONFIG_XSM=n
debian-13-riscv64-gcc-randconfig:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: debian:13-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
RANDCONFIG: y
<<: *riscv-fixed-randconfig
# macOS build jobs
.macos-26:
<<: *build
tags:
- saas-macos-medium-m1
image: macos-26-xcode-26
variables:
HOMEBREW_NO_AUTO_UPDATE: 1
HOSTCC: clang
HYPERVISOR_ONLY: y
<<: *gcc
script:
- brew install ${CROSS_COMPILE}gcc ${CROSS_COMPILE}binutils
- alias nproc="sysctl -n hw.ncpu"
- ./automation/scripts/build 2>&1 | tee build.log
macos-26-x86_64:
extends:
- .macos-26
variables:
XEN_TARGET_ARCH: x86_64
CROSS_COMPILE: x86_64-elf-
macos-26-arm64:
extends:
- .macos-26
variables:
XEN_TARGET_ARCH: arm64
CROSS_COMPILE: aarch64-elf-