This document describes how to create releases for splash using the automated GitHub Actions workflow.
The project uses GoReleaser to build multi-platform binaries and publish them to:
- GitHub Releases with downloadable assets
- Homebrew tap repository (
joshi4/homebrew-tap)
Before creating releases, ensure you have:
- Homebrew Tap Repository: Create a repository named
homebrew-tapunder your GitHub account - GitHub Token: Create a personal access token with repository permissions for the Homebrew tap
- Repository Secret: Add the token as
HOMEBREW_TAP_GITHUB_TOKENin repository secrets
Releases are automatically created when you push a semantic version tag:
# Create and push a new tag
git tag v1.0.0
git push origin v1.0.0This triggers the GitHub Actions workflow that:
- Runs all tests
- Builds binaries for multiple platforms (Linux, macOS, Windows)
- Creates checksums and signs releases
- Publishes to GitHub Releases
- Updates the Homebrew tap repository
To test the release process locally:
# Install GoReleaser
go install github.com/goreleaser/goreleaser@latest
# Test configuration
goreleaser check
# Build snapshot (no publishing)
goreleaser build --snapshot --clean
# Full release dry-run
goreleaser release --snapshot --cleanFollow Semantic Versioning principles:
v1.0.0- Major release (breaking changes)v1.1.0- Minor release (new features, backward compatible)v1.0.1- Patch release (bug fixes, backward compatible)
The release process builds binaries for:
- Linux: amd64, arm64, 386
- macOS: amd64, arm64 (with universal binary)
- Windows: amd64, 386
After release, users can install splash via:
brew install joshi4/tap/splashDownload from GitHub Releases
go install github.com/joshi4/splash@latestsplash upgradeEach release includes:
- Compiled binaries for all supported platforms
checksums.txtfile for verification- Source code archives
- Automated changelog
If Homebrew installation fails:
- Check the
homebrew-taprepository was updated - Verify the formula syntax is correct
- Test installation manually:
brew install --HEAD joshi4/tap/splash
If direct downloads don't work:
- Verify checksums match
- Check platform compatibility
- Ensure binary has execute permissions:
chmod +x splash
If version information is incorrect:
- Check that ldflags are properly set in
.goreleaser.yaml - Verify the git tag format matches semantic versioning
- Ensure the tag was pushed to the repository
The repository includes several workflows:
release.yml: Triggered by version tags, handles full release processtest.yml: Runs on PRs and pushes, ensures code qualitydraft-release.yml: Creates draft releases from main branchdependabot-auto-merge.yml: Automatically merges dependency updates
.goreleaser.yaml: GoReleaser configuration for builds and releases.github/workflows/: GitHub Actions workflow definitions.github/dependabot.yml: Dependency update configuration