Files
xen/automation/gitlab-ci/build.yaml
T
Roger Pau Monne 9ee63ef540 automation/gitlab: disable coverage from clang randconfig
If randconfig enables coverage support the build times out due to GNU LD
taking too long.  For the time being prevent coverage from being enabled in
clang randconfig job.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Release-Acked-by: Oleksii Kurochko<oleksii.kurochko@gmail.com>
2025-01-16 09:30:14 +01:00

755 lines
15 KiB
YAML

.build-tmpl: &build
stage: build
image: ${XEN_REGISTRY}/${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: ${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: []
.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
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
BUILD_QEMU_XEN: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_ARGO=y
debian-12-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
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-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
when: manual
yocto-qemuarm:
extends: .yocto-test-arm64
variables:
YOCTO_BOARD: qemuarm
YOCTO_OUTPUT: --copy-output
when: manual
yocto-qemux86-64:
extends: .yocto-test-x86-64
variables:
YOCTO_BOARD: qemux86-64
when: manual
# 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-12-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:12-x86_64
debian-12-x86_64-clang-randconfig:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:12-x86_64
RANDCONFIG: y
EXTRA_FIXED_RANDCONFIG: |
CONFIG_COVERAGE=n # Disable coverage otherwise build times out.
debian-12-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:12-x86_64
debian-12-x86_64-gcc-randconfig:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:12-x86_64
RANDCONFIG: y
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
fedora-41-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: fedora:41-x86_64
fedora-41-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: fedora:41-x86_64
ubuntu-16.04-x86_64-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: ubuntu:16.04-x86_64
ubuntu-16.04-x86_64-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: ubuntu:16.04-x86_64
ubuntu-16.04-x86_64-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:16.04-x86_64
ubuntu-16.04-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:16.04-x86_64
ubuntu-18.04-x86_64-gcc:
extends: .gcc-x86-64-build
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-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-clang-debug:
extends: .clang-x86-64-build-debug
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-24.04-x86_64-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:24.04-x86_64
opensuse-leap-15.6-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: opensuse:leap-15.6-x86_64
opensuse-leap-15.6-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: opensuse:leap-15.6-x86_64
opensuse-leap-15.6-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: opensuse:leap-15.6-x86_64
opensuse-leap-15.6-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: opensuse:leap-15.6-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
# 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_LIVEPATCH=n
CONFIG_MEM_ACCESS=n
CONFIG_QEMU_PLATFORM=y
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