From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Thomas Huth <thuth@redhat.com>
Cc: "Beraldo Leal" <bleal@redhat.com>,
qemu-devel@nongnu.org,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Kamil Rytarowski" <kamil@netbsd.org>,
"Reinoud Zandijk" <reinoud@netbsd.org>,
"Ryo ONODERA" <ryoon@netbsd.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Brad Smith" <brad@comstyle.com>
Subject: Re: [PATCH for-7.0] gitlab-ci: Add cirrus-ci based tests for NetBSD and OpenBSD
Date: Fri, 10 Dec 2021 12:10:39 +0000 [thread overview]
Message-ID: <YbNDvwlKf4PeO1Ij@redhat.com> (raw)
In-Reply-To: <20211209103124.121942-1-thuth@redhat.com>
On Thu, Dec 09, 2021 at 11:31:24AM +0100, Thomas Huth wrote:
> Cirrus-CI provides KVM in their Linux containers, so we can also run
> our VM-based NetBSD and OpenBSD build jobs there.
> Since the VM installation might take a while, we only run the "help"
> target on the first invocation to avoid timeouts, and then only check
> the build during the next run, once the base image has been cached.
> For the the build tests, we also only use very a limited set of target
> CPUs since compiling in these VMs is not very fast (especially the
> build on OpenBSD seems to be incredibly slow).
> For the time being, the jobs are also marked as manually only, since
> this double-indirect setup (with the cirrus-run script and VMs in
> the Cirrus-CI containers) might fail more often than the other jobs.
I think they'll have to be manual forever basically unless
something changes in cirrus.
Historically we've had trouble with the cirrus jobs timing out.
This was ultimately a result of the fact that only 2 cirrus jobs
can run concurrently, and we had duplicate jobs being scheduled
on 'master' and 'staging'. This resulted in 4 jobs being queued
and most of the time, and because each job took > 30 minutes,
two of them would frequently hit the gitlab job 1 hour timeout.
Unless we can ensure that /all/ our cirrus jobs will reliably
completed in about 20 minutes in normal case (30 mins if
cirrus is being slow), then we can't have more than 2 cirrus
jobs as one or more will end up going over the 1 hour cutoff.
The idea of having NetBSD/OpenBSD jobs is good, but I think
it feels like a case where we're going to need to look at
using custom runners if we want them triggere on 'staging'.
Manual jobs could be ok for contributors forks at most.
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> If you're interested, you can see some runs here:
> NetBSD: https://gitlab.com/thuth/qemu/-/jobs/1865965079
> OpenBSD: https://gitlab.com/thuth/qemu/-/jobs/1866116634
>
> .gitlab-ci.d/cirrus.yml | 35 +++++++++++++++++++++++++++++++
> .gitlab-ci.d/cirrus/kvm-build.yml | 31 +++++++++++++++++++++++++++
> 2 files changed, 66 insertions(+)
> create mode 100644 .gitlab-ci.d/cirrus/kvm-build.yml
>
> diff --git a/.gitlab-ci.d/cirrus.yml b/.gitlab-ci.d/cirrus.yml
> index 90bbe9f8ff..f2d4c0ca4f 100644
> --- a/.gitlab-ci.d/cirrus.yml
> +++ b/.gitlab-ci.d/cirrus.yml
> @@ -64,3 +64,38 @@ x64-macos-11-base-build:
> PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin
> PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
> TEST_TARGETS: check-unit check-block check-qapi-schema check-softfloat check-qtest-x86_64
> +
> +
> +# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
> +.cirrus_kvm_job:
> + stage: build
> + image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
> + needs: []
> + timeout: 80m
> + allow_failure: true
> + script:
> + - 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|[@]NAME@|$NAME|g"
> + -e "s|[@]CONFIGURE_ARGS@|$CONFIGURE_ARGS|g"
> + -e "s|[@]TEST_TARGETS@|$TEST_TARGETS|g"
> + <.gitlab-ci.d/cirrus/kvm-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:
> + - when: manual
> +
> +x86-netbsd:
> + extends: .cirrus_kvm_job
> + variables:
> + NAME: netbsd
> + CONFIGURE_ARGS: --target-list=x86_64-softmmu,ppc64-softmmu,aarch64-softmmu
> + TEST_TARGETS: check
> +
> +x86-openbsd:
> + extends: .cirrus_kvm_job
> + variables:
> + NAME: openbsd
> + CONFIGURE_ARGS: --target-list=i386-softmmu,riscv64-softmmu,mips64-softmmu
> + TEST_TARGETS: check
> diff --git a/.gitlab-ci.d/cirrus/kvm-build.yml b/.gitlab-ci.d/cirrus/kvm-build.yml
> new file mode 100644
> index 0000000000..4334fabf39
> --- /dev/null
> +++ b/.gitlab-ci.d/cirrus/kvm-build.yml
> @@ -0,0 +1,31 @@
> +container:
> + image: fedora:35
> + cpu: 4
> + memory: 8Gb
> + kvm: true
> +
> +env:
> + CIRRUS_CLONE_DEPTH: 1
> + CI_REPOSITORY_URL: "@CI_REPOSITORY_URL@"
> + CI_COMMIT_REF_NAME: "@CI_COMMIT_REF_NAME@"
> + CI_COMMIT_SHA: "@CI_COMMIT_SHA@"
> +
> +@NAME@_task:
> + @NAME@_vm_cache:
> + folder: $HOME/.cache/qemu-vm
> + install_script:
> + - dnf update -y
> + - dnf install -y git make openssh-clients qemu-img qemu-system-x86 wget
> + clone_script:
> + - git clone --depth 100 "$CI_REPOSITORY_URL" .
> + - git fetch origin "$CI_COMMIT_REF_NAME"
> + - git reset --hard "$CI_COMMIT_SHA"
> + build_script:
> + - if [ -f $HOME/.cache/qemu-vm/images/@NAME@.img ]; then
> + make vm-build-@NAME@ J=$(getconf _NPROCESSORS_ONLN)
> + EXTRA_CONFIGURE_OPTS="@CONFIGURE_ARGS@"
> + BUILD_TARGET="@TEST_TARGETS@" ;
> + else
> + make vm-build-@NAME@ J=$(getconf _NPROCESSORS_ONLN) BUILD_TARGET=help
> + EXTRA_CONFIGURE_OPTS="--disable-system --disable-user --disable-tools" ;
> + fi
> --
> 2.27.0
>
>
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 :|
next prev parent reply other threads:[~2021-12-10 12:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-09 10:31 [PATCH for-7.0] gitlab-ci: Add cirrus-ci based tests for NetBSD and OpenBSD Thomas Huth
2021-12-10 12:10 ` Daniel P. Berrangé [this message]
2021-12-13 8:52 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YbNDvwlKf4PeO1Ij@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=bleal@redhat.com \
--cc=brad@comstyle.com \
--cc=f4bug@amsat.org \
--cc=kamil@netbsd.org \
--cc=qemu-devel@nongnu.org \
--cc=reinoud@netbsd.org \
--cc=ryoon@netbsd.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.