Release
How a release of Rounds is made and put on Homebrew.
A tag starts a release. The GitHub Actions workflow .github/workflows/release.yml runs on the xcode-27 runner (macOS 27, Apple silicon).
Make a release
- Write the new version in
VERSION, for example0.2.0, and commit it. - Tag the commit with the same version, then push the tag:
git tag v0.2.0
git push origin v0.2.0
The workflow stops if the tag is not v followed by the version in VERSION.
What the workflow does
- It runs the tests.
- It builds
Rounds.appwithscripts/bundle.shand the disk image withscripts/dmg.sh. - It publishes a GitHub release with
Rounds-<version>.dmg, its SHA-256 file, andRounds.dmg. The download link on the home page always points to theRounds.dmgof the latest release. - If
TAP_TOKENis set, it writes the new version and checksum intoCasks/rounds.rbinHenryQW/homebrew-tap.
Signing
A release has an ad-hoc signature: Rounds has no Developer ID, so Apple does not notarize it. macOS blocks the downloaded app at the first launch, and users remove the quarantine flag or click Open Anyway (see Install). The cask shows the same command after each install.
The secret
Set TAP_TOKEN in the repository settings, under Secrets and variables > Actions: a fine-grained token with write access to the contents of HenryQW/homebrew-tap. Without it the release still publishes, and the tap does not change.
The Homebrew tap
The tap is the repository HenryQW/homebrew-tap. Make it once, empty, on GitHub. The workflow adds Casks/rounds.rb from the template packaging/homebrew/rounds.rb. Users install with:
brew trust --tap henryqw/tap && brew install --cask henryqw/tap/rounds
A tap is a public GitHub repository whose name starts with homebrew-. brew trust --tap henryqw/tap lets Homebrew load casks from it. brew install --cask henryqw/tap/rounds clones github.com/HenryQW/homebrew-tap (the first time only), reads Casks/rounds.rb, downloads the disk image from the GitHub release, checks its SHA-256, and copies Rounds to /Applications. brew update gets new versions of the cask. Homebrew does not review a tap. The tap and the rounds repository must be public: Homebrew downloads without a GitHub sign-in.
To check the cask before a release, fill in the template and run brew style on it.
The official Homebrew cask repository does not take Rounds: it accepts only apps that pass Gatekeeper, so it needs a Developer ID and notarization.