Merge pull request #15 from bio-oracle/docs/constraints #61
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
| # Install Python dependencies, lint, and run tests across supported versions. | |
| # https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python | |
| name: Python application | |
| on: | |
| push: | |
| branches: ["main", "dev"] | |
| pull_request: | |
| branches: ["main", "dev"] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e ".[dev,xarray]" | |
| - name: Lint with ruff | |
| run: ruff check pyo_oracle tests | |
| - name: Lint with flake8 (syntax errors only) | |
| run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics | |
| - name: Test with coverage (unit tests only) | |
| run: | | |
| python -m pytest -m "not integration" \ | |
| --cov=pyo_oracle --cov-report=html --cov-report=term-missing \ | |
| --cov-fail-under=90 tests/ | |
| - name: Upload coverage report | |
| if: matrix.python-version == '3.12' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-report | |
| path: htmlcov/ | |
| integration: | |
| # Tests that hit the live Bio-ORACLE ERDDAP server. Blocking: a failure here | |
| # gates the PR. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e ".[dev,xarray]" | |
| - name: Run integration tests | |
| run: python -m pytest -m integration tests/ | |
| docs: | |
| # Build the documentation in strict mode so broken links or missing pages | |
| # fail the PR. Deployment to GitHub Pages stays in docs.yml (main only). | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e ".[docs]" | |
| - name: Build docs (strict) | |
| run: mkdocs build --strict |