We use cargo dist
to automate our release and package publishing process.
The steps to do a full release are:
- Merge all pending PRs planned for the release
- Create a new issue in GitHub based on the "release-manual-testing-template.md" and assign it to the milestone for the release.
- Go through that new issue for manual testing, performing the manual tests in the matrix and checking them off as done as you go, until all pass.
- Update the version number (e.g. "1.2.3") in
Cargo.toml
in a new branch, push it, create a PR, wait for test sto pass, then merge that PR into master - checkout master, pull the latest version
- create a new tag, matching the version number in
Cargo.toml
git tag 1.2.3
- push that tag to GitHub
git push --tags
- In GitHub Actions, an action will kick off to build and package all the binaries, create the GitHub release, upload the binaries as assets and package them in installers/scripts and push those to the relevant locations
- Check the release in GitHub Releases
- Test as many of the install methods as you can
- Publish to crates.io also using:
cargo publish
cargo install pigg
piggui
and check the version number displayed orpiggui --version
piglet --version
and check the correct version number is displayed
- Test
cargo binstall
- Uninstall the version just installed with
cargo install
cargo binstall pigg
piggui
and check the version number displayed orpiggui --version
piglet --version
and check the correct version number is displayed
- Uninstall the version just installed with