Tweak README to indicate correct project status #2
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| tags: [v*] | |
| pull_request: | |
| workflow_dispatch: | |
| schedule: | |
| # run once a month on the first day of the month at 00:00 | |
| - cron: "0 0 1 * *" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| pyright: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: astral-sh/setup-uv@v7 | |
| - run: uv run pyright | |
| test: | |
| name: >- | |
| Test ${{ matrix.os }} py${{ matrix.python-version }} | |
| java${{ matrix.java-version }} | |
| ${{ matrix.resolution != 'highest' && matrix.resolution || '' }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| java-version: ["11"] | |
| resolution: ["highest"] | |
| group: [test-all] # this means install all third party deps. The other includes do not. | |
| exclude: | |
| # this one always seems to hang on CI for some reason. | |
| - os: ubuntu-latest | |
| python-version: "3.10" | |
| java-version: "11" | |
| include: | |
| - os: ubuntu-latest | |
| python-version: "3.12" | |
| java-version: "17" | |
| - os: ubuntu-latest | |
| python-version: "3.14" | |
| java-version: "21" | |
| # lowest-resolution variants | |
| - os: ubuntu-latest | |
| python-version: "3.11" | |
| java-version: "11" | |
| resolution: "lowest-direct" | |
| - os: ubuntu-latest | |
| python-version: "3.12" | |
| java-version: "11" | |
| resolution: "lowest-direct" | |
| group: test-all | |
| - os: windows-latest | |
| python-version: "3.13" | |
| java-version: "21" | |
| resolution: "lowest-direct" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Dependencies | |
| run: uv sync --group ${{ matrix.group == '' && 'test' || matrix.group }} | |
| env: | |
| UV_NO_DEV: 1 | |
| UV_RESOLUTION: ${{ matrix.resolution || 'highest' }} | |
| UV_PRERELEASE: ${{ github.event_name == 'schedule' && 'allow' || 'if-necessary-or-explicit' }} | |
| - name: Get test data cache key | |
| id: cache-key | |
| shell: bash | |
| run: | | |
| MANIFEST_HASH=$(curl -sL https://pub-2ac5a4b342a7472da9d44847263e1a56.r2.dev/manifest.json | sha256sum | cut -d' ' -f1) | |
| echo "hash=${MANIFEST_HASH}" >> "$GITHUB_OUTPUT" | |
| - name: Cache test data | |
| uses: actions/cache@v5 | |
| id: cache-test-data | |
| with: | |
| path: tests/data | |
| key: test-data-${{ steps.cache-key.outputs.hash }} | |
| - name: Fetch test data | |
| if: steps.cache-test-data.outputs.cache-hit != 'true' | |
| run: uv run scripts/fetch_test_data.py | |
| - name: Test | |
| run: uv run --no-sync coverage run -p -m pytest -v -p no:faulthandler | |
| env: | |
| BFF_JAVA_VERSION: ${{ matrix.java-version }} | |
| PYTEST_ADDOPTS: ${{ matrix.resolution == 'lowest-direct' && '-W ignore' || '' }} | |
| - name: Upload coverage | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: covreport-${{ matrix.os }}-py${{ matrix.python-version }}-${{ matrix.java-version }}-${{ matrix.resolution }}-${{ matrix.group}} | |
| path: ./.coverage* | |
| include-hidden-files: true | |
| upload_coverage: | |
| if: always() | |
| needs: [test] | |
| uses: pyapp-kit/workflows/.github/workflows/upload-coverage.yml@v2 | |
| secrets: | |
| codecov_token: ${{ secrets.CODECOV_TOKEN }} | |
| build-and-inspect-package: | |
| name: Build & inspect package. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - uses: hynek/build-and-inspect-python-package@v2 | |
| upload-to-pypi: | |
| name: Upload package to PyPI | |
| needs: [test, build-and-inspect-package] | |
| if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: write | |
| steps: | |
| - name: Download built artifact to dist/ | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: Packages | |
| path: dist | |
| - name: 🚢 Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| - uses: softprops/action-gh-release@v2 | |
| with: | |
| generate_release_notes: true | |
| files: "./dist/*" |