[libvirt PATCH v2 6/9] gitlab: add x86_64 native CI jobs
Andrea Bolognani
abologna at redhat.com
Wed Mar 25 10:48:35 UTC 2020
On Tue, 2020-03-24 at 18:21 +0000, Daniel P. Berrangé wrote:
> On Tue, Mar 24, 2020 at 06:47:01PM +0100, Andrea Bolognani wrote:
> > I don't get the rationale behind the split.
> >
> > Right now we're not using merge requests, but we're limiting the
> > number of jobs for the merge request case; at the same time, we say
> > that once we switch to a MR-based workflow, we're going to run the
> > extra jobs on each merge request as well. So what does the
> > distinction buy us?
>
> With this split today, if I push to my private fork, then the
> reduced set of jobs run. This gives quick turnaround for developers
> developing patches.
>
> When it gets reviewed & pushed to master, the full set run post
> merge.
>
> In the future, when we switch to merge requests, we'll change
> it so that the full set run when the merge request is opened,
> instad of post-merge.
>
> What is run for developers private branches will remain the
> same
Okay, I understand the rationale now, and I can see that we were
arguing for very similar approaches the entire time - it's just that
I could not see that. Thanks for taking the time to spell it out for
me :)
> > * pick a selection of jobs that includes both native and cross
> > build, across various distros of different vintage, such that
> > they can all run without waiting on shared runners. This can be
> > used by developers as a reasonably quick (~20 minutes) smoke
> > test while working on a feature;
>
> "without waiting on shared runners" is undefined, as whether you
> wait & how long, is dependant on many things outside our control.
> As notedin the cover letter though, this minimal set of native
> + cross build jobs gives about a 35 min turn around based on
> load I see today. I think that's acceptably fast.
Given the intentions, I think the current split can be improved
further: having cross_build as a separate stage from native_build
means that the former has to wait before the latter is done to even
start, and that makes wait times longer.
I suggest we instead have the following stages:
artifacts:
- website
- potfile
smoke:
- armv7l-debian-sid
- mingw32-fedora-30
- mingw64-fedora-30
- s390x-debian-10
- x64-centos-7
- x64-debian-10
- x64-fedora-30
- x64-fedora-rawhide
- x64-opensuse-151
- x64-ubuntu-1604
full_coverage:
- x64-centos-8
- x64-debian-9
- x64-debian-sid
- x64-fedora-31
- x64-ubuntu-1804
Aside from the name change, this maintains the same job split, except
for merging the native_build and cross_build stages together. When I
tested this split, the artifacts + smoke builds only took ~20 minutes
thanks to the increased parallelism; even if for load balancing
reasons the smoke builds were not able to start all at the same time,
I reckon this setup would still fare better than forcing the second
batch to start only after the first one has completed.
Another thing that I would like to point out is that, while it makes
sense that we'd only have a small number of cross-builds happening in
the smoke test phase, when it comes to post-merge (and later merge
request) time we don't really need to limit ourselves as much, and we
could easily leave most of the existing cross-build jobs enabled as
part of the full_coverage stage.
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list