ratatui/RELEASE.md
Orhun Parmaksız 65da535745
chore(ci): update release strategy (#1337)
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.
2024-08-25 11:02:29 +03:00

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, where x is the major version and y is the minor version.

crates.io releases are automated via GitHub actions and triggered by pushing a tag.

  1. 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
    
  2. Switch branches to the images branch and copy demo2.gif to examples/, commit, and push.

  3. 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.

  4. Bump the version in Cargo.toml.

  5. Ensure CHANGELOG.md is updated. git-cliff can be used for generating the entries.

  6. Ensure that any breaking changes are documented in BREAKING-CHANGES.md

  7. Commit and push the changes.

  8. Create a new tag: git tag -a v[0.x.y]

  9. Push the tag: git push --tags

  10. 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.