public inbox for [email protected]
help / color / mirror / Atom feedFrom: Andres Freund <[email protected]>
Subject: [PATCH v12a 3/3] ci: macports improvements
Date: Thu, 4 Jun 2026 10:17:40 -0400
I realized two things:
1) We should save the macports cache before building & running tests, we don't
want to again start from scratch if the task failed or was cancelled
2) We should use a partial cache match, as it's much faster to start from
that, than from scratch.
This requires some additional complexity, we now need an explicit restore step
and need to check if the install step succeeded. But it's a very substantial
improvement in runtime, so it's worthwhile.
---
.github/workflows/pg-ci.yml | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/pg-ci.yml b/.github/workflows/pg-ci.yml
index dea8d95d729..dd4ff4c91d3 100644
--- a/.github/workflows/pg-ci.yml
+++ b/.github/workflows/pg-ci.yml
@@ -690,18 +690,23 @@ jobs:
sudo sysctl kern.corefile="$HOME/cores/core.%P"
- name: "Macports: Compute cache key"
- id: mpkey
+ id: mp-key
run: |
macos_major=$(sw_vers -productVersion | sed 's/\..*//')
pkglist_hash=$(printf '%s' "$MACOS_PACKAGE_LIST" | md5 -q)
script_hash=$(md5 -q src/tools/ci/ci_macports_packages.sh)
echo "key=macports-${macos_major}-${pkglist_hash}-${script_hash}" >> "$GITHUB_OUTPUT"
+ # It's faster to start with a partial cache for the same macos
+ # version than from scratch
+ echo "restore-key=macports-${macos_major}-" >> "$GITHUB_OUTPUT"
- name: "MacPorts: Restore cache"
- uses: actions/cache@v5
+ id: mp-restore
+ uses: actions/cache/restore@v5
with:
path: ${{ env.MACPORTS_CACHE }}
- key: ${{ steps.mpkey.outputs.key }}
+ key: ${{ steps.mp-key.outputs.key }}
+ restore-keys: ${{ steps.mp-key.outputs.restore-key }}
# Use MacPorts, even though Homebrew is installed. The installation
# of the additional packages we need would take quite a while with
@@ -714,6 +719,7 @@ jobs:
# actually p5.34-io-tty. Using the unversioned name works, but
# updates MacPorts every time.
- name: "MacPorts: Install dependencies"
+ id: mp-install
env:
# Pass token so the script's GitHub API call to list MacPorts
# releases isn't subject to the 60/h/IP unauthenticated rate
@@ -727,6 +733,18 @@ jobs:
echo /opt/local/sbin >> "$GITHUB_PATH"
echo /opt/local/bin >> "$GITHUB_PATH"
+ # Save macports before running build / tests, creating macports can be
+ # quite slow, so we don't want to start from scratch in the next run.
+ - name: "MacPorts: Save cache"
+ uses: actions/cache/save@v5
+ # Don't save cache if we had an exact match
+ if: |
+ steps.mp-install.conclusion == 'success' &&
+ steps.mp-restore.outputs.cache-hit != 'true'
+ with:
+ path: ${{ env.MACPORTS_CACHE }}
+ key: ${{ steps.mp-key.outputs.key }}
+
- name: Configure
env:
PKG_CONFIG_PATH: /opt/local/lib/pkgconfig/
--
2.54.0.380.gc69baaf57b
--ijwec7zgt2lxep65--
view thread (390+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected]
Subject: Re: [PATCH v12a 3/3] ci: macports improvements
In-Reply-To: <no-message-id-1209383@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox