Skip to content

feat(ci): build, smoke-test and release binaries for linux and macOS - #3

Merged
jackmarsh merged 3 commits into
masterfrom
ci/release-builds
Oct 7, 2026
Merged

jackmarsh merged 3 commits into
masterfrom
ci/release-builds

Conversation

@jackmarsh

Copy link
Copy Markdown
Collaborator

Why

Releases are built by hand with release/release.sh on whoever's machine, so darwin_arm64 assets exist only where someone happened to build on a Mac. There's no psql-ai darwin build after 15.x, so postgres_ai_binary(version = "17.6") 404s on Apple Silicon.

What

  • .github/workflows/release.yaml builds every version under binaries/ on:

    • ubuntu-24.04 → linux_x86_64. Pinned, not -latest: the binaries link the runner's libicu74 and glibc 2.38, which is what existing consumers already run.
    • macos-14 → darwin_arm64.

    It smoke-tests every tarball and uploads them as artifacts. On a v* tag it publishes one release, only if every build and test passed and the tag matches RELEASE_VERSION. It runs on PRs and on pushes to master too, so a broken build shows up before anyone tags.

  • release/smoke_test.sh unpacks a tarball, initdbs, starts postgres, and creates uuid-ossp and pg_stat_statements, plus vector and age (with create_graph) for AI.

  • make -j<cores>: a serial 17.6 AI build takes ~16 CPU-minutes, which is too close to the old 20-minute rule timeout on a runner. The timeout is now 60.

  • RELEASE_VERSION → v0.0.6, for the first CI-built release.

  • README: how to release.

Tested

  • Locally on Linux: ./pleasew build //binaries/v17.6/... (1m45s with -j), and both tarballs pass smoke_test.sh.
  • smoke_test.sh also passes on the existing v0.0.5 psql-ai-17.6-linux_x86_64 asset.
  • The macOS jobs are only tested by this PR's CI run. They show whether AGE and pgvector build on macOS for 16+.

After merge

Tag the release: git tag v0.0.6 && git push origin v0.0.6.

Known gap: the darwin build still links Homebrew icu4c and readline from /opt/homebrew (only libpq's install name is rewritten), so Mac users need them installed. That's out of scope here.

🤖 Generated with Claude Code

jackmarsh and others added 3 commits October 7, 2026 15:43
Releases were built by hand with release/release.sh, so darwin_arm64 assets
exist only where someone happened to build on a Mac: there is no AI build for
darwin after 15.x.

The Release binaries workflow builds every version under binaries/ on
ubuntu-24.04 (pinned: the Linux binaries link the runner's libicu74 and
glibc 2.38, so consumers need Ubuntu 24.04 or newer) and macos-14,
smoke-tests each tarball (initdb, start, create the extensions it ships), and
on a v* tag publishes one release only if every build passed and the tag
matches RELEASE_VERSION.

make now runs -j<cores>: a serial 17.6 AI build is ~16 CPU-minutes, too close
to the old 20-minute rule timeout on a CI runner (now 60).

RELEASE_VERSION -> v0.0.6, for the first CI-built release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The macOS post-install loop linked each extension *.so to a .dylib with
`[ -f "$f" ] && ln ...`. Since PG16 extensions build as .dylib on macOS, so
the glob matches nothing, the test fails, the loop exits 1 and the whole
install step fails: why no darwin AI build exists after 15.x.

The smoke test now creates age before anything else: with age preloaded,
AGE 1.5 on PG13 fails other queries ("schema ag_catalog does not exist")
until CREATE EXTENSION age has run, as a real consumer does first.

A new push to a PR now cancels its previous run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40+ jobs downloading plz's tools from GitHub at once sometimes exhaust plz's
own retries ("giving up after 5 attempt(s)"). The build step now retries up
to three times, with backoff, only when the log shows a network failure; a
compile error or a 404 still fails at once. plz-out keeps what already built,
so a retry only redoes what failed. apt gets its own retries too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jackmarsh
jackmarsh merged commit 325a9b9 into master Oct 7, 2026
46 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant