Release Management
libmicrovmi project release is handled in the CI, on Github Actions.
If a commit is pushed with a tag matching v*
, the release
job of the CI is executed,
as well as all jobs depending on it.
Release CI related jobs
release
: create a Github releaserelease_debian
: add a Debian package to the Github releaserelease_book
: build and publish the bookpublish
: publish the crate on crates.iopublis_pypi
: publish the Python bindings on PyPI
How to make a new release
Release and tags are managed using the cargo-release tool.
$ cargo release --no-dev-version --workspace --skip-push --execute <major/minor/patch>
We skip-push the commit because there is a bug in cargo-release when working with a workspace.
amend the commit with the right tag
$ git commit --amend
edit with vxxxx
$ git push origin master
$ git push origin vxxxx
Note: cargo-release
can handle the publication on crates.io, but we prefer to manage everything in one place, using the CI.
Therefore, publishing has been explicitely disabled in Cargo.toml
for this tool, so no mistakes can happen.