Prerequisites (one-time setup)
- Go to PyPI management page and create an API token with its scope limited to the tuf project.
- Go to GitHub
settings,
create an
environment
called
releaseand configure review protection. - In the environment create a
secret
called
PYPI_API_TOKENand paste the token created above.
- Ensure
docs/CHANGELOG.mdcontains a one-line summary of each notable change since the prior release - Update
tuf/__init__.pyto the new version numberA.B.C - Create a PR with updated
CHANGELOG.mdand version bumps
➔ Review PR on GitHub
- Once the PR is merged, pull the updated
developbranch locally - Create a signed tag for the version number on the merge commit
git tag --sign vA.B.C -m "vA.B.C" - Push the tag to GitHub
git push origin vA.B.C
A tag push triggers the CD
workflow,
which runs the tests, builds source dist and wheel, creates a preliminary GitHub
release under vA.B.C-rc, and pauses for review.
- Run
verify_release --skip-pypilocally to make sure a build on your machine matches the preliminary release artifacts published on GitHub.
➔ Review deployment on GitHub
An approval resumes the CD workflow to publish the release on PyPI, and to finalize the
GitHub release (removes -rc suffix and updates release notes).
- Run
verify_releaseto make sure the PyPI release artifacts match the local build as well. When called asverify_release --sign [<key id>]the script additionally creates gpg release signatures. When signed by maintainers with a corresponding GPG fingerprint in the MAINTAINERS.md file, these signature files should be made available on the GitHub release page under Assets. - Announce the release on #tuf on CNCF Slack
- Ensure POUF 1, for the reference implementation, is up-to-date