closes #1232 Now we can trigger point releases by pushing a tag (follow the instructions in `RELEASE.md`). This will create a release with generated changelog. There is still a lack of automation (e.g. updating `CHANGELOG.md`), but this PR is a good start towards improving that.
2.4 KiB
Creating a Release
Our release strategy is:
Release major versions with detailed summaries when necessary, while releasing minor versions weekly or as needed without extensive announcements.
Versioning scheme being
0.x.y
, wherex
is the major version andy
is the minor version.
crates.io releases are automated via GitHub actions and triggered by pushing a tag.
-
Record a new demo gif if necessary. The preferred tool for this is vhs (installation instructions in README).
cargo build --example demo2 vhs examples/demo2.tape
-
Switch branches to the images branch and copy demo2.gif to examples/, commit, and push.
-
Grab the permalink from https://github.com/ratatui/ratatui/blob/images/examples/demo2.gif and append
?raw=true
to redirect to the actual image url. Then update the link in the main README. Avoid adding the gif to the git repo as binary files tend to bloat repositories. -
Bump the version in Cargo.toml.
-
Ensure CHANGELOG.md is updated. git-cliff can be used for generating the entries.
-
Ensure that any breaking changes are documented in BREAKING-CHANGES.md
-
Commit and push the changes.
-
Create a new tag:
git tag -a v[0.x.y]
-
Push the tag:
git push --tags
-
Wait for Continuous Deployment workflow to finish.
Alpha Releases
Alpha releases are automatically released every Saturday via cd.yml and can be manually be created when necessary by triggering the Continuous Deployment workflow.
We automatically release an alpha release with a patch level bump + alpha.num weekly (and when we need to manually). E.g. the last release was 0.22.0, and the most recent alpha release is 0.22.1-alpha.1.
These releases will have whatever happened to be in main at the time of release, so they're useful for apps that need to get releases from crates.io, but may contain more bugs and be generally less tested than normal releases.
See #147 and #359 for more info on the alpha release process.