Re: Heads Up: cirrus-ci is shutting down June 1st

From: Andres Freund <andres(at)anarazel(dot)de>
To: Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com>
Cc: Jacob Champion <jacob(dot)champion(at)enterprisedb(dot)com>, Jelte Fennema-Nio <postgres(at)jeltef(dot)nl>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org, Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>
Subject: Re: Heads Up: cirrus-ci is shutting down June 1st
Date: 2026-06-02 16:53:02
Message-ID: a3eudrnrswr2cezdgynkpmlu4i273gpt2j4amm56gxoy7qhfhg@feymt7gzlkna
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2026-06-02 15:19:02 +0300, Nazir Bilal Yavuz wrote:
> +concurrency:
> + group: ${{ github.workflow }}-${{ github.ref }}
> + # Never cancel in-progress runs on master to ensure all commits are tested.
> + cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}

> concurrency:
> group: ${{ github.workflow }}-${{ github.ref }}
> - # Never cancel in-progress runs on master to ensure all commits are tested.
> - # FIXME: Should also not cancel REL_XY_STABLE
> - cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
> + # Never cancel in-progress runs on master or release branches, to ensure
> + # all commits are tested.
> + cancel-in-progress: ${{ github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/heads/REL_') }}

Experimenting with this, it actually seems neither really does what I think we
want.

What I think we want is cirrus' behaviour, that is, not cancel workflows that
are on master/stable branches and, if on such a branch, allow multiple runs to
be in progress at the same time.

The above achieves not cancelling workflows on those branches, but it does so
by waiting for the prior workflow to finish. Which I think is kinda bad,
because it makes it entirely possible to fall further and further behind.

As-is, it'd afaik still cancel workflows, as soon as more than one workflow is
queued (we'd have to set queue: max to allow that).

Afaict what we should do is to instead set a unique group: when on a stable
branch. Something like

concurrency:
# For anything other than stable branches, we want there to only be one
# workflow active for that branch. But on stable branches & master, we
# neither want to wait for prior runs, nor to cancel them, so that each
# separately pushed commit is tested. We achieve that by setting a unique
# concurrency group when on such a banch.
group: |
${{github.workflow }}-${{
case(github.ref == 'refs/heads/master' ||
(startsWith(github.ref, 'refs/heads/REL_') && endsWith(github.ref, '_STABLE')),
github.run_id,
github.ref)
}}

seems to do the trick.

Does that make sense as an approach and goal?

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nazir Bilal Yavuz 2026-06-02 17:36:08 Re: Heads Up: cirrus-ci is shutting down June 1st
Previous Message Tom Lane 2026-06-02 16:24:41 Re: Broken build on macOS (Universal / Intel): cpuid instruction not available