|
19 | 19 | | 5: CLI Commands | `feat/commands` | ✅ DONE - Merged to main | version, configure, login, logout, elevate, status, favorites + tests. 82 total tests passing | |
20 | 20 | | 6: Integration Tests & Docs | `feat/integration-tests` | ✅ DONE - Merged to main | integration_test.go (6 tests), enhanced README, CLAUDE.md with patterns, updated Makefile | |
21 | 21 | | 7: UX Simplification | `feat/simplify-login-ux` | ✅ DONE - Merged to main | Removed MFA config, auto-configure on first login, Identity URL clarification | |
22 | | -| 8: Release Infrastructure | `feat/release` | 📋 TODO | .goreleaser.yml, GitHub Actions CI/CD | |
| 22 | +| 8: Release Infrastructure | `feat/release` | ✅ DONE | .goreleaser.yaml, GitHub Actions release workflow | |
23 | 23 |
|
24 | 24 | --- |
25 | 25 |
|
@@ -335,20 +335,40 @@ fa62e5f - feat: simplify login UX - remove MFA config, add auto-configure |
335 | 335 |
|
336 | 336 | --- |
337 | 337 |
|
338 | | -## Phase 8: Release Infrastructure |
| 338 | +## Phase 8: Release Infrastructure (DONE) |
339 | 339 |
|
340 | 340 | **Branch:** `feat/release` |
341 | 341 |
|
342 | | -- `.goreleaser.yml` — darwin/amd64+arm64, linux/amd64+arm64, windows/amd64 |
343 | | -- `.github/workflows/ci.yml` — on push/PR: test + lint |
344 | | -- `.github/workflows/release.yml` — on tag v*: test + goreleaser |
| 342 | +### Implemented |
| 343 | + |
| 344 | +1. **`.goreleaser.yaml`** — GoReleaser v2 configuration |
| 345 | + - Binary name: `grant` |
| 346 | + - Ldflags: `-s -w` + version/commit/buildDate injection (matches Makefile) |
| 347 | + - Targets: linux/darwin/windows on amd64/arm64 (6 binaries) |
| 348 | + - Archives: tar.gz for linux/darwin, zip for windows |
| 349 | + - Checksums: sha256 (`checksums.txt`) |
| 350 | + - Changelog: auto-generated, sorted asc, excludes docs/test/ci commits |
| 351 | + |
| 352 | +2. **`.github/workflows/release.yml`** — GitHub Actions release workflow |
| 353 | + - Trigger: push tags matching `v*` |
| 354 | + - Steps: checkout (fetch-depth 0), setup Go 1.25, GoReleaser v6 action |
| 355 | + - Permissions: `contents: write` for creating releases |
| 356 | + - Uses `GITHUB_TOKEN` for authentication |
| 357 | + |
| 358 | +### Verification |
| 359 | +- `goreleaser check` — config validated |
| 360 | +- `goreleaser release --snapshot --clean` — all 6 targets built successfully |
345 | 361 |
|
346 | 362 | --- |
347 | 363 |
|
348 | 364 | ## Current File Structure (implemented) |
349 | 365 |
|
350 | 366 | ``` |
351 | 367 | grant/ |
| 368 | +├── .goreleaser.yaml # GoReleaser v2 config (6 targets, ldflags, checksums) |
| 369 | +├── .github/ |
| 370 | +│ └── workflows/ |
| 371 | +│ └── release.yml # GitHub Actions: tag push → GoReleaser release |
352 | 372 | ├── CLAUDE.md # Project conventions + implementation patterns |
353 | 373 | ├── LICENSE |
354 | 374 | ├── Makefile # build, test, test-integration, test-all, lint, clean |
|
0 commit comments