Increase code test coverage, adjust release pipeline #35
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Publish Python Package | |
| # Trigger on: | |
| # - pull requests targeting main (publish to TestPyPI for validation before merge) | |
| # - pushes to main (publish to PyPI after merge) | |
| # - published GitHub Releases (keep existing behavior for canonical releases) | |
| on: | |
| pull_request: | |
| branches: [main] | |
| push: | |
| branches: [main] | |
| release: | |
| types: [published] | |
| permissions: | |
| contents: read | |
| id-token: write | |
| jobs: | |
| build_sdist_and_wheel: | |
| name: Build distribution 📦 | |
| runs-on: ubuntu-latest | |
| outputs: | |
| dist-path: ${{ steps.upload.outputs.artifact-path }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.x" | |
| - name: Install build tooling | |
| run: python -m pip install --upgrade pip build | |
| - name: Build distributions | |
| run: python -m build --sdist --wheel | |
| - name: Upload distribution artifacts | |
| id: upload | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: python-package-distributions | |
| path: dist/ | |
| # Publish from pull requests to main -> TestPyPI | |
| publish_testpypi: | |
| name: Publish to TestPyPI (PR to main) | |
| runs-on: ubuntu-latest | |
| needs: build_sdist_and_wheel | |
| # Only run for pull request events targeting main | |
| if: github.event_name == 'pull_request' && github.base_ref == 'main' | |
| environment: testpypi | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - name: Download dists | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: python-package-distributions | |
| path: dist/ | |
| - name: Publish package distributions to TestPyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| # repository-url directs upload to TestPyPI | |
| repository-url: https://test.pypi.org/legacy/ | |
| skip-existing: true | |
| # Publish from pushes to main OR when a Release is published -> Production PyPI | |
| publish_pypi: | |
| name: Publish to PyPI (main branch or GitHub Release) | |
| runs-on: ubuntu-latest | |
| needs: build_sdist_and_wheel | |
| # Run when: | |
| # - push to main branch, or | |
| # - release published event (keeps existing release-based behavior) | |
| if: | | |
| (github.event_name == 'push' && github.ref == 'refs/heads/main') || | |
| (github.event_name == 'release' && github.event.action == 'published') | |
| environment: pypi | |
| permissions: | |
| id-token: write | |
| contents: read | |
| steps: | |
| - name: Download dists | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: python-package-distributions | |
| path: dist/ | |
| - name: Publish package distributions to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 |