|
| 1 | +# Releasing |
| 2 | + |
| 3 | +This SDK is versioned independently of the otari gateway, with its own semver. |
| 4 | +Releases are automated with [release-please](https://github.com/googleapis/release-please). |
| 5 | + |
| 6 | +## How a release happens |
| 7 | + |
| 8 | +1. Merge changes to `main` using [Conventional Commits](https://www.conventionalcommits.org/) |
| 9 | + (`feat:`, `fix:`, etc.). This includes the gateway codegen's regeneration PRs |
| 10 | + and ordinary shell PRs. |
| 11 | +2. release-please opens or updates a single **release PR** that bumps the version |
| 12 | + in `pyproject.toml` (`[project].version`) and writes `CHANGELOG.md`. |
| 13 | +3. Review and merge the release PR. That tags the release and creates a GitHub |
| 14 | + Release. |
| 15 | +4. The same workflow run (`.github/workflows/release-please.yml`, gated on |
| 16 | + `release_created`) builds the package and publishes it to PyPI. |
| 17 | + |
| 18 | +## Configuration |
| 19 | + |
| 20 | +- **Registry:** PyPI (`otari`). |
| 21 | +- **Auth:** PyPI trusted publishing via OIDC (`environment: pypi`, `id-token: write`). |
| 22 | + No API token secret is stored; the trusted publisher must be configured on PyPI. |
| 23 | +- **Version file:** `pyproject.toml` `[project].version` (the only place to change |
| 24 | + the version; do not edit it by hand, release-please owns it). |
| 25 | + |
| 26 | +## Prerequisites (one time, repo settings) |
| 27 | + |
| 28 | +- Enable **Settings to Actions: "Allow GitHub Actions to create and approve pull |
| 29 | + requests"** so release-please can open its release PR. |
| 30 | +- Configure the PyPI trusted publisher for this repo and the `pypi` environment. |
| 31 | + |
| 32 | +## If the publish fails |
| 33 | + |
| 34 | +The release tag and GitHub Release already exist, so re-run the failed `publish` |
| 35 | +job from the Actions tab to retry publishing the same version. Avoid cutting a |
| 36 | +release by hand; the automated path keeps `pyproject.toml`, the tag, and the |
| 37 | +changelog in sync. |
| 38 | + |
| 39 | +See the gateway's [SDK release coordination and compatibility](https://github.com/mozilla-ai/otari/blob/main/docs/sdk-compatibility.md) |
| 40 | +for the cross-repo policy, the spec-version model, and the end-to-end flow. |
0 commit comments