AsyncMonitor/Releasing.md

88 lines
2.1 KiB
Markdown

# 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.
```shell
swift test
```
Check that you're on `main` with a clean working tree, and that nothing looks weird in the recent history.
```shell
git status
git log -5 --oneline
```
## Update the Changelog
Find the `[Unreleased]` section in [Changelog.md](./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.
```markdown
## [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.
```shell
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:
```shell
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:
```shell
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](./Changelog.md) so there's somewhere to write down the next round of changes.
```markdown
## [Unreleased]
- Your change here.
[Unreleased]: https://github.com/samsonjs/AsyncMonitor/compare/0.4.0...HEAD
```
Commit and push and you're done.
```shell
git add Changelog.md
git commit -m "Start next changelog entry"
git push github main
```