diff mbox series

support/misc/gitlab-ci.yml.in: include Branches workflow

Message ID 20200830155953.1650346-1-arnout@mind.be
State Rejected
Headers show
Series support/misc/gitlab-ci.yml.in: include Branches workflow | expand

Commit Message

Arnout Vandecappelle Aug. 30, 2020, 3:59 p.m. UTC
Recently, gitlab-ci has gained a lot more flexibility in when pipelines
are created. As a side-effect of this, double pipelines may be created
when a `when` clause is used in some job. Avoid this by adding a
workflow that launches it only on branches. See [1] and [2].

Note that in reality, the duplicate pipelines only occur for merge
requests. Since we don't have merge requests, we don't have this
problem. Howver, gitlab also displays an annoying error message on the
pipeline page [3], and it sends an error mail to the triggerer (i.e.,
Arnout), so it's still useful to do this.

[1] https://docs.gitlab.com/ee/ci/yaml/README.html#prevent-duplicate-pipelines
[2] https://docs.gitlab.com/ee/ci/yaml/README.html#workflowrules-templates
[3] https://gitlab.com/buildroot.org/buildroot/-/pipelines/183589361/builds

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
I'd like to get this one in master, because the e-mails are annoying me
:-)
---
 support/misc/gitlab-ci.yml.in | 3 +++
 1 file changed, 3 insertions(+)

Comments

Yann E. MORIN Aug. 31, 2020, 12:43 p.m. UTC | #1
Arnout, All,

+Romain and +Jugurtha, as we've had some discussions on that topic
publicly and privately before.

On 2020-08-30 17:59 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
> Recently, gitlab-ci has gained a lot more flexibility in when pipelines
> are created. As a side-effect of this, double pipelines may be created
> when a `when` clause is used in some job. Avoid this by adding a
> workflow that launches it only on branches. See [1] and [2].
> 
> Note that in reality, the duplicate pipelines only occur for merge
> requests. Since we don't have merge requests, we don't have this
> problem. Howver, gitlab also displays an annoying error message on the
> pipeline page [3], and it sends an error mail to the triggerer (i.e.,
> Arnout), so it's still useful to do this.
> 
> [1] https://docs.gitlab.com/ee/ci/yaml/README.html#prevent-duplicate-pipelines
> [2] https://docs.gitlab.com/ee/ci/yaml/README.html#workflowrules-templates
> [3] https://gitlab.com/buildroot.org/buildroot/-/pipelines/183589361/builds
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> ---
> I'd like to get this one in master, because the e-mails are annoying me
> :-)

I'd like to suggest an alternative: move all the conditions into the
generating script, now that we do have a script that generates the
pipeline description.

Having the conditions in the script will help handle such cases, by only
ever emitting those jobs we actually want to run. This would allow for
more flexibility than the limited micro-language used by gitlab-ci.yml.

Also, this will allow us to not care about the evolutions of that micro-
language.

To that effect, I already started workign on that two weeks ago, and I
have omething that works as before (even better I think):

    https://git.buildroot.org/~ymorin/git/buildroot/log/?h=yem/gitlab-ci-cond

I just need to cleanup that last commit (and remember why I started
doing it. meh...). I hope I'll be able to send it tonight.

Regards,
Yann E. MORIN.

> ---
>  support/misc/gitlab-ci.yml.in | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in
> index dddebf09e9..8a031898ef 100644
> --- a/support/misc/gitlab-ci.yml.in
> +++ b/support/misc/gitlab-ci.yml.in
> @@ -1,6 +1,9 @@
>  # Configuration for Gitlab-CI.
>  # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
>  
> +include:
> +  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
> +
>  image: buildroot/base:20200814.2228
>  
>  .check_base:
> -- 
> 2.26.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Arnout Vandecappelle Aug. 31, 2020, 12:58 p.m. UTC | #2
On 31/08/2020 14:43, Yann E. MORIN wrote:
> Arnout, All,
> 
> +Romain and +Jugurtha, as we've had some discussions on that topic
> publicly and privately before.
> 
> On 2020-08-30 17:59 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
>> Recently, gitlab-ci has gained a lot more flexibility in when pipelines
>> are created. As a side-effect of this, double pipelines may be created
>> when a `when` clause is used in some job. Avoid this by adding a
>> workflow that launches it only on branches. See [1] and [2].
>>
>> Note that in reality, the duplicate pipelines only occur for merge
>> requests. Since we don't have merge requests, we don't have this
>> problem. Howver, gitlab also displays an annoying error message on the
>> pipeline page [3], and it sends an error mail to the triggerer (i.e.,
>> Arnout), so it's still useful to do this.
>>
>> [1] https://docs.gitlab.com/ee/ci/yaml/README.html#prevent-duplicate-pipelines
>> [2] https://docs.gitlab.com/ee/ci/yaml/README.html#workflowrules-templates
>> [3] https://gitlab.com/buildroot.org/buildroot/-/pipelines/183589361/builds
>>
>> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
>> ---
>> I'd like to get this one in master, because the e-mails are annoying me
>> :-)
> 
> I'd like to suggest an alternative: move all the conditions into the
> generating script, now that we do have a script that generates the
> pipeline description.

 Note that it's not the complicated conditions on the defconfig and test jobs
that are the issue. The warning is also issued for check-flake8... So I think
the workflow will still be needed (or alternatively, every job should have a
condition to run only on branches).

 Also, I would like to move the "constant" bits back out to the top-level
gitlab-ci.yml, so the first page already shows the quick test results.

> Having the conditions in the script will help handle such cases, by only
> ever emitting those jobs we actually want to run. This would allow for
> more flexibility than the limited micro-language used by gitlab-ci.yml.
> 
> Also, this will allow us to not care about the evolutions of that micro-
> language.
> 
> To that effect, I already started workign on that two weeks ago, and I
> have omething that works as before (even better I think):
> 
>     https://git.buildroot.org/~ymorin/git/buildroot/log/?h=yem/gitlab-ci-cond
> 
> I just need to cleanup that last commit (and remember why I started
> doing it. meh...). I hope I'll be able to send it tonight.

 I think that's a great idea. However, that sounds like a bigger change which
probably shouldn't go into master. So I'd prefer to still merge my patch as well.

 Regards,
 Arnout

> 
> Regards,
> Yann E. MORIN.
> 
>> ---
>>  support/misc/gitlab-ci.yml.in | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in
>> index dddebf09e9..8a031898ef 100644
>> --- a/support/misc/gitlab-ci.yml.in
>> +++ b/support/misc/gitlab-ci.yml.in
>> @@ -1,6 +1,9 @@
>>  # Configuration for Gitlab-CI.
>>  # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
>>  
>> +include:
>> +  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
>> +
>>  image: buildroot/base:20200814.2228
>>  
>>  .check_base:
>> -- 
>> 2.26.2
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
Yann E. MORIN Aug. 31, 2020, 7:52 p.m. UTC | #3
Arnout, All,

On 2020-08-31 14:58 +0200, Arnout Vandecappelle spake thusly:
>  Note that it's not the complicated conditions on the defconfig and test jobs
> that are the issue. The warning is also issued for check-flake8... So I think
> the workflow will still be needed (or alternatively, every job should have a
> condition to run only on branches).

Sorry, but I don't follow: if the jobs are only generated when we want
them, then they no longer have conditions in the generated gitlab-ci.yml
to begin with; that's the whole point of moving the conditional handling
into the script.

> On 31/08/2020 14:43, Yann E. MORIN wrote:
> > I'd like to suggest an alternative: move all the conditions into the
> > generating script, now that we do have a script that generates the
> > pipeline description.
[--SNIP--]
>  Also, I would like to move the "constant" bits back out to the top-level
> gitlab-ci.yml, so the first page already shows the quick test results.

Sorry, but again they are not "constant". For example, check-flake8,
check-package and check-DEVELOPERS are not run when one pushes a
*_defconfig or *_test branch (or however they are named) to trigger the
build of jsut that defconfig or just that runtime test.

> > Having the conditions in the script will help handle such cases, by only
> > ever emitting those jobs we actually want to run. This would allow for
> > more flexibility than the limited micro-language used by gitlab-ci.yml.
> > 
> > Also, this will allow us to not care about the evolutions of that micro-
> > language.
>  I think that's a great idea. However, that sounds like a bigger change which
> probably shouldn't go into master. So I'd prefer to still merge my patch as well.

See an actual comment on that patch, below...

> >> diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in
> >> index dddebf09e9..8a031898ef 100644
> >> --- a/support/misc/gitlab-ci.yml.in
> >> +++ b/support/misc/gitlab-ci.yml.in
> >> @@ -1,6 +1,9 @@
> >>  # Configuration for Gitlab-CI.
> >>  # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
> >>  
> >> +include:
> >> +  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'

Where does that file come from? How are we guaranteed that its content
does not change and break our pipelines?

If that template is interesting, then we should carry it rather than
depend on an external, un-managed entity...

Regards,
Yann E. MORIN.

> >>  image: buildroot/base:20200814.2228
> >>  
> >>  .check_base:
> >> -- 
> >> 2.26.2
> >>
> >> _______________________________________________
> >> buildroot mailing list
> >> buildroot@busybox.net
> >> http://lists.busybox.net/mailman/listinfo/buildroot
> >
Yann E. MORIN Aug. 31, 2020, 9:49 p.m. UTC | #4
Arnout, Jugurtha, All,

On 2020-08-31 14:58 +0200, Arnout Vandecappelle spake thusly:
> On 31/08/2020 14:43, Yann E. MORIN wrote:
> > +Romain and +Jugurtha, as we've had some discussions on that topic
> > publicly and privately before.
[--SNIP--]
> > To that effect, I already started workign on that two weeks ago, and I
> > have omething that works as before (even better I think):
> >     https://git.buildroot.org/~ymorin/git/buildroot/log/?h=yem/gitlab-ci-cond
> > I just need to cleanup that last commit (and remember why I started
> > doing it. meh...). I hope I'll be able to send it tonight.

And of course, as usual, I did not have time to properly finish that
branch...

Still, it is very close to be ready, with all the test cases now working
as expected:

Random branch, only basic tests
    https://gitlab.com/ymorin/buildroot/-/commits/yem/gitlab-ci-cond
    https://gitlab.com/ymorin/buildroot/-/pipelines/184068345

All defconfigs:
    https://gitlab.com/ymorin/buildroot/-/commits/FOO-defconfigs
    https://gitlab.com/ymorin/buildroot/-/pipelines/184069188

One defconfig:
    https://gitlab.com/ymorin/buildroot/-/commits/FOO-warp7_defconfig
    https://gitlab.com/ymorin/buildroot/-/pipelines/184068523

All runtime tests:
    https://gitlab.com/ymorin/buildroot/-/commits/FOO-runtime-tests
    https://gitlab.com/ymorin/buildroot/-/pipelines/184070380

One runtime test:
    https://gitlab.com/ymorin/buildroot/-/commits/FOO-tests.package.test_openssh
    https://gitlab.com/ymorin/buildroot/-/pipelines/184068633

I still have to test a maintenance branch (by faking one with a branch
named 'fooo.no.x' to match the pattern), but I'm afraid I've reached my
allowed number of jobs for now...

Regards,
Yann E. MORIN.
Arnout Vandecappelle Sept. 1, 2020, 6:52 a.m. UTC | #5
On 31/08/2020 21:52, Yann E. MORIN wrote:
> Arnout, All,
> 
> On 2020-08-31 14:58 +0200, Arnout Vandecappelle spake thusly:
>>  Note that it's not the complicated conditions on the defconfig and test jobs
>> that are the issue. The warning is also issued for check-flake8... So I think
>> the workflow will still be needed (or alternatively, every job should have a
>> condition to run only on branches).
> 
> Sorry, but I don't follow: if the jobs are only generated when we want
> them, then they no longer have conditions in the generated gitlab-ci.yml
> to begin with; that's the whole point of moving the conditional handling
> into the script.

 Ah, OK, I thought it was just about generating the defconfig and tests parts.
My bad.

>> On 31/08/2020 14:43, Yann E. MORIN wrote:
[snip]

> 
> See an actual comment on that patch, below...
> 
>>>> diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in
>>>> index dddebf09e9..8a031898ef 100644
>>>> --- a/support/misc/gitlab-ci.yml.in
>>>> +++ b/support/misc/gitlab-ci.yml.in
>>>> @@ -1,6 +1,9 @@
>>>>  # Configuration for Gitlab-CI.
>>>>  # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
>>>>  
>>>> +include:
>>>> +  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
> 
> Where does that file come from? How are we guaranteed that its content
> does not change and break our pipelines?
> 
> If that template is interesting, then we should carry it rather than
> depend on an external, un-managed entity...

 It is part of the gitlab installation. That means that indeed it is not under
our control, but neither is the rest of gitlab (e.g., the part that generates
those warnings :-). In other words: it's about as reliable as the rules clauses
we have now.

 Note that the workflow file is indeed very simple, and we could simply
instantiate it here.

 Again, though, in order to expedite the 2020.08 release, I propose to apply
this simple patch to master, and soon after merge your series that makes it
script-based - possibly backporting it to the stable branches, though I don't
really think that is needed.

 Regards,
 Arnout
Yann E. MORIN Oct. 6, 2020, 8:42 p.m. UTC | #6
Arnout, All,

On 2020-08-30 17:59 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:
> Recently, gitlab-ci has gained a lot more flexibility in when pipelines
> are created. As a side-effect of this, double pipelines may be created
> when a `when` clause is used in some job. Avoid this by adding a
> workflow that launches it only on branches. See [1] and [2].
> 
> Note that in reality, the duplicate pipelines only occur for merge
> requests. Since we don't have merge requests, we don't have this
> problem. Howver, gitlab also displays an annoying error message on the
> pipeline page [3], and it sends an error mail to the triggerer (i.e.,
> Arnout), so it's still useful to do this.
> 
> [1] https://docs.gitlab.com/ee/ci/yaml/README.html#prevent-duplicate-pipelines
> [2] https://docs.gitlab.com/ee/ci/yaml/README.html#workflowrules-templates
> [3] https://gitlab.com/buildroot.org/buildroot/-/pipelines/183589361/builds
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

We've no merged a better script that contains all the logic about
generating the child pipeline, so I believe this patch of yours is no
longer needed.

Regards,
Yann E. MORIN.

> ---
> I'd like to get this one in master, because the e-mails are annoying me
> :-)
> ---
>  support/misc/gitlab-ci.yml.in | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in
> index dddebf09e9..8a031898ef 100644
> --- a/support/misc/gitlab-ci.yml.in
> +++ b/support/misc/gitlab-ci.yml.in
> @@ -1,6 +1,9 @@
>  # Configuration for Gitlab-CI.
>  # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
>  
> +include:
> +  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
> +
>  image: buildroot/base:20200814.2228
>  
>  .check_base:
> -- 
> 2.26.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/support/misc/gitlab-ci.yml.in b/support/misc/gitlab-ci.yml.in
index dddebf09e9..8a031898ef 100644
--- a/support/misc/gitlab-ci.yml.in
+++ b/support/misc/gitlab-ci.yml.in
@@ -1,6 +1,9 @@ 
 # Configuration for Gitlab-CI.
 # Builds appear on https://gitlab.com/buildroot.org/buildroot/pipelines
 
+include:
+  - template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
+
 image: buildroot/base:20200814.2228
 
 .check_base: