[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 1/4] automation/cirrus-ci: use matrix keyword to generate per-version build tasks



On Thu, 20 Mar 2025, Roger Pau Monne wrote:
> 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@xxxxxxxxxx>

Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>


> ---
> Changes since v1:
>  - Use FreeBSD_{LEGACY,PRODUCTION,CURRENT} to refer to development release,
>    current release, and current release - 1.
> ---
>  .cirrus.yml | 78 +++++++++++++++++++++++++----------------------------
>  1 file changed, 37 insertions(+), 41 deletions(-)
> 
> diff --git a/.cirrus.yml b/.cirrus.yml
> index 490f214f0460..95d2d2d3db2e 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -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
> -- 
> 2.48.1
> 

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.