Skip to content

Extend the documentation with known workarounds and suggestions #887

Extend the documentation with known workarounds and suggestions

Extend the documentation with known workarounds and suggestions #887

Workflow file for this run

# 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