This document describes the process for releasing new versions of tigris-boto3-ext to PyPI.
- Ensure you have maintainer access to the PyPI project
- All tests are passing on the
mainbranch - The CHANGELOG has been updated with the new version's changes
Update the version number in pyproject.toml:
[project]
version = "x.y.z"# Commit the version change
git add pyproject.toml
git commit -m "Bump version to x.y.z"
# Create a tag
git tag -a vx.y.z -m "Release vx.y.z"
# Push the commit and tag
git push origin main
git push origin vx.y.zThe GitHub Actions workflow (.github/workflows/release.yml) will automatically:
- Build the distribution packages (source and wheel)
- Validate the package metadata
- Publish to PyPI using trusted publishing (OIDC)
- Create a GitHub release with auto-generated release notes
If you need to release manually:
# Install build dependencies
uv sync --all-extras
# Build the package
uv build
# Check the package
uv run twine check dist/*
# Upload to PyPI (requires PyPI token)
uv run twine upload dist/*The project uses Trusted Publishing for secure releases:
- Go to PyPI project settings: https://pypi.org/manage/project/tigris-boto3-ext/settings/
- Add a GitHub trusted publisher with:
- Owner:
tigrisdata - Repository:
tigris-boto3-ext - Workflow:
release.yml - Environment:
pypi
- Owner:
This project follows Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for backwards-compatible functionality
- PATCH version for backwards-compatible bug fixes
Before publishing, you can test the release process:
-
Build the package locally:
uv build
-
Install in a clean environment:
python -m venv test-env source test-env/bin/activate pip install dist/tigris_boto3_ext-*.whl
-
Test the installation:
python -c "import tigris_boto3_ext; print(tigris_boto3_ext.__version__)"
After a successful release:
- Verify the package is available on PyPI: https://pypi.org/project/tigris-boto3-ext/
- Test installation:
pip install tigris-boto3-ext - Update documentation if needed
- Announce the release (blog, social media, etc.)