feat(release): publish a Homebrew formula to vyncint/homebrew-tap - #10
Merged
Conversation
`brew install vyncint/tap/oxidelake`, the way mossaic installs. The binaries workflow gains a `formula` job that regenerates Formula/oxidelake.rb in the tap from the `.sha256` files the platform matrix uploaded, so the formula can never describe an archive that was not built. Generated rather than hand-edited: a hand-edit in the tap is overwritten by the next release. Best-effort by design. It needs HOMEBREW_TAP_TOKEN (a PAT with contents:write on the tap and nothing else, passed by name rather than `secrets: inherit`); without it the job says so and exits clean, and the tap keeps the previous version. The formula's test generates a table and runs a query, so `brew test` exercises the embedded engine, not only `--version`. Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.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.
What and why
brew install vyncint/tap/oxidelake— same setup as mossaic.binaries.ymlgains aformulajob (after the four platform archives are attached) that regeneratesFormula/oxidelake.rbinvyncint/homebrew-tapfrom the uploaded.sha256files, so the formula cannot describe an archive that was never built. It is generated, not hand-edited: a hand-edit in the tap is overwritten by the next release, silently.Best-effort by design: it needs the
HOMEBREW_TAP_TOKENsecret (fine-grained PAT,contents: writeon the tap only, passed by name — notsecrets: inherit). Without it the job posts a notice and exits clean; the tap keeps what it has. A formula one version behind is a smaller problem than a release that fails after the crates are on crates.io.The formula's
test dogenerates a 100-row table withoxide gen-dataand runsSELECT count(*)throughoxide sql, sobrew testexercises the embedded engine rather than only--version.Also: README Install leads with the brew line;
docs/RELEASING.mddocuments the secret and how to refresh the formula for a tag whose release already ran (gh workflow run binaries.yml --ref main -f tag=vX.Y.Z— archives already on the release are left alone). The tap's README already lists oxidelake (pushed separately).How it was verified
zizmor --persona pedanticon both workflows: no findings (the tap checkout'spersist-credentials: truecarries an explicitzizmor: ignore[artipacked], as in mossaic — pushing back is that job's whole business and the credential is scoped to one repository).The generator is mossaic's, byte-for-byte in structure, with oxidelake's names, license (
Apache-2.0), binaries and test; mossaic's output passesbrew audit --strictin the tap.First real run: after merge and once
HOMEBREW_TAP_TOKENis set,gh workflow run binaries.yml --ref main -f tag=v0.1.0produces the 0.1.0 formula;brew install vyncint/tap/oxidelake && brew test oxidelakeon a Mac closes the loop.make gatelanes relevant to this change (release-scripts,zizmor) are green locallytests — CI YAML, n/a
GPU paths — n/a
Checklist
STATUS.md— unchangedCHANGELOG.md— no user-visible change to the crates; install docs updated in README