Daniel P. Berrangé <berra...@redhat.com> writes:
> On Wed, Jun 30, 2021 at 03:58:57PM -0300, Wainer dos Santos Moschetta wrote: >> Hi, >> >> On 6/25/21 2:22 PM, Daniel P. Berrangé wrote: >> > This adds support for running 4 jobs via Cirrus CI runners: >> > >> > * FreeBSD 12 >> > * FreeBSD 13 >> > * macOS 11 with default XCode >> > * macOS 11 with latest XCode >> > >> > The gitlab job uses a container published by the libvirt-ci >> > project (https://gitlab.com/libvirt/libvirt-ci) that contains >> > the 'cirrus-run' command. This accepts a short yaml file that >> > describes a single Cirrus CI job, runs it using the Cirrus CI >> > REST API, and reports any output to the console. >> > >> > In this way Cirrus CI is effectively working as an indirect >> > custom runner for GitLab CI pipelines. The key benefit is that >> > Cirrus CI job results affect the GitLab CI pipeline result and >> > so the user only has look at one CI dashboard. >> > >> > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> >> > --- >> > .gitlab-ci.d/cirrus.yml | 103 ++++++++++++++++++++++++++++ >> > .gitlab-ci.d/cirrus/README.rst | 54 +++++++++++++++ >> > .gitlab-ci.d/cirrus/build.yml | 35 ++++++++++ >> > .gitlab-ci.d/cirrus/freebsd-12.vars | 13 ++++ >> > .gitlab-ci.d/cirrus/freebsd-13.vars | 13 ++++ >> > .gitlab-ci.d/cirrus/macos-11.vars | 15 ++++ >> > .gitlab-ci.d/qemu-project.yml | 1 + >> > 7 files changed, 234 insertions(+) >> > create mode 100644 .gitlab-ci.d/cirrus.yml >> > create mode 100644 .gitlab-ci.d/cirrus/README.rst >> > create mode 100644 .gitlab-ci.d/cirrus/build.yml >> > create mode 100644 .gitlab-ci.d/cirrus/freebsd-12.vars >> > create mode 100644 .gitlab-ci.d/cirrus/freebsd-13.vars >> > create mode 100644 .gitlab-ci.d/cirrus/macos-11.vars >> > >> > diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml >> > new file mode 100644 >> > index 0000000000..d7b4cce79b >> > --- /dev/null >> > +++ b/.gitlab-ci.d/cirrus.yml >> > @@ -0,0 +1,103 @@ >> > +# Jobs that we delegate to Cirrus CI because they require an operating >> > +# system other than Linux. These jobs will only run if the required >> > +# setup has been performed on the GitLab account. >> > +# >> > +# The Cirrus CI configuration is generated by replacing target-specific >> > +# variables in a generic template: some of these variables are provided >> > +# when the GitLab CI job is defined, others are taken from a shell >> > +# snippet generated using lcitool. >> > +# >> > +# Note that the $PATH environment variable has to be treated with >> > +# special care, because we can't just override it at the GitLab CI job >> > +# definition level or we risk breaking it completely. >> > +.cirrus_build_job: >> > + stage: build >> > + image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master >> > + needs: [] >> > + script: >> > + - source .gitlab-ci.d/cirrus/$NAME.vars >> > + - sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g" >> > + -e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g" >> > + -e "s|[@]CI_COMMIT_SHA@|$CI_COMMIT_SHA|g" >> > + -e "s|[@]CIRRUS_VM_INSTANCE_TYPE@|$CIRRUS_VM_INSTANCE_TYPE|g" >> > + -e "s|[@]CIRRUS_VM_IMAGE_SELECTOR@|$CIRRUS_VM_IMAGE_SELECTOR|g" >> > + -e "s|[@]CIRRUS_VM_IMAGE_NAME@|$CIRRUS_VM_IMAGE_NAME|g" >> > + -e "s|[@]CIRRUS_VM_CPUS@|$CIRRUS_VM_CPUS|g" >> > + -e "s|[@]CIRRUS_VM_RAM@|$CIRRUS_VM_RAM|g" >> > + -e "s|[@]UPDATE_COMMAND@|$UPDATE_COMMAND|g" >> > + -e "s|[@]INSTALL_COMMAND@|$INSTALL_COMMAND|g" >> > + -e "s|[@]PATH@|$PATH_EXTRA${PATH_EXTRA:+:}\$PATH|g" >> > + -e "s|[@]PKG_CONFIG_PATH@|$PKG_CONFIG_PATH|g" >> > + -e "s|[@]PKGS@|$PKGS|g" >> > + -e "s|[@]MAKE@|$MAKE|g" >> > + -e "s|[@]PYTHON@|$PYTHON|g" >> > + -e "s|[@]PIP3@|$PIP3|g" >> > + -e "s|[@]PYPI_PKGS@|$PYPI_PKGS|g" >> > + -e "s|[@]CONFIGURE_ARGS@|$CONFIGURE_ARGS|g" >> > + -e "s|[@]TEST_TARGETSS@|$TEST_TARGETSS|g" >> > + <.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml >> > + - cat .gitlab-ci.d/cirrus/$NAME.yml >> > + - cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml >> > + rules: >> > + - if: "$TEMPORARILY_DISABLED" >> >> Reading 'TEMPORARILY_DISABLED' I immediately think the job is malfunctioning >> or under maintenance. > > Actually this is cruft that I mistakenly copied from libvirt's rules. > >> But since the plan is to keep it running as 'non-gate' until it proves >> reliable, so maybe you could rename the variable to 'NON_GATE' or >> 'STAGING_JOB' (i.e. some words to better express the intent). > > We can just remove the 'if $TEMPORARILY_DISABLED' bit and > have only the 'allow_failure: true' bit I've cleaned that up on testing/next -- Alex Bennée