2.1 KiB
Releasing AsyncMonitor
There's no schedule here. Ship bug fixes whenever, features when they're ready, and breaking changes rarely.
AsyncMonitor is a Swift package and a release is just a git tag. SwiftPM resolves versions directly from tags.
Before You Cut a Release
Run the tests and make sure they pass.
swift test
Check that you're on main with a clean working tree, and that nothing looks weird in the recent history.
git status
git log -5 --oneline
Update the Changelog
Find the [Unreleased] section in Changelog.md, rename it to the new version, stamp it with today's date, and add the diff link at the bottom of the section.
## [0.4.0] - 2026-05-17
### Removed
- Description of removals
### Changed
- Description of changes
### Fixed
- Description of fixes
### Added
- Description of additions
[0.4.0]: https://github.com/samsonjs/AsyncMonitor/compare/0.3.1...0.4.0
Drop the "Your change here." placeholder if it's still there, and drop any of the Removed/Changed/Fixed/Added sections that don't actually have anything in them.
Commit and push.
git add Changelog.md
git commit -m "Prepare for release 0.4.0"
git push github main
Tag and Release on GitHub
Tag it, push the tag, and cut the release. GitHub will generate notes from merged PRs and commits since the last tag:
git tag 0.4.0
git push github 0.4.0
gh release create 0.4.0 --verify-tag --generate-notes
If you'd rather use your changelog entry as the release body, this pulls just that section out:
gh release create 0.4.0 --verify-tag --notes "$(awk '/^## \[0\.4\.0\]/,/^## \[/' Changelog.md | sed '$d')"
Start the Next Version
Drop a fresh [Unreleased] section at the top of Changelog.md so there's somewhere to write down the next round of changes.
## [Unreleased]
- Your change here.
[Unreleased]: https://github.com/samsonjs/AsyncMonitor/compare/0.4.0...HEAD
Commit and push and you're done.
git add Changelog.md
git commit -m "Start next changelog entry"
git push github main