On Wed, Mar 25, 2020 at 11:48:35AM +0100, Andrea Bolognani wrote: > 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. By default jobs in a stage get given a dependency "needs: [.... jobs from prev stage...]" which serializes each stage, but that is not mandatory. We can set the stages to allow parallel execution across stages using an explicit 'needs: []'. So we can keep stage as a conceptual grouping without affecting parallelism. 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 :|