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