Skip to content

Automate Release process with crates.io Trusted Publishing #737

@josephlr

Description

@josephlr

When releasing v0.3.4 (#735), there were a few manual steps that I missed (#736). I also had to manually run cargo publish on my laptop and create the corresponding GitHub release: https://github.com/rust-random/getrandom/releases/tag/v0.3.4

Ideally there should be:

  • A check run on PRs (as part of the Workspace workflow) which:
    • ensures CHANGELOG.md is correctly formatted
    • ensures the latest dated release matches the version in Cargo.toml
  • A new "Tag" workflow which:
    • Runs on any push to master or backports/*
    • If the Cargo.toml version is not tagged on GitHub yet, tag it
    • Create a corresponding GitHub Release using the notes from CHANGELOG.md.
    • Should be a separate workflow, as only this workflow will have permissions to write tags or releases to GitHub.
    • After this is confirmed to work, we should remove the ability for users to manually/unilaterally create Tags
  • A new "Release" workflow which:
    • Runs when pushing a tag like vX.Y.Z
    • Publish the tag to crates.io
    • Should be similar to the example in https://crates.io/docs/trusted-publishing
    • We should probably require some sort of approval for this workflow to run (so it doesn't run by accident)
    • After we've confirmed this workflow works, we should remove the ability for users to manually/unilaterally release versions of this crate..

This should also include updating documentation of how the release process works for this crate (maybe in a CONTRIBUTING.md file).

@newpavlov @dhardy are there any release processes you used in previous projects that worked well?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions