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

  1. Computes SDK version from the Trustee tag: v0.10.00.10.0
  2. Fetches plugin.proto from the trustee repository at the given tag
  3. Regenerates gRPC stubs with grpcio-tools
  4. Updates TRUSTEE_VERSION and the version field in pyproject.toml
  5. 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.