|
1 | 1 | # Release process
|
2 | 2 |
|
| 3 | + |
| 4 | +**Prerequisites (one-time setup)** |
| 5 | + |
| 6 | + |
| 7 | +1. Go to [PyPI management page](https://pypi.org/manage/account/#api-tokens) and create |
| 8 | + an [API token](https://pypi.org/help/#apitoken) with its scope limited to the tuf project. |
| 9 | +1. Go to [GitHub |
| 10 | + settings](https://github.com/theupdateframework/python-tuf/settings/environments), |
| 11 | + create an |
| 12 | + [environment](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#creating-an-environment) |
| 13 | + called `release` and configure [review |
| 14 | + protection](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#required-reviewers). |
| 15 | +1. In the environment create a |
| 16 | + [secret](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#environment-secrets) |
| 17 | + called `PYPI_API_TOKEN` and paste the token created above. |
| 18 | + |
| 19 | +## Release |
| 20 | + |
3 | 21 | 1. Ensure `docs/CHANGELOG.md` contains a one-line summary of each [notable
|
4 | 22 | change](https://keepachangelog.com/) since the prior release
|
5 | 23 | 2. Update `tuf/__init__.py` to the new version number `A.B.C`
|
|
12 | 30 | `git tag --sign vA.B.C -m "vA.B.C"`
|
13 | 31 | 6. Push the tag to GitHub `git push origin vA.B.C`
|
14 | 32 |
|
15 |
| - *A push triggers the [CI workflow](.github/workfows/ci.yml), which, on success, triggers |
16 |
| - the [CD worfklow](.github/workfows/cd.yml), which builds source dist and wheel, |
17 |
| - creates a preliminary GitHub release under `vA.B.C-rc`, and pauses for review.* |
| 33 | + *A push triggers the [CI workflow](.github/workfows/ci.yml), which, on success, |
| 34 | + triggers the [CD workflow](.github/workfows/cd.yml), which builds source dist and |
| 35 | + wheel, creates a preliminary GitHub release under `vA.B.C-rc`, and pauses for review.* |
18 | 36 |
|
19 | 37 | 7. Run `verify_release --skip-pypi` locally to make sure a build on your machine matches
|
20 | 38 | the preliminary release artifacts published on GitHub.
|
21 | 39 |
|
22 |
| -➔ [Review *deployemnt*](https://docs.github.com/en/actions/managing-workflow-runs/reviewing-deployments) on GitHub |
| 40 | +➔ [Review *deployment*](https://docs.github.com/en/actions/managing-workflow-runs/reviewing-deployments) |
| 41 | +on GitHub |
23 | 42 |
|
24 | 43 | *An approval resumes the CD workflow to publish the release on PyPI, and to finalize the
|
25 |
| - GitHub release (removse `-rc` suffix and updates release notes).* |
| 44 | + GitHub release (removes `-rc` suffix and updates release notes).* |
26 | 45 |
|
27 |
| -8. `verify_release` may be used again to make sure the release artifacts PyPI. |
| 46 | +8. `verify_release` may be used again to make sure the PyPI release artifacts match the |
| 47 | + local build as well. |
28 | 48 | 9. Announce the release on [#tuf on CNCF Slack](https://cloud-native.slack.com/archives/C8NMD3QJ3)
|
29 |
| -10. Ensure [POUF 1](https://github.com/theupdateframework/taps/blob/master/POUFs/reference-POUF/pouf1.md), for the reference implementation, is up-to-date |
| 49 | +10. Ensure [POUF 1](https://github.com/theupdateframework/taps/blob/master/POUFs/reference-POUF/pouf1.md), |
| 50 | + for the reference implementation, is up-to-date |
0 commit comments