Release Process
Final release (from an official Trustee tag)
Use scripts/release.sh when Trustee has cut an official tag.
scripts/release.sh <trustee-tag> [sdk-patch]
| Argument | Example | Description |
|---|---|---|
trustee-tag |
v0.10.0 |
The Trustee release tag to target |
sdk-patch |
0 |
SDK patch number for this Trustee minor (default: 0) |
Examples:
scripts/release.sh v0.10.0 0 # produces SDK v0.10.0
scripts/release.sh v0.10.0 1 # produces SDK v0.10.1 (second patch)
What the script does
- Computes SDK version from the Trustee tag:
v0.10.0→0.10.0 - Fetches
plugin.protofrom the trustee repository at the given tag - Regenerates gRPC stubs with
grpcio-tools - Updates
TRUSTEE_VERSIONand theversionfield inpyproject.toml - Creates a signed git commit and an annotated (or signed, if GPG is available) tag
Publishing
Push the commit and tag — the CI workflow handles the rest:
git push origin main v<version>
The publish workflow triggers automatically on v* tag pushes and uploads to PyPI
via trusted publishing (no credentials required locally).
Pre-release (from Trustee main, before an official tag)
Use this when you want to publish a preview of an upcoming Trustee version before it
is officially tagged. Pre-release versions (e.g. 0.19.0a1) are hidden from
pip install by default — users only receive them if they pass --pre.
Step 1: Set the version in pyproject.toml
# Replace 0.19.0a1 with your intended pre-release version
sed -i 's/^version = .*/version = "0.19.0a1"/' pyproject.toml
Step 2: Commit and tag
git add pyproject.toml
git commit -s -m "chore: bump version to 0.19.0a1"
git tag -a v0.19.0a1 -m "v0.19.0a1"
git push origin main v0.19.0a1
The publish workflow triggers on the tag push and uploads to PyPI automatically.
Step 3: When the official Trustee tag is cut
Run release.sh as normal — it will regenerate the stubs from the real tag and
publish the final version:
scripts/release.sh v0.19.0 0
git push origin main v0.19.0
Pre-release version naming
| Suffix | Example | Meaning |
|---|---|---|
a1, a2 |
0.19.0a1 |
Alpha — early preview, may change |
rc1, rc2 |
0.19.0rc1 |
Release candidate — feature complete |
dev0 |
0.19.0.dev0 |
Development snapshot |
PyPI and pip follow PEP 440 for pre-release ordering.