automation/cirrus-ci: use matrix keyword to generate per-version build tasks

Move the current logic to use the matrix keyword to generate a task for
each version of FreeBSD we want to build Xen on.  The matrix keyword
however cannot be used in YAML aliases, so it needs to be explicitly used
inside of each task, which creates a bit of duplication.  At least abstract
the FreeBSD minor version numbers to avoid repetition of image names.

Note that the full build uses matrix over an env variable instead of using
it directly in image_family.  This is so that the alias can also be set
based on the FreeBSD version, in preparation for adding further tasks that
will depend on the full build having finished.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
(cherry picked from commit b548a7dc4b)
This commit is contained in:
Roger Pau Monne authored and Andrew Cooper committed 2025-04-04 11:32:29 +01:00
1 parent 81189d7116
commit cfa5bc6f0a
1 file changed
+37 -41
+37 -41
View File
@@ -1,13 +1,9 @@
# https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
freebsd_13: &FREEBSD_13
freebsd_instance:
image_family: freebsd-13-5
freebsd_14: &FREEBSD_14
freebsd_instance:
image_family: freebsd-14-2
freebsd_15: &FREEBSD_15
freebsd_instance:
image_family: freebsd-15-0-snap
freebsd_versions: &FREEBSD_VERSIONS
env:
FREEBSD_LEGACY: freebsd-13-5
FREEBSD_PRODUCTION: freebsd-14-2
FREEBSD_CURRENT: freebsd-15-0-snap
freebsd_template: &FREEBSD_ENV
environment:
@@ -24,7 +20,24 @@ freebsd_configure_artifacts: &FREEBSD_CONFIGURE_ARTIFACTS
path: xen-config
type: text/plain
freebsd_full_build_template: &FREEBSD_FULL_BUILD_TEMPLATE
task:
name: 'FreeBSD: full build'
# It's not possible to use the matrix keyword in YAML aliases, as they
# keyword usage is restricted to task, docker_builder or pipe. Attempting to
# use a YAML alias with the duplicated keys doesn't work either. Use an env
# variable so the version can also be appended to the task alias.
<< : *FREEBSD_VERSIONS
env:
matrix:
FREEBSD_VERSION: $FREEBSD_LEGACY
FREEBSD_VERSION: $FREEBSD_PRODUCTION
FREEBSD_VERSION: $FREEBSD_CURRENT
alias: freebsd_full_$FREEBSD_VERSION
freebsd_instance:
image_family: $FREEBSD_VERSION
<< : *FREEBSD_ENV
install_script: pkg install -y seabios gmake ninja bash
@@ -42,7 +55,20 @@ freebsd_full_build_template: &FREEBSD_FULL_BUILD_TEMPLATE
build_script:
- gmake -j`sysctl -n hw.ncpu` clang=y
freebsd_randconfig_template: &FREEBSD_RANDCONFIG_TEMPLATE
task:
name: 'FreeBSD: randconfig build'
# It's not possible to use the matrix keyword in YAML aliases, as they
# keyword usage is restricted to task, docker_builder or pipe. Attempting to
# use a YAML alias with the duplicated `image_family` keys doesn't work
# either. Abstract the version numbers at least.
<< : *FREEBSD_VERSIONS
freebsd_instance:
matrix:
image_family: $FREEBSD_LEGACY
image_family: $FREEBSD_PRODUCTION
image_family: $FREEBSD_CURRENT
<< : *FREEBSD_ENV
install_script: pkg install -y gmake python3 bison
@@ -56,33 +82,3 @@ freebsd_randconfig_template: &FREEBSD_RANDCONFIG_TEMPLATE
build_script:
- gmake -j`sysctl -n hw.ncpu` build-xen clang=y
task:
name: 'FreeBSD 13: full build'
<< : *FREEBSD_13
<< : *FREEBSD_FULL_BUILD_TEMPLATE
task:
name: 'FreeBSD 14: full build'
<< : *FREEBSD_14
<< : *FREEBSD_FULL_BUILD_TEMPLATE
task:
name: 'FreeBSD 15: full build'
<< : *FREEBSD_15
<< : *FREEBSD_FULL_BUILD_TEMPLATE
task:
name: 'FreeBSD 13: randconfig'
<< : *FREEBSD_13
<< : *FREEBSD_RANDCONFIG_TEMPLATE
task:
name: 'FreeBSD 14: randconfig'
<< : *FREEBSD_14
<< : *FREEBSD_RANDCONFIG_TEMPLATE
task:
name: 'FreeBSD 15: randconfig'
<< : *FREEBSD_15
<< : *FREEBSD_RANDCONFIG_TEMPLATE
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.