Skip to content

Latest commit

 

History

History
38 lines (34 loc) · 3.14 KB

CONTRIBUTING.md

File metadata and controls

38 lines (34 loc) · 3.14 KB

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

  1. Make sure you are in the root directory of the project
    • cd "$(git rev-parse --show-toplevel)"
  2. Make sure you locally checked out the head of the main branch
    • git stash --include-untracked && git checkout main && git pull
  3. Make sure all tests pass
    • cargo test
  4. 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
  5. 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
  6. Try to release a new version
    • cargo release rc --package rosenpass
    • An issue was reported? Go fix it, start again with step 0!
  7. 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?
  • 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.
  • 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, but rc releases are considered as draft. See Releases page to see all (including draft!) releases.
  • 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.
  • 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 of rosenpass itself and OCI container images.