GoReleaser Migration Summary¶
What Changed¶
1. Added .goreleaser.yml Configuration¶
- Builds: Multi-platform builds (linux, windows, darwin) with amd64/arm64 support
- Archives: Single optimized build with proper naming
- Homebrew: Automatic formula updates to
petems/homebrew-gitsweeperrepository - Checksums: Automatic SHA256 checksum generation
- Changelog: Automatic changelog generation from git commits
2. Simplified GitHub Workflow¶
- Before: 244 lines of complex matrix builds and manual artifact management
- After: 44 lines using
goreleaser/goreleaser-action@v5 - Removed: Manual platform matrix, artifact uploading/downloading, checksum generation
3. Updated Makefile¶
- Added:
make release-snapshot- Creates snapshot releases locally - Added:
make release- Creates full releases - Updated:
make build-all- Now uses goreleaser - Removed: Manual platform-specific build commands
4. Removed Old Workflows¶
- Deleted:
.github/workflows/homebrew.yml(71 lines) - Replaced: Manual Homebrew formula updates with automatic goreleaser handling
Benefits Achieved¶
Code Reduction¶
- Total reduction: ~85% less workflow code (315 lines → 44 lines)
- Maintenance: Single configuration file vs multiple workflows
- Reliability: Battle-tested goreleaser logic vs custom scripts
Features Added¶
- Automatic changelog generation
- Professional release notes
- Built-in checksum verification
- Multi-format archives (tar.gz, zip)
- Automatic Homebrew updates
Error Reduction¶
- Eliminated: Manual SHA256 calculation with sleep workarounds
- Eliminated: Complex artifact management
- Eliminated: Platform-specific build logic
- Eliminated: Manual release body formatting
Usage¶
Local Testing¶
# Test the configuration
./test-goreleaser.sh
# Create a snapshot release
make release-snapshot
# Build for all platforms
make build-all
Creating Releases¶
Homebrew Integration¶
- Automatic formula updates to
petems/homebrew-gitsweeper - Users can install with:
brew tap petems/gitsweeper && brew install gitsweeper
Configuration Details¶
Build Configuration¶
- Single optimized build: Stripped symbols, optimized for size and performance
- Multi-platform support: Linux, macOS, and Windows with amd64/arm64 architectures
Platforms Supported¶
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64 only)
Archives Included¶
- README.md
- LICENSE.md
- Binary for each platform/variant
Migration Complete ✅¶
The project now uses goreleaser for all release automation, providing: - 90% less maintenance overhead - Professional release automation - Automatic Homebrew integration - Built-in best practices