lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: new procedure with GitLab CI


From: David Kastrup
Subject: Re: new procedure with GitLab CI
Date: Fri, 29 May 2020 22:47:19 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Han-Wen Nienhuys <hanwenn@gmail.com> writes:

> On Fri, May 29, 2020 at 7:04 PM Valentin Villenave
> <valentin@villenave.net> wrote:
>>
>> On 5/27/20, Jonas Hahnfeld <hahnjo@hahnjo.de> wrote:
>> > No, "rebase" is currently manual (with "merge when pipeline succeeds"
>> > being automatic). This has been clearly communicated, sorry if you
>> > missed that.
>>
>> Hey Jonas, hey everybody;
>> just so you know, I’m getting increasingly frustrated -- as you may
>> ..
>> -- The need to let the pipeline run every time an MR branch is
>
> I concur that this is problematic. Today, I spent several hours
> shepherding my multiple MRs through the process, which was
> additionally complicated by David and Valentin doing the same.

Well, I'll have to admit that I cheated.  Essentially by working with a
virtual staging branch: I checked what pipelines were running, checked
the associated issues for "merge upon completion".  And then I just
rebased on the not-yet-merged pipeline and started my own pipeline on
that, getting a solid headstart before anybody waiting for the original
pipeline to complete.

Problem: this is not more than a smartass move really since it does not
scale and would get the more error-prone the more people try something
like that.  Also you'll see that the last branch information in my merge
requests includes the not-yet-pushed commits that I rebased on.

So I lean towards the following process modeled upon our old one:

No push to master except by automation.  Staging is unprotected and gets
scheduled runners.  People ultimately rebase and push there once they
get Patch-push status.  Default branch can be master as long as we make
sure that one cannot push there: that way you never rebase on ephemeral
commits.

When James gives Patch-push status (which he hopefully does supported by
a script), at the same time any merge request pointed at master gets
changed to point at staging.  So if you are "Patch-push", the "Push"
button starts working.

That means as long as staging isn't stuck (and we should make sure that
the scheduled pipelines do not pick up the same commit more than once to
avoid wasting our minutes), you can rebase on master when you want (or
not).  One initial pipeline run should be require to get into "Review"
state.  Rebasing puts you back to "Patch-new" (which for trivial stuff
you may choose to hand-replace with "Patch-review" at the danger of
later getting staging borked).

It would be nice that if staging has tested as being borked, we could
temporarily disable pushes to staging: that will keep the patches and
merge requests requiring redoing limited.  We got out along without that
previously but if the automation is good for that, that would be great.

At any rate, this scheme naively does not seem to require stuff
impossible to do with Gitlab, at least for the basic parts of operation.
And it would mean that you can usually rebase and forget without waiting
for pipeline completions.  And you get the liberty of bypassing most CI
and rebases if you don't want to.

I may be wrong about the possibility to do this with a reasonable amount
of effort: I don't want to get hopes up unnecessarily.

-- 
David Kastrup



reply via email to

[Prev in Thread] Current Thread [Next in Thread]