| 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 |
| From | Date | Subject | |
|---|---|---|---|
| Previous Message | Joel Jacobson | 2026-06-01 21:33:24 | Re: PostgreSQL 19 Beta 1 release announcement draft |