Upgrade the CI tooling (MyPy to 1.13.0, K8s/K3s, etc) #697
Workflow file for this run
This file contains 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: 5 # usually 1-2, rarely 3 mins (because of installations) | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.13" | |
- run: pip install -r requirements.txt | |
- run: pre-commit run --all-files | |
- run: mypy kopf --strict | |
- run: | | |
# Mypying the examples | |
exit_codes=0 | |
for d in $(find examples -maxdepth 1 -mindepth 1 -type d) | |
do | |
echo "Checking ${d}" | |
mypy $d | |
exit_codes=$[${exit_codes} + $?] | |
done | |
exit ${exit_codes} | |
unit-tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
install-extras: [ "", "full-auth" ] | |
python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12", "3.13" ] | |
include: | |
- install-extras: "uvloop" | |
python-version: "3.13" | |
name: Python ${{ matrix.python-version }} ${{ matrix.install-extras }} | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 5 # usually 2-3 mins | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- run: pip install -r requirements.txt | |
- run: pip install -e .[${{ matrix.install-extras }}] | |
if: ${{ matrix.install-extras }} | |
- run: pytest --color=yes --timeout=2 --cov=kopf --cov-branch | |
- name: Publish coverage to Coveralls.io | |
if: success() | |
run: coveralls --service=github | |
env: | |
GITHUB_TOKEN: ${{ secrets.github_token }} | |
continue-on-error: true | |
- name: Publish coverage to CodeCov.io | |
uses: codecov/codecov-action@v3 | |
if: success() | |
env: | |
PYTHON: ${{ matrix.python-version }} | |
with: | |
flags: unit | |
env_vars: PYTHON | |
continue-on-error: true | |
# 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.8", "pypy-3.9", "pypy-3.10" ] | |
name: Python ${{ matrix.python-version }} ${{ matrix.install-extras }} | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- run: sudo apt-get update && sudo apt-get install libxml2-dev libxslt-dev | |
- run: pip install wheel | |
- run: pip install -r requirements.txt | |
- 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.31, v1.30, v1.29] | |
name: K3s ${{matrix.k3s}} | |
runs-on: ubuntu-24.04 | |
timeout-minutes: 10 # usually 4-5 mins | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.12" | |
- uses: nolar/setup-k3d-k3s@v1 | |
with: | |
version: ${{ matrix.k3s }} | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: pip install -r requirements.txt -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: | |
- uses: actions/setup-python@v4 | |
- run: pip install coveralls | |
- run: coveralls --service=github --finish | |
env: | |
GITHUB_TOKEN: ${{ secrets.github_token }} | |
continue-on-error: true |