This commit updates our CI to verify that all crates are publish-able at all times on every commit. During the 0.19.0 release we found another case where the crates as they live in this repository weren't publish-able, so the hope is that this no longer comes up again! The script added in this commit also takes the time/liberty to remove the existing bump/publish scripts and instead replace them with one Rust script originally sourced from wasm-bindgen. The intention of this script is that it has three modes: * `./publish bump` - bumps version numbers which are sent as a PR to get reviewed (probably with a changelog as well) * `./publish verify` - run on CI on every commit, builds every crate we publish as if it's being published to crates.io, notably without raw access to other crates in the repository. * `./publish publish` - publishes all crates to crates.io, passing the `--no-verify` flag to make this a much speedier process than it is today.
1.6 KiB
1.6 KiB
Release Process
This is intended to serve as documentation for Wasmtime's release process. It's largely an internal checklist for those of us performing a Wasmtime release, but others might be curious in this as well!
To kick off the release process someone decides to do a release. Currently there's not a schedule for releases or something similar. Once the decision is made (there's also not really a body governing these decisions, it's more whimsical currently, or on request from others) then the following steps need to be executed to make the release:
git pull- make sure you've got the latest changes- Run
rustc scripts/publish.rs - Run
./publish bump
- Review and commit the changes
- Note that this bumps all cranelift/wasmtime versions as a major version bump
at this time. See the
bump_versionfunction inpublish.rsto tweak this.
- Make sure
RELEASES.mdis up-to-date, and fill it out if it doesn't have an entry yet for the current release. - Send this version update as a PR to the
wasmtimerepository, wait for a merge - After merging, tag the merge as
vA.B.C - Push the tag to the repository
- This will trigger the release CI which will create all release artifacts and publish them to GitHub releases.
- Run
./publish publish
- This will fail on some crates, but that's expected.
- Keep running this script until all crates are published. Note that crates.io won't let you publish something twice so rerunning is only for crates which need the index to be udpated and if it hasn't yet. It's recommended to wait a bit between runs of the script.
And that's it, then you've done a Wasmtime release.