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-01 21:57:15
Message-ID: hrnz6qiutyms3jeaal2peka546phbihjggc7lv5rmb5azwdfey@hxdpwy4rxbvu
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

Attached is an large incremental patch onto Bilal's version:

- I hacked enough on the pg-vm-images repo to make it store containers in
github (on the gha_main branch, for now). That makes the container faster
and cheaper to retrieve.

We might want to split the containers further (e.g. cross building and 32bit
support), but for now I just split the docs stuff into a separate container.

- The reason that sometimes cancelling took a long time was, afaict, the use
of always() in the compiler-warning job. That apparently prevents GHA from
cancelling the job in a timely fashion. I turned those into !cancelled().

Also addded a !cancelled() to SanityCheck.

- In the end I didn't like the matrix all that much, makes it considerably
harder to understand everything and the restrictions GHA puts on it are just
too annoying.

I replaced it much more heavy use of yaml anchors/aliases and by updating
the environment programattically. I'm not sure how much better it is now.

- The macports cache keys included the run_id, I think that's a bad idea,
because it leads to the cache being newly uploaded even if there's been no
change. That'll lead to even more quickly churning through the cache space.

- ccache:

- There was too much duplication around the ccache handling for my taste. I
moved that into a yaml anchor and reused it everywhere. By using
${{github.job_id}} the cache names don't need to be manually disambiguated.

- The ccache names weren't unique enough. The run_id doesn't change during
reruns which would lead to warnings.

- Made it so that the cache is saved immediately after the build, so that
cancelled builds still save the cache.

- I wanted to share commands like meson test between the tasks, made that work
with a bit of hackery.

- I didn't see why
find / -maxdepth 1 -type f -name 'core*' -exec mv '{}' /tmp/cores/ \;
was needed.

- I found it hard to find actual warnings in the output of CompilerWarnings,
due to to all the configure output. I added some magic output stuff to make
the configure output collapse once it ran.

- I converted most things to use ${{env.varname}} instead of $VARNAME or
%VARNAME%, as that allows sharing code between windows and other OSs if one
is a bit careful.

- Deduplicated a few other things like logging.

- Added a commit removing cirrus, mainly because I was tired of it also
running while hacking on this.

- Also added a commit to reduce the segment size in tests to 1MB, that makes
them a decent bit less IO intensive.

- Added a commit to just run regress/regress, makes it a lot faster to test
"complete-ish" cycles.

- Changed sanitizer using builds to use -O2, to reduce the CPU cost a bit.

This makes uncached builds noticeably slower, but does appear to be a
win. But I could see counter-arguments to that too.

- Removed :detect_stack_use_after_return=0, as that's been made unnecessary
since you "forked off" from .cirrus.tasks.yml.

A few other comments:

- All the caches in GHA apparently are branch specific, except that branches
can access the caches of the main branch.

I think that'll make particularly macports very expensive for cfbot. I
wonder if we ought to build the "base" macports cache in pg-vm-images.

Similarly, I think we probably should do that for mingw64.

- src/tools/ci/README needs updating

- I experimented with making the slowest jobs faster by using
meson test --slice 1/2
that actually does nicely work. But it didn't quite seem critical for now.

Here's a run running with just regress/regress:
https://github.com/anarazel/postgres/actions/runs/26782558353
(the CompilerWarnings ccache hit had a miss, that's why it's not faster)

Here's a (not yet completed) run with the full tests:
https://github.com/anarazel/postgres/actions/runs/26784248887

Thoughts?

Greetings,

Andres Freund

Attachment Content-Type Size
v6a-0001-Add-GitHub-Actions-workflow-for-CI.patch text/x-diff 40.3 KB
v6a-0002-gha-Andres-revisions.patch text/x-diff 40.7 KB
v6a-0003-disable-cirrus.patch text/x-diff 39.4 KB
v6a-0004-smaller-segsize-for-tests.patch text/x-diff 5.9 KB
v6a-0005-gha-Only-run-main-regression-tests.patch text/x-diff 1.2 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Previous Message Joel Jacobson 2026-06-01 21:33:24 Re: PostgreSQL 19 Beta 1 release announcement draft