-
Create a local branch called
release.-
The name must be
releaseto trigger required pre-release checks. These checks ensure that:cargo publish(detailed below) will succeed, as it is an irreversible operation.cargo installwill work for various feature combinations.- Eagerly deploy the release to staging.
-
Make sure the branch is synced to
origin/master!git fetchgit checkout -b release origin/master.
-
-
Create a PR to update the version number everywhere necessary. You can use the
./admin/update-version.shscript to do this, but then make sure that following files were modified as described:NEWS.md: Set next version number, add date, and clean up notes.README.md: Update latest version number and release date.*/Cargo.toml: Update version number andendbasic-*dependencies.Cargo.lock: Reflects the new version number.repl/src/welcome-banner-*: Golden images need regeneration.web/package*.json: Update version number..github/workflows/deploy-release.yml: Update tag number.
-
Once all tests pass, merge the PR.
-
Tag the resulting merged commit as
endbasic-X.Y.Zand push the tag. This will trigger the release creation workflow. -
Wait for the release creation workflow to finish and then go to the Releases page to review the newly-created release draft.
-
Push the new crates out. This is the last step because it's not reversible:
for c in core std client terminal sdl st7735s rpi repl cli; do ( cd $c && cargo publish ) || break done