Skip to content

Publish releases to deb/rpm/apk, GHCR, and Homebrew#23

Merged
stackedsax merged 1 commit into
mainfrom
feat/release-channels
Jul 18, 2026
Merged

Publish releases to deb/rpm/apk, GHCR, and Homebrew#23
stackedsax merged 1 commit into
mainfrom
feat/release-channels

Conversation

@stackedsax

Copy link
Copy Markdown
Contributor

What

"Ship it" — the release part. Extends the GoReleaser pipeline so a tag publishes
to more than raw archives, tuned for BAMMM's HPC-first audience.

Already worked (unchanged): GitHub Release tarballs (linux/darwin/windows ×
amd64/arm64) and go install. New in this PR:

  • Linux packages (nfpms): .deb / .rpm / .apk for both arches, with
    version-less names, attached to the GitHub release. No hosted apt/yum repo —
    users download and dpkg -i / rpm -i / apk add.
  • Container image (dockers): multi-arch distroless/static image to
    ghcr.io/insightsoftmax/bammm, pushed with the built-in GITHUB_TOKEN.
  • Homebrew (homebrew_casks): cask pushed to InsightSoftmax/homebrew-tap.
    Replaces GoReleaser's deprecated brews.

Housekeeping: fixed the stale release.github.owner (finosInsightSoftmax),
migrated off deprecated GoReleaser keys, added QEMU/buildx/GHCR-login to the
release workflow, added a goreleaser check CI job, and documented the new
install paths in the README.

Action required before the first tagged release

  1. Create the tap repo InsightSoftmax/homebrew-tap (empty is fine).
  2. Add a secret HOMEBREW_TAP_TOKEN — a PAT with contents:write on that
    tap repo. (Without it the Homebrew push is skipped but everything else still
    releases; the workflow falls back to GITHUB_TOKEN.)
  3. GHCR needs no setup — it uses GITHUB_TOKEN. After the first push, mark the
    bammm package public if you want anonymous docker pull.

Testing

  • goreleaser check passes (only soft dockers phase-out notices remain).
  • goreleaser release --snapshot builds binaries, archives, all deb/rpm/apk
    packages, and the cask cleanly.

🤖 Generated with Claude Code

Extend the GoReleaser pipeline beyond raw archives:

- nfpms: build .deb/.rpm/.apk (both arches) with version-less names and
  attach them to the GitHub release.
- dockers: multi-arch static-binary image to ghcr.io/insightsoftmax/bammm
  (distroless/static), pushed with the built-in GITHUB_TOKEN.
- homebrew_casks: push a cask to InsightSoftmax/homebrew-tap (replaces the
  deprecated `brews`; needs a HOMEBREW_TAP_TOKEN PAT, falling back to
  GITHUB_TOKEN so releases still succeed without it).

Also fix the stale release owner (finos -> InsightSoftmax), migrate the
config off GoReleaser's deprecated keys (builds->ids, format->formats), add
QEMU/buildx/GHCR-login to the release workflow, add a `goreleaser check`
CI job so config errors surface on PRs, and document the new install paths.

Validated locally with `goreleaser check` and a `--snapshot` build
(archives, packages, and cask all generate cleanly).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016PnTz6Zxqa4jHocK8kCbyx
@stackedsax
stackedsax merged commit fa12685 into main Jul 18, 2026
6 checks passed
@stackedsax
stackedsax deleted the feat/release-channels branch July 18, 2026 21:34
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