Release Management¶
Versioning¶
Semantic Versioning — MAJOR.MINOR.PATCH
Current: v3.5.3 (March 2026) — Python 3.11.14, sklearn 1.8.0, LightGBM 4.6+, FinBERT, PySpark 4.1
Release Checklist¶
- [ ] All tests passing, coverage >= 85% (actual: 90–98%, 395+ tests)
- [ ] Security scans clean (Gitleaks, Bandit, Trivy)
- [ ] Model metrics meet thresholds (AUC > 0.80, R² > 0.75, Acc > 0.85)
- [ ] Docker images built and pushed to Artifact Registry
- [ ] Integration tests pass
- [ ] Documentation updated
Release Process¶
- Version bump → Update
__init__.py,pyproject.tomlacross projects - Test →
pytest --cov, Docker build, integration tests - Tag & push →
git tag -a vX.Y.Z && git push --tags - Build images → Push to Artifact Registry (
us-central1-docker.pkg.dev) - Deploy →
kubectl rollout restart deployment -n ml-portfolio - Verify → Health checks + smoke tests on GKE
Rollback¶
Docker Registry¶
Images pushed to GCP Artifact Registry:
- us-central1-docker.pkg.dev/ml-portfolio-duque-om-202602/ml-portfolio-images/bankchurn:latest
- us-central1-docker.pkg.dev/ml-portfolio-duque-om-202602/ml-portfolio-images/nlpinsight:latest
- us-central1-docker.pkg.dev/ml-portfolio-duque-om-202602/ml-portfolio-images/chicagotaxi:latest
Emergency Procedures¶
- Immediate rollback:
kubectl rollout undo deployment/<service> -n ml-portfolio - Hotfix branch from main, fix, test, merge
- Post-mortem within 24 hours
Audit Trail¶
- All releases tagged in Git
- Docker images immutable in Artifact Registry
- MLflow tracks all model versions and parameters
- CI/CD logs retained for 90 days
Last Updated: March 2026 — v3.5.3