Making a new Release of Rosenpass — Cooking Recipe
If you have to change a file, do what it takes to get the change as commit on the main branch, then start from step 0. If any other issue occurs
- Make sure you are in the root directory of the project
cd "$(git rev-parse --show-toplevel)"
- Make sure you locally checked out the head of the main branch
git stash --include-untracked && git checkout main && git pull
- Make sure all tests pass
cargo test
- Make sure the current version in
rosenpass/Cargo.toml
matches that in the last release on GitHub- Only normal releases count, release candidates and draft releases can be ignored
- Pick the kind of release that you want to make (
major
,minor
,patch
,rc
, ...)- See
cargo release --help
for more information on the available release types - Pick
rc
if in doubt
- See
- Try to release a new version
cargo release rc --package rosenpass
- An issue was reported? Go fix it, start again with step 0!
- Actually make the release
cargo release rc --package rosenpass --execute
- Tentatively wait for any interactions, such as entering ssh keys etc.
- You may be asked for your ssh key multiple times!
Frequently Asked Questions (FAQ)
- You have untracked files, which
cargo release
complains about?git stash --include-untracked
- You cannot push to crates.io because you are not logged in?
- Follow the steps displayed in
cargo login
- Follow the steps displayed in
- How is the release page added to GitHub Releases itself?
- Our CI Pipeline will create the release, once
cargo release
pushed the new version tag to the repo. The new release should pop up almost immediately in GitHub Releases after the Actions/Release pipeline started.
- Our CI Pipeline will create the release, once
- No new release pops up in the
Release
sidebar element on the main page- Did you push a
rc
release? This view only shows non-draft release, butrc
releases are considered as draft. See Releases page to see all (including draft!) releases.
- Did you push a
- The release page was created on GitHub, but there are no assets/artifacts other than the source code tar ball/zip?
- The artifacts are generated and pushed automatically to the release, but this takes some time (a couple of minutes). You can check the respective CI pipeline: Actions/Release, which should start immediately after
cargo release
pushed the new release tag to the repo. The release artifacts only are added later to the release, once all jobs in bespoke pipeline finished.
- The artifacts are generated and pushed automatically to the release, but this takes some time (a couple of minutes). You can check the respective CI pipeline: Actions/Release, which should start immediately after
- How are the release artifacts generated, and what are they?
- The release artifacts are built using one Nix derivation per platform,
nix build .#release-package
. It contains both statically linked versions ofrosenpass
itself and OCI container images.
- The release artifacts are built using one Nix derivation per platform,