Release Process¶
This page documents the release workflow for the SDK.
High Level Steps¶
- Add at most one release label to the pull request that targets
main: release:majorrelease:minorrelease:patch- Open or update the pull request and let the
Release Previewworkflow compute the next version. - Merge the pull request into
main. - Let the
Release On Mergeworkflow validate the merged code, bump the versioned files, create thevX.Y.Ztag, and push it. - Let the tag-triggered documentation workflow deploy versioned docs and then call the reusable publish and GitHub release workflows.
If no release label is present, the workflow defaults to a patch release.
Workflow Details¶
- Pull requests to
mainrunRelease Preview, which resolves the release label and shows the version that would be published after merge. - Merged pull requests to
mainrunRelease On Merge, which reruns the release checks withuv sync --dev --locked,uv run invoke test.run,uv run invoke qa, anduv run invoke docs.buildbefore creating the release commit and tag. - Tag pushes matching
v*keep using the existing documentation workflow to deploy docs, publish the package to PyPI, and create the GitHub release. Publish Python packagealso supports a manualworkflow_dispatchrun frommainas a fallback when you need to publish the current branch state directly to PyPI without creating a tag or a release commit.
Manual Publish Fallback¶
- Open the
Publish Python packageworkflow in GitHub Actions. - Run it against the
mainbranch and enable the confirmation input. - The workflow builds and publishes the package from the checked-out
mainbranch state. - This path does not bump the project version, create a
vX.Y.Ztag, deploy versioned docs, or create a GitHub release. - If the version currently in
pyproject.tomlis already present on PyPI, the publish step fails as expected.
Label Rules¶
- Use exactly one release label per pull request.
- If more than one release label is applied, the preview workflow fails.
- The supported labels are
release:major,release:minor, andrelease:patch.
Prerequisites¶
- Configure PyPI Trusted Publishing for this repository and the reusable publish workflow.
- Protect
mainso pull requests are required before merge. - Keep the CI workflow required on pull requests so the release workflow only runs for reviewed, green changes.