|
| 1 | +--- |
| 2 | +phase: 52-homebrew-distribution |
| 3 | +plan: 01 |
| 4 | +subsystem: infra |
| 5 | +tags: [github-actions, homebrew, cask, ci-cd, release] |
| 6 | + |
| 7 | +requires: |
| 8 | + - phase: 51-cross-platform-release-pipeline |
| 9 | + provides: "4-platform build matrix with tauri-action producing DMG artifacts" |
| 10 | +provides: |
| 11 | + - "3-job release pipeline: build -> publish -> update-tap" |
| 12 | + - "Auto-publish draft releases after all builds complete" |
| 13 | + - "Homebrew cask generation with SHA256 hashes pushed to homebrew-tap" |
| 14 | +affects: [] |
| 15 | + |
| 16 | +tech-stack: |
| 17 | + added: [] |
| 18 | + patterns: ["heredoc-based cask template with sed placeholder replacement"] |
| 19 | + |
| 20 | +key-files: |
| 21 | + created: [] |
| 22 | + modified: |
| 23 | + - ".github/workflows/release.yml" |
| 24 | + - "/Users/joaofnds/code/homebrew-tap/README.md" |
| 25 | + |
| 26 | +key-decisions: |
| 27 | + - "Heredoc cask template with sed placeholder replacement for version, SHA256, and Tauri version" |
| 28 | + - "Prerelease tags (containing -) skip tap update via GitHub Actions if condition" |
| 29 | + |
| 30 | +patterns-established: |
| 31 | + - "Release pipeline chain: build -> publish -> update-tap with job-level needs dependencies" |
| 32 | + |
| 33 | +requirements-completed: [DIST-01] |
| 34 | + |
| 35 | +duration: ~15min |
| 36 | +completed: 2026-03-26 |
| 37 | +--- |
| 38 | + |
| 39 | +# Phase 52: Homebrew Distribution Summary |
| 40 | + |
| 41 | +**3-job release pipeline (build -> publish -> update-tap) with auto-generated Homebrew cask formula pushed to joaofnds/homebrew-tap** |
| 42 | + |
| 43 | +## Performance |
| 44 | + |
| 45 | +- **Duration:** ~15 min |
| 46 | +- **Tasks:** 3 (2 auto + 1 human-verify) |
| 47 | +- **Files modified:** 2 |
| 48 | + |
| 49 | +## Accomplishments |
| 50 | +- Extended release.yml with `publish` job that auto-publishes draft releases via `gh release edit --draft=false` |
| 51 | +- Added `update-tap` job that downloads DMGs, computes SHA256 hashes, generates a Homebrew cask formula with on_intel/on_arm blocks, and pushes to homebrew-tap |
| 52 | +- Updated homebrew-tap README with trunk entry in new Casks section |
| 53 | +- Verified pipeline with v0.10.0-test1 tag: all 4 builds passed, publish succeeded, update-tap correctly skipped for prerelease |
| 54 | + |
| 55 | +## Task Commits |
| 56 | + |
| 57 | +1. **Task 1: Add publish and update-tap jobs to release workflow** - `43b3382` (feat) |
| 58 | +2. **Task 2: Update homebrew-tap README with trunk cask entry** - `914c1f7` (docs, homebrew-tap repo) |
| 59 | +3. **Task 3: Verify full pipeline with test release** - Human-verified: v0.10.0-test1 tag triggered successful build + publish, update-tap skipped for prerelease as expected |
| 60 | + |
| 61 | +## Files Created/Modified |
| 62 | +- `.github/workflows/release.yml` - Added publish and update-tap jobs after existing build job |
| 63 | +- `/Users/joaofnds/code/homebrew-tap/README.md` - Added Casks section with trunk entry |
| 64 | + |
| 65 | +## Decisions Made |
| 66 | +- Used heredoc template with sed placeholder replacement for cask generation (simple, no extra tooling) |
| 67 | +- Prerelease tags skip tap update via `if: ${{ !contains(github.ref_name, '-') }}` |
| 68 | + |
| 69 | +## Deviations from Plan |
| 70 | +None - plan executed as specified. |
| 71 | + |
| 72 | +## Issues Encountered |
| 73 | +None. |
| 74 | + |
| 75 | +## Next Phase Readiness |
| 76 | +- Full release pipeline operational: tag push -> build -> publish -> tap update |
| 77 | +- HOMEBREW_TAP_TOKEN secret configured in trunk repo |
| 78 | +- Ready for milestone completion |
| 79 | + |
| 80 | +--- |
| 81 | +*Phase: 52-homebrew-distribution* |
| 82 | +*Completed: 2026-03-26* |
0 commit comments