Triggers: PRs to main | Push to main | Manual dispatch | Cron (Monday 9AM IST)
-
lockfile-hygiene (all triggers)
- Checkout
uv-lockfile-hygieneaction (scan only, no clean-room install)- Fails if internal Artifactory hosts found in
requirements*.txt
-
test (Python matrix) — needs: lockfile-hygiene (all triggers)
- Checkout
- Artifactory OIDC Auth (
ecosystem: python) - Setup Python
pip install virtualenv+make install test-install+make prettiermake test-with-coverage- Cluster tests (
make cluster-testwith 7 secrets) - Verify docs generation (
make docs) - Matrix:
3.12on PRs/pushes,[3.8–3.13]on cron/manual withall
-
deploy-dry-run (Release Readiness Check - Build artifact) — needs: test (cron + manual dispatch only)
- Checkout
- Artifactory OIDC Auth
- Setup Python 3.12
- Validate version format is semver (
X.Y.Z) - Build sdist + wheel (
python -m build) - Verify with
twine check dist/* - List artifacts + print summary
- Does NOT publish
Trigger: Tag push matching v*
- Bump
versioninsetup.py, merge tomain - Tag and push:
git tag v9.0.1 && git push --tags - Workflow fires automatically
- Approve the
productionenvironment gate when prompted - Verify:
pip install twilio==9.0.1+ check attestations on pypi.org
-
lockfile-hygiene
- Checkout
uv-lockfile-hygienescan (no clean-room install)
-
test (Python 3.8–3.13 full matrix) — needs: lockfile-hygiene
- Checkout
- Artifactory OIDC Auth (
ecosystem: python) - Setup Python
pip install virtualenv+make install test-install+make prettiermake test-with-coverage
-
deploy (Publish to PyPI) — needs: test, requires
productionenv approval- Checkout
- Create GitHub Release (auto-generated notes)
- Artifactory OIDC Auth
- Setup Python 3.12
- Validate tag format (
vX.Y.Z) + matchessetup.pyversion - Build sdist + wheel (
python -m build) - Verify with
twine check dist/* - Publish to PyPI (OIDC trusted publishing, PEP 740 attestations)
| Step | Action |
|---|---|
| Weekly | Monday cron runs CI workflow — confirms infra is healthy (full matrix + dry run) |
| On every PR | CI workflow runs lockfile-hygiene + test (3.12) + cluster tests + docs |
| 1 | [ Librarian ] PR: bump setup.py version, merge to main |
| 2 | [ Librarian ] git tag vX.Y.Z && git push --tags |
| 3 | deploy.yml fires automatically on tag creation, tests run (3.8–3.13) |
| 4 | [ Manual ] Approve production environment gate |
| 5 | GitHub Release created, package published to PyPI |
| 6 | [ Manual ] Verify: pip install twilio==X.Y.Z + check attestations on pypi.org |
| Dependency | Owner | Breaks if... |
|---|---|---|
Artifactory OIDC provider (github-actions) |
SSC / Platform | Repo renamed, org changed, trust not configured |
vars.ARTIFACTORY_URL |
Repo admin | Variable not set or URL changes |
production GitHub environment |
Repo admin | Environment doesn't exist or approvals misconfigured |
ubuntu-x64 runner group |
Enterprise admin | Repo not added to runner group, or runner pool down |
| PyPI trusted publisher | PyPI org admin | Not registered, or workflow filename / environment mismatch |