- Add continue-on-error to TestPyPI step - Check if TEST_PYPI_API_TOKEN exists before attempting upload - Add graceful failure handling with clear messages - Update docs to explain TestPyPI token configuration - Clarify that TestPyPI testing is optional Now the release won't fail if TestPyPI is not configured or upload fails
2.5 KiB
2.5 KiB
Release Guide
📋 Prerequisites
Before releasing, ensure:
- ✅ All code changes are committed and pushed
- ✅ CI has passed on the latest commit (check Actions)
- ✅ You have determined the new version number
Optional: TestPyPI Configuration
To enable TestPyPI testing (recommended but not required):
- Get a TestPyPI API token from https://test.pypi.org/manage/account/token/
- Add it to repository secrets: Settings → Secrets → Actions → New repository secret
- Name:
TEST_PYPI_API_TOKEN - Value: Your TestPyPI token (starts with
pypi-)
- Name:
Note: TestPyPI testing is optional. If not configured, the release will skip TestPyPI and proceed.
🚀 Recommended: Manual Release Workflow
Via GitHub UI (Most Reliable)
- Verify CI Status: Check that the latest commit has a green checkmark ✅
- Go to Actions → Manual Release
- Click "Run workflow"
- Enter version (e.g.,
0.1.1) - Toggle "Test on TestPyPI first" if desired
- Click "Run workflow"
What happens:
- ✅ Validates version format
- ✅ Downloads pre-built packages from CI (no rebuild needed!)
- ✅ Updates all package versions
- ✅ Optionally tests on TestPyPI
- ✅ Creates tag and GitHub release
- ✅ Automatically triggers PyPI publish
Via Command Line
gh workflow run release-manual.yml -f version=0.1.1 -f test_pypi=true
⚡ Quick Release (One-Line)
For experienced users who want the fastest path:
./scripts/release.sh 0.1.1
This script will:
- Update all package versions
- Commit and push changes
- Create GitHub release
- CI automatically builds and publishes to PyPI
⚠️ Note: If CI fails, you'll need to manually fix and re-tag
Manual Testing Before Release
For testing specific packages locally (especially DiskANN on macOS):
# Build specific package locally
./scripts/build_and_test.sh diskann # or hnsw, core, meta, all
# Test installation in a clean environment
python -m venv test_env
source test_env/bin/activate
pip install packages/*/dist/*.whl
# Upload to Test PyPI (optional)
./scripts/upload_to_pypi.sh test
# Upload to Production PyPI (use with caution)
./scripts/upload_to_pypi.sh prod
First-time setup
-
Install GitHub CLI:
brew install gh gh auth login -
Set PyPI token in GitHub:
gh secret set PYPI_API_TOKEN # Paste your PyPI token when prompted