Repository navigation
feat(ci): build, smoke-test and release binaries for linux and macOS - #3
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Releases are built by hand with
release/release.shon whoever's machine, sodarwin_arm64assets exist only where someone happened to build on a Mac. There's nopsql-aidarwin build after 15.x, sopostgres_ai_binary(version = "17.6")404s on Apple Silicon.What
.github/workflows/release.yamlbuilds every version underbinaries/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 matchesRELEASE_VERSION. It runs on PRs and on pushes to master too, so a broken build shows up before anyone tags.release/smoke_test.shunpacks a tarball,initdbs, starts postgres, and createsuuid-osspandpg_stat_statements, plusvectorandage(withcreate_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
./pleasew build //binaries/v17.6/...(1m45s with-j), and both tarballs passsmoke_test.sh.smoke_test.shalso passes on the existing v0.0.5psql-ai-17.6-linux_x86_64asset.After merge
Tag the release:
git tag v0.0.6 && git push origin v0.0.6.Known gap: the darwin build still links Homebrew
icu4candreadlinefrom/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