Files
xen/automation/gitlab-ci/build.yaml
T
Marek Marczykowski-Górecki ef841d2a23 automation: optimize build jobs order
Put jobs that are needed for (any) test earlier, so the tests can start
running in parallel to builds.
This commits splits only x86 build jobs into two sections (one on top
and one on bottom), but keep ARM build jobs in one section, as most of
them have some test connected and the few that do not are not worth
reducing readability of the file.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
2023-05-01 10:57:13 +01:00

788 lines
16 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
except:
- master
- smoke
- /^coverity-tested\/.*/
- /^stable-.*/
.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
.yocto-test:
stage: build
image: registry.gitlab.com/xen-project/xen/${CONTAINER}
except:
- master
- smoke
- /^coverity-tested\/.*/
- /^stable-.*/
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
# This is not used by any test job as we only run Yocto on arm based machines.
# Keep it here so that someone having x86 hardware can easily add jobs.
.yocto-test-x86-64:
extends: .yocto-test
variables:
YOCTO_HOST: amd64
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
except: !reference [.test-jobs-common, except]
# Arm test artifacts
alpine-3.12-arm64-rootfs-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/alpine:3.12-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.12-rootfs-export:
extends: .test-jobs-artifact-common
image: registry.gitlab.com/xen-project/xen/tests-artifacts/alpine:3.12
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.12-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: alpine:3.12
alpine-3.12-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: alpine:3.12
debian-stretch-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: debian:stretch
debian-unstable-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: debian:unstable
# Arm32 cross-build
debian-unstable-gcc-arm32:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:unstable-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
debian-unstable-gcc-arm32-debug:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:unstable-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
debian-unstable-gcc-arm32-randconfig:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:unstable-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
RANDCONFIG: y
debian-unstable-gcc-arm32-debug-randconfig:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:unstable-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
RANDCONFIG: y
debian-unstable-gcc-arm32-staticmem:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:unstable-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
debian-unstable-gcc-arm32-debug-staticmem:
extends: .gcc-arm32-cross-build-debug
variables:
CONTAINER: debian:unstable-arm64v8-arm32-gcc
HYPERVISOR_ONLY: y
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
# Arm builds
debian-unstable-gcc-arm64:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:unstable-arm64v8
debian-unstable-gcc-debug-arm64:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: debian:unstable-arm64v8
debian-unstable-gcc-arm64-randconfig:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:unstable-arm64v8
RANDCONFIG: y
debian-unstable-gcc-debug-arm64-randconfig:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: debian:unstable-arm64v8
RANDCONFIG: y
alpine-3.12-gcc-arm64:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.12-arm64v8
alpine-3.12-gcc-debug-arm64:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.12-arm64v8
alpine-3.12-gcc-arm64-randconfig:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.12-arm64v8
RANDCONFIG: y
alpine-3.12-gcc-debug-arm64-randconfig:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.12-arm64v8
RANDCONFIG: y
alpine-3.12-gcc-arm64-staticmem:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.12-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
alpine-3.12-gcc-debug-arm64-staticmem:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.12-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
alpine-3.12-gcc-arm64-static-shared-mem:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.12-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
CONFIG_STATIC_SHM=y
alpine-3.12-gcc-debug-arm64-static-shared-mem:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.12-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_UNSUPPORTED=y
CONFIG_STATIC_MEMORY=y
CONFIG_STATIC_SHM=y
alpine-3.12-gcc-arm64-boot-cpupools:
extends: .gcc-arm64-build
variables:
CONTAINER: alpine:3.12-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_EXPERT=y
CONFIG_UNSUPPORTED=y
CONFIG_SCHED_NULL=y
CONFIG_BOOT_TIME_CPUPOOLS=y
alpine-3.12-gcc-debug-arm64-boot-cpupools:
extends: .gcc-arm64-build-debug
variables:
CONTAINER: alpine:3.12-arm64v8
EXTRA_XEN_CONFIG: |
CONFIG_BOOT_TIME_CPUPOOLS=y
# RISC-V 64 cross-build
archlinux-current-gcc-riscv64:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: archlinux:current-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
archlinux-current-gcc-riscv64-debug:
extends: .gcc-riscv64-cross-build-debug
variables:
CONTAINER: archlinux:current-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
HYPERVISOR_ONLY: y
archlinux-current-gcc-riscv64-randconfig:
extends: .gcc-riscv64-cross-build
variables:
CONTAINER: archlinux:current-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
RANDCONFIG: y
EXTRA_FIXED_RANDCONFIG:
CONFIG_COVERAGE=n
archlinux-current-gcc-riscv64-debug-randconfig:
extends: .gcc-riscv64-cross-build-debug
variables:
CONTAINER: archlinux:current-riscv64
KBUILD_DEFCONFIG: tiny64_defconfig
RANDCONFIG: y
EXTRA_FIXED_RANDCONFIG:
CONFIG_COVERAGE=n
# 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-arm64
variables:
YOCTO_BOARD: qemux86-64
# Cppcheck analysis jobs
debian-unstable-gcc-cppcheck:
extends: .gcc-x86-64-cross-build
variables:
CONTAINER: debian:unstable-cppcheck
CROSS_COMPILE: /usr/bin/x86_64-linux-gnu-
CPPCHECK: y
HYPERVISOR_ONLY: y
debian-unstable-gcc-arm32-cppcheck:
extends: .gcc-arm32-cross-build
variables:
CONTAINER: debian:unstable-cppcheck
CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
CPPCHECK: y
HYPERVISOR_ONLY: y
debian-unstable-gcc-arm64-cppcheck:
extends: .gcc-arm64-build
variables:
CONTAINER: debian:unstable-cppcheck
CPPCHECK: y
HYPERVISOR_ONLY: y
# Build jobs not needed for tests
alpine-3.12-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: alpine:3.12
alpine-3.12-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: alpine:3.12
archlinux-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: archlinux:current
archlinux-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: archlinux:current
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-stretch-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:stretch
debian-stretch-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:stretch
debian-stretch-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: debian:stretch
debian-stretch-32-clang-debug:
extends: .clang-x86-32-build-debug
variables:
CONTAINER: debian:stretch-i386
debian-stretch-32-gcc-debug:
extends: .gcc-x86-32-build-debug
variables:
CONTAINER: debian:stretch-i386
debian-buster-gcc-ibt:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:buster-gcc-ibt
RANDCONFIG: y
EXTRA_FIXED_RANDCONFIG: |
CONFIG_XEN_IBT=y
debian-unstable-clang:
extends: .clang-x86-64-build
variables:
CONTAINER: debian:unstable
debian-unstable-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:unstable
debian-unstable-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: debian:unstable
debian-unstable-gcc-randconfig:
extends: .gcc-x86-64-build
variables:
CONTAINER: debian:unstable
RANDCONFIG: y
debian-unstable-gcc-debug-randconfig:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: debian:unstable
RANDCONFIG: y
debian-unstable-32-clang-debug:
extends: .clang-x86-32-build-debug
variables:
CONTAINER: debian:unstable-i386
debian-unstable-32-gcc-debug:
extends: .gcc-x86-32-build-debug
variables:
CONTAINER: debian:unstable-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 Trusty's Clang is 3.4 while Xen requires 3.5
ubuntu-trusty-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: ubuntu:trusty
ubuntu-trusty-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: ubuntu:trusty
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: suse:opensuse-tumbleweed
allow_failure: true
opensuse-tumbleweed-clang-debug:
extends: .clang-x86-64-build-debug
variables:
CONTAINER: suse:opensuse-tumbleweed
allow_failure: true
opensuse-tumbleweed-gcc:
extends: .gcc-x86-64-build
variables:
CONTAINER: suse:opensuse-tumbleweed
allow_failure: true
opensuse-tumbleweed-gcc-debug:
extends: .gcc-x86-64-build-debug
variables:
CONTAINER: suse:opensuse-tumbleweed
allow_failure: true