GitHub Workflow for a Python package
On pull-request
- Run lint
- Run tests with coverage on the main platform & version (e.g., Ubuntu latest + Python 3.12)
- Publish the coverage report to Codecov
On push to main
branch
- Run lint
- Run tests with coverage on all supported platforms & versions ((Ubuntu latest, macOS) * (Python 3.11, Python 3.12))
- Publish the coverage report to Codecov
On push to semver tag
- (if branch main contains the tag) Create GitHub Release (TBD)
- Build Python package
- Build documentation & publish to GitHub Pages. (TBD: how to maintain multiple versions of documentation, e.g., tagged releases + HEAD)
- Publish package to TestPyPi
- (if tag is strictly MAJOR.MINOR.PATCH, i.e., not rc or dev build) Publish package to PyPi