Skip to content

release: 0.8.5 — field-hardened OTA, animators on real hardware, bran… #36

release: 0.8.5 — field-hardened OTA, animators on real hardware, bran…

release: 0.8.5 — field-hardened OTA, animators on real hardware, bran… #36

Workflow file for this run

name: CI
# Runs the headless unit suite (including the strict hardware-feasibility gate that
# every effect/transition must clear) and the critical-error lint on each push/PR,
# plus a strict mkdocs build (a broken internal link or anchor fails it).
# The suite runs against the pygame simulator with a dummy SDL driver, so no display
# or audio device is needed on the runner.
on:
push:
branches: [main, master]
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.13"]
env:
SDL_VIDEODRIVER: dummy
SDL_AUDIODRIVER: dummy
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Install dependencies
# Editable install via the [dev] extra (which pulls in [simulator]: pygame,
# numpy, Pillow). This exercises the real published install path, so a
# packaging regression fails CI here. The Makefile still sets PYTHONPATH=src;
# the editable install resolves to the same in-tree source.
run: |
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
- name: Critical-error lint
run: make lint-errors
- name: Unit tests (incl. strict feasibility gate)
run: make test-unit
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
cache: pip
- name: Install docs dependencies
# The docs are hand-written markdown (no mkdocstrings autodoc), so this only
# needs the [docs] extra (mkdocs + material) — the package isn't imported.
run: |
python -m pip install --upgrade pip
python -m pip install ".[docs]"
- name: Build docs (strict)
# --strict fails on any warning, e.g. a broken internal link or anchor.
run: mkdocs build --strict