Mwbot-rs/Releasing

From mediawiki.org

I primarily use the cargo release tool to help make good releases (as of this writing, I was using version 0.25.0).

First, run cargo release changes to see what unreleased commits are there for each crate. Review the list for the crate(s) you want to release. Update the relevant CHANGELOG.md files with a summary of the changes users should know about. For example, adding a new public function, fixing a bug or adjusting some dependency are worth a mention, while internal refactoring or fixing clippy lints are not. Use your best judgement and err on the side of inclusion.

To determine the version, check to see if any breaking API or functionality changes have been made. If so, move to the next breaking semver version. For 0.x crates, this means increasing the minor version, for everything else, increase the major version. Remember that some dependencies have their APIs publicly exposed, so if, e.g. we upgrade request to a new breaking version, we have to also do a breaking release for mwapi and mwbot.

Then, release the crates, possibly in a specific order. For example, releasing mwapi_responses means first releasing the _derive crate, then the main one. I run: cargo release --package mwapi_responses_derive --package mwapi_responses --dependent-version Upgrade <major/minor/patch>, review the output and then run it again with --execute. Other crates depend on each other, so you'll want to e.g. release mwapi / mwtitle / parsoid -> mwbot.

After releasing, update the News page with a short description. If you're releasing multiple crates at the same time, just use one bullet to mention all the releases.

Release candidates[edit]

I usually issue release candidates before a semver breaking release just to make sure any new API changes work in my own projects and to get a sense of the impact in real life things. It also helps get new code into use without committing to it at a semver level.

New releasers[edit]

New releasers are currently added at the discretion of the project lead. This process is expected to change as the project grows.