Extend the documentation with known workarounds and suggestions #887
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
| # The quick CI tests run on every push to a PR. They perform a quick check | |
| # if the feature set and codebase are stable in general, but only for | |
| # a representative selection of environments. | |
| name: CI | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| - release/** | |
| workflow_dispatch: {} | |
| jobs: | |
| linters: | |
| name: Linting and static analysis | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 7 # usually 5 mins with coverage | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.14" | |
| - run: pip install --group lint -e . | |
| - run: pre-commit run --all-files | |
| - run: mypy | |
| - run: | | |
| # Separately, because the shared module name "example.py" causes naming conflicts. | |
| exit_codes=0 | |
| for d in $(find examples -maxdepth 1 -mindepth 1 -type d) | |
| do | |
| echo "Checking ${d}" | |
| mypy --config-file= --ignore-missing-imports $d | |
| exit_codes=$[${exit_codes} + $?] | |
| done | |
| exit ${exit_codes} | |
| unit-tests: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| install-extras: [ "", "full-auth" ] | |
| python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ] | |
| include: | |
| - install-extras: "uvloop" | |
| python-version: "3.14" | |
| name: Python ${{ matrix.python-version }}${{ matrix.install-extras && ' ' || '' }}${{ matrix.install-extras }} | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 7 # usually 5 mins with coverage | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - run: pip install --group test -e . | |
| - run: pip install -e .[${{ matrix.install-extras }}] | |
| if: ${{ matrix.install-extras }} | |
| - run: coverage run --branch --source=kopf -m pytest --color=yes --timeout=2 | |
| - name: Publish coverage to Coveralls.io | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| parallel: true | |
| flag-name: ${{ matrix.python-version }}${{ matrix.install-extras && ' ' || '' }}${{ matrix.install-extras }} | |
| if: success() | |
| - name: Publish coverage to CodeCov.io | |
| uses: codecov/codecov-action@v5 | |
| env: | |
| PYTHON: ${{ matrix.python-version }} | |
| with: | |
| flags: unit | |
| env_vars: PYTHON | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| if: success() | |
| # Only the core functionality is tested: no e2e or functional tests (for simplicity). | |
| # No coverage: PyPy performs extremely poorly with tracing/coverage (13 mins vs. 3 mins). | |
| # Extra time: 2-3 mins for building the dependencies (since no binary wheels are available). | |
| # Extra time: PyPy is good with JIT for repetitive code; tests are too unique for JIT. | |
| pypy-tests: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| install-extras: [ "", "full-auth" ] | |
| python-version: [ "pypy-3.10", "pypy-3.11" ] | |
| name: Python ${{ matrix.python-version }}${{ matrix.install-extras && ' ' || '' }}${{ matrix.install-extras }} | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - run: sudo apt-get update && sudo apt-get install libxml2-dev libxslt-dev | |
| - run: pip install --upgrade pip wheel setuptools | |
| - run: pip install --group test -e . | |
| - run: pip install -e .[${{ matrix.install-extras }}] | |
| if: ${{ matrix.install-extras }} | |
| - run: pytest --color=yes --timeout=2 --no-cov | |
| functional: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| k3s: [latest, v1.33, v1.32, v1.31] | |
| name: K3s ${{matrix.k3s}} | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 10 # usually 4-5 mins | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.14" | |
| - uses: nolar/setup-k3d-k3s@v1 | |
| with: | |
| version: ${{ matrix.k3s }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - run: pip install --group test -e . -r examples/requirements.txt | |
| - run: pytest --color=yes --timeout=30 --only-e2e | |
| coveralls-finish: | |
| name: Finalize coveralls.io | |
| needs: [unit-tests, pypy-tests, functional] | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Finish coverage at Coveralls.io | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| parallel-finished: true |