Skip to content

feat: add release pipeline — GoReleaser + GitHub Actions + Homebrew Tap#5

Merged
LastStep merged 1 commit into
mainfrom
release-pipeline
Apr 15, 2026
Merged

feat: add release pipeline — GoReleaser + GitHub Actions + Homebrew Tap#5
LastStep merged 1 commit into
mainfrom
release-pipeline

Conversation

@LastStep

Copy link
Copy Markdown
Owner

Summary

Add automated release pipeline using GoReleaser, GitHub Actions, and Homebrew Tap. Push a semver tag (e.g., v0.1.0) to trigger cross-platform binary builds published to GitHub Releases, with automatic Homebrew formula updates.

Changes

  • cmd/root.go — add Version variable and SetVersion function for --version flag
  • main.go — add version ldflags variable, wire to cmd.SetVersion
  • Makefile — add ldflags for version injection in build/install targets
  • .goreleaser.yaml — GoReleaser v2 config (6 platform targets, checksums, changelog, Homebrew formula)
  • .github/workflows/release.yml — GitHub Actions workflow triggered on semver tags
  • .gitignore — add dist/ (GoReleaser output)

Plan

station/Playbook/Plans/Active/04-release-pipeline.md

Verification

  • make build — passes
  • ./bonsai --version — prints "bonsai version dev"
  • go test ./... — passes

🤖 Generated with Claude Code

Add automated release pipeline so pushing a semver tag (e.g. v0.1.0) triggers
cross-platform binary builds published to GitHub Releases with automatic
Homebrew formula updates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@LastStep LastStep marked this pull request as ready for review April 15, 2026 18:33
@LastStep

Copy link
Copy Markdown
Owner Author

Tech Lead Review: Pass ✓

Verdict: Ready to merge — clean implementation, all checks pass.

Findings:

  • Correctness: version injection chain verified end-to-end (ldflags → main.version → cmd.SetVersion → rootCmd.Version → --version output)
  • Security: no secrets hardcoded, minimal permissions (contents: write), tokens from repository secrets only
  • Scope: 6 files changed, all within plan scope, no extras
  • Standards: follows project conventions

Audit:

  • make build — pass
  • go test ./... — pass
  • ./bonsai --version — prints bonsai version dev
  • Diff review — matches plan exactly

Observations (non-blocking):

  • Exported cmd.Version var is initialized but only written to — harmless, serves as readable reference
  • GitHub Actions pinned to major versions (@v4, @v5, @v6) rather than SHA hashes — standard practice

Setup required before first release:

  1. Create LastStep/homebrew-tap repo on GitHub
  2. Create a GitHub PAT with repo scope
  3. Add it as HOMEBREW_TAP_TOKEN secret on LastStep/Bonsai
  4. Tag and push: git tag v0.1.0 && git push origin v0.1.0

Plan: station/Playbook/Plans/Active/04-release-pipeline.md

@LastStep LastStep merged commit 903b337 into main Apr 15, 2026
1 check passed
@LastStep LastStep deleted the release-pipeline branch April 16, 2026 06:28
LastStep added a commit that referenced this pull request May 8, 2026
…Bonsai-Eval shipped

Plan 38 revised 2026-05-08 after rung-reuse research + inspect_swe trust audit:
rungs 1+2 swap to inspect_swe drop-ins (Meridian Labs / JJ Allaire / UK
AISI+Apollo); only rung-3 custom. Risk #1 RESOLVED, #5 mitigated, new #8
(pre-1.0 dep) added. Verifications split key-independent vs key-gated to
unblock building before ANTHROPIC_API_KEY arrives. Codeburn flag drift fixed
inline (P1.1).

Bonsai-Eval P0+P1 key-independent slice shipped: 31 files, 27 tests, $0 cost,
single commit on main, tagged v0.0.1-bootstrap. Independent reviewer = APPROVE
WITH FOLLOW-UPS (B1 P0 + B2 P3 filed).

INDEX.md gains external-repo row pointing at LastStep/Bonsai-Eval. memory.md
adds 3 durable Notes (inspect_swe trust posture, leaderboard-substitute
fallacy, Max OAuth gap).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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