Making a new Python library release
This guide shows how to make a new Perfetto Python library release to PyPI.
The release process is split into two stages, both orchestrated by the
tools/release_python.py
script.
Stage 1: Bumping the version
The first stage creates a pull request to update the package version.
- Run the release script from the root of the repository.
tools/release_python.py --bump-version
The script will guide you through the following steps:
- Versioning: It will show you the current version from
python/setup.py
and prompt you for the new version. - Branching: It will prompt you for a new branch name and create it.
- Committing: It will update the
version
inpython/setup.py
and create a commit.
Once the script completes, push the new branch and create a pull request.
After the pull request is reviewed and landed, proceed to Stage 2.
Stage 2: Publishing the release and updating the download URL
The second stage publishes the package to PyPI and then creates a second pull request to update the source code with the correct download URL.
Find the commit hash of the landed version bump CL from Stage 1.
Run the release script again, providing the landed commit hash.
tools/release_python.py --publish --commit <landed-commit-hash>
The script will then perform the following steps:
- Checkout: It will check out the specified commit.
- Build & Publish: It will temporarily update the
download_url
inpython/setup.py
, build the package, and upload it to PyPI. You will be prompted for your PyPI credentials. For the username, use__token__
. For the password (API token), find "Perfetto PyPi API Key" on http://go/valentine. - Cleanup: It will remove the temporary build artifacts.
- Final URL Update: After publishing, the script will prompt you for a new branch name. It will then create a new commit on that branch that updates the
download_url
inpython/setup.py
to point to the commit from the--commit
argument.
- Once the script completes, push the new branch for the
download_url
update and create a second pull request. After this final PR is landed, the release is complete.