[libvirt PATCH 2/3] cirrus: Add templates and refresh script

Daniel P. Berrangé berrange at redhat.com
Mon Jun 29 14:32:22 UTC 2020


On Mon, Jun 29, 2020 at 03:58:43PM +0200, Andrea Bolognani wrote:
> This is similar to what we already use for Dockerfiles, with one
> key difference: while we still rely on lcitool taking care of the
> complicated work for us, in this case we're only provided with a
> bunch of variables and we have to do the last bit of work (that
> is replacing them inside an existing template) ourselves.
> 
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
> ---
>  ci/cirrus/refresh                  | 32 ++++++++++++++++++++++++++++++
>  ci/cirrus/templates/freebsd-12.yml | 25 +++++++++++++++++++++++
>  ci/cirrus/templates/macos-1015.yml | 27 +++++++++++++++++++++++++

These files are largely the identical content to the same name
files in the dir above which feels like it is easy to optimize
away.

>  3 files changed, 84 insertions(+)
>  create mode 100755 ci/cirrus/refresh
>  create mode 100644 ci/cirrus/templates/freebsd-12.yml
>  create mode 100644 ci/cirrus/templates/macos-1015.yml
> 
> diff --git a/ci/cirrus/refresh b/ci/cirrus/refresh
> new file mode 100755
> index 0000000000..51deca94ac
> --- /dev/null
> +++ b/ci/cirrus/refresh
> @@ -0,0 +1,32 @@
> +#!/bin/sh
> +
> +if test -z "$1"
> +then
> +    echo "syntax: $0 PATH-TO-LCITOOL"
> +    exit 1
> +fi
> +
> +LCITOOL=$1
> +
> +if ! test -x "$LCITOOL"
> +then
> +    echo "$LCITOOL is not executable"
> +    exit 1
> +fi
> +
> +for infile in templates/*
> +do
> +    outfile="${infile##*/}.j2"
> +    host="${outfile%%.*}"
> +
> +    eval $("$LCITOOL" dockerfile "libvirt-$host" libvirt --variables)
> +
> +    sed -e "s|[@]PKGS@|$PKGS|g" \
> +        -e "s|[@]CROSS_PKGS@|$CROSS_PKGS|g" \
> +        -e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g" \
> +        -e "s|[@]CPAN_PKGS@|$CPAN_PKGS|g" \
> +        -e "s|[@]MAKE@|$MAKE|g" \
> +        -e "s|[@]NINJA@|$NINJA|g" \
> +        -e "s|[@]PYTHON@|$PYTHON|g" \
> +        <"$infile" >"$outfile"
> +done

I feel like this should really be reduced to just:

  $LCITOOL cirrusci libvirt-$host libvirt > $outfile

where the 'cirrusci' command generates this content....

> diff --git a/ci/cirrus/templates/freebsd-12.yml b/ci/cirrus/templates/freebsd-12.yml
> new file mode 100644
> index 0000000000..228ea67827
> --- /dev/null
> +++ b/ci/cirrus/templates/freebsd-12.yml
> @@ -0,0 +1,25 @@
> +freebsd_instance:
> +  image_family: freebsd-12-1
> +
> +env:
> +  CI_REPOSITORY_URL: {{ CI_REPOSITORY_URL }}
> +  CI_COMMIT_REF_NAME: {{ CI_COMMIT_REF_NAME }}
> +  CI_COMMIT_SHA: {{ CI_COMMIT_SHA }}
> +  PKGS: @PKGS@
> +  MAKE: @MAKE@
> +  PYTHON: @PYTHON@
> +
> +freebsd_12_task:
> +  install_script:
> +    - pkg install -y $PKGS
> +  clone_script:
> +    - git clone --depth 100 "$CI_REPOSITORY_URL" .
> +    - git fetch origin "$CI_COMMIT_REF_NAME"
> +    - git reset --hard "$CI_COMMIT_SHA"

...down to this point.


> +  build_script:
> +    - mkdir build
> +    - cd build
> +    - ../autogen.sh --prefix=$(pwd)/install-root
> +    - $MAKE -j3
> +    - $MAKE -j3 install
> +    - $MAKE -j3 dist

This part can then be stored in ci/cirrus/build.yml since it is
common to freebsd & macos.

So now in gitlab-ci.yml we can just concatenate the two into a
temp file:

   cat ci/cirrus/$NAME.yml ci/cirrus/build.yml >  ci/cirrus/$NAME.yml.j2
   cirrus-run ci/cirrus/$NAME.yml.j2

This avoids needing to store the same information in git twice.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list