-
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; thatcargo installwill work for various feature combinations; and eagerly deploy the release to staging. - Make sure the branch is synced to
origin/master! git fetchgit checkout -b release origin/master.
- The name must be
-
Create a PR to update:
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.web/package*.json: Update version number..github/workflows/deploy-release.yml: Update tag number.
The
.github/workflows/update-version.shscript should prepare a PR with all of the required changes. Don't forget to clean up the release notes though. -
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:
( cd core && cargo publish )( cd std && cargo publish )( cd repl && cargo publish )( cd terminal && cargo publish )( cd sdl && cargo publish )( cd rpi && cargo publish )( cd cli && cargo publish )