This document describes the release process. It is intended for maintainers with push access to main.
mainis the only long-lived branch.- Direct pushes to
mainare disabled; all changes go through a PR. - PR titles must follow Conventional Commits, enforced by the
semantic-pull-requestcheck.
Merging a PR into main does not trigger a release. Releases are triggered by pushing a version tag.
- Bump
versionunder[workspace.package]in the rootCargo.toml, and merge via PR. - From
main, tag and push:git tag v0.1.0 git push origin v0.1.0 - The tag push triggers
.github/workflows/release.yml, which:- Verifies the tag matches the version in
Cargo.toml. - Verifies the tagged commit is on
main. - Builds and runs the test suite.
- Creates the GitHub Release.
- Verifies the tag matches the version in
A failing test suite stops the workflow before the release step runs.
The Python client (client/python/) is versioned and released independently of the server, using its own tag prefix.
- Bump
versioninclient/python/pyproject.toml, and merge via PR. - Tag and push with the
python-vprefix:git tag python-v0.2.0 git push origin python-v0.2.0 - The tag push triggers
.github/workflows/publish-python.yml, which builds the package and publishes to PyPI via Trusted Publishing (OIDC, no stored API token).
- On PyPI: project page → Publishing → add a GitHub publisher with owner
sdslabs, repovector-db, workflowpublish-python.yml, environmentpypi. - On GitHub: Settings → Environments → create an environment named
pypi, matching theenvironment: pypivalue in the workflow.
Neither workflow requires manually configured secrets. release.yml uses the default GITHUB_TOKEN. publish-python.yml uses OIDC trusted publishing.