Skip to content

ci(release): publish Homebrew tap formula on tagged releases#28

Merged
jamiesun merged 1 commit into
mainfrom
feat/homebrew-tap-publish
Jul 1, 2026
Merged

ci(release): publish Homebrew tap formula on tagged releases#28
jamiesun merged 1 commit into
mainfrom
feat/homebrew-tap-publish

Conversation

@jamiesun

@jamiesun jamiesun commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a Homebrew distribution channel for sshx, mirroring the pattern used in talkincode/scoot's release workflow.

  • New opt-in homebrew job in .github/workflows/release.yml, running after build on tag pushes.
    • Gated on the HOMEBREW_TAP_TOKEN secret; without it the job's steps are skipped and the rest of the release is unaffected.
    • Reads checksums.txt from the build artifacts, clones talkincode/homebrew-tap, and renders Formula/sshx.rb covering darwin/linux on amd64/arm64 (Windows has no Homebrew equivalent).
    • Commits and pushes only when the formula content actually changes.
  • Documented the new brew install talkincode/tap/sshx install path in README.md / README_CN.md.
  • Added a "Homebrew Tap Publishing" section to RELEASE.md with one-time setup steps (create tap repo, PAT, HOMEBREW_TAP_TOKEN secret) and verification instructions.
  • Updated AGENT.md §11 and docs/roadmap.md to reflect the new install path/capability.
  • Added a CHANGELOG.md [Unreleased] entry.

Setup required before this is live

HOMEBREW_TAP_TOKEN (a fine-grained PAT scoped to Contents: write on a talkincode/homebrew-tap repo) needs to be added as a repository secret. Until then, the job safely no-ops.

Bugfix reflection

Not applicable — this is a new capability (release automation), not a bug fix.

Verification run

  • python3 -c "import yaml; yaml.safe_load(open('.github/workflows/release.yml'))" — workflow YAML parses.
  • ruby -c against a rendered sample formula — valid Ruby/Homebrew DSL syntax.
  • Simulated the checksums.txt sha-lookup shell logic locally — correct hash extraction and correct hard failure on a missing checksum.
  • actionlint .github/workflows/release.yml — all reported findings are pre-existing (unrelated lines), nothing flagged in the new homebrew job.
  • make check (fmt, vet, test) — all pass, unaffected since no Go code changed.
  • Pre-commit/pre-push hooks (gofmt, go vet, full test suite with coverage) ran clean.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

Add an opt-in 'homebrew' job to the release workflow that renders and
pushes Formula/sshx.rb to talkincode/homebrew-tap, gated on the
HOMEBREW_TAP_TOKEN secret so releases without it are unaffected.
Covers darwin/linux on amd64/arm64 via checksums.txt from the build job.

Also documents the new brew install talkincode/tap/sshx path in
README.md, README_CN.md, RELEASE.md, AGENT.md, and docs/roadmap.md, and
adds a CHANGELOG entry.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jamiesun jamiesun merged commit b778d04 into main Jul 1, 2026
6 checks passed
@jamiesun jamiesun deleted the feat/homebrew-tap-publish branch July 1, 2026 08:43
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