This document describes how to create releases for the Focus Flow Timer fork.
- Ensure you have commit access to the repository
- All changes should be merged to
masterbranch - Update version numbers in:
internal/config/config.go(Version constant)package.json(version field)CHANGELOG.md(add new version section)
The repository uses GitHub Actions with Goreleaser to automatically build releases for multiple architectures.
-
Update version numbers (as listed in prerequisites above)
-
Commit and push changes:
git add . git commit -m "chore: bump version to v1.5.0" git push origin master
-
Create and push a git tag:
git tag v1.5.0 git push origin v1.5.0
-
The GitHub Action will automatically:
- Run tests on Linux, macOS, and Windows
- Build binaries for multiple architectures using Goreleaser
- Create a GitHub release with all binaries attached
- Build packages for various package managers
The release process builds binaries for:
- Linux: amd64
- Windows: amd64, arm64
- macOS: amd64, arm64 (via separate Darwin workflow)
Goreleaser creates the following package formats:
.tar.gzarchives for Linux and macOS.ziparchives for Windows.debpackages for Debian/Ubuntu.rpmpackages for RHEL/CentOS/Fedora.apkpackages for Alpine Linux
If you need to create a manual release:
-
Install Goreleaser:
go install github.com/goreleaser/goreleaser@latest
-
Build locally:
# For snapshot (testing) goreleaser build --snapshot --clean # For actual release (requires git tag) goreleaser release --clean
Release notes are automatically generated from the commit history and CHANGELOG.md. Ensure your commit messages are descriptive and follow conventional commit format when possible.
If a release fails:
- Check the GitHub Actions log for errors
- Common issues:
- Missing or invalid git tag
- Build errors due to dependencies
- Authentication issues with secrets
To re-run a failed release:
- Delete the failed release and tag from GitHub
- Delete the local tag:
git tag -d v1.5.0 - Fix the issue and repeat the release process
After a successful release:
- Update installation instructions if needed
- Announce the release in relevant channels
- Monitor for issues and bug reports
For more details on Goreleaser configuration, see .goreleaser.yml in the repository root.