Add a PR job that installs the backend deps and runs the settings-manifest drift guard, so a change to admin_settings_manifest.py without regenerating settingsManifest.generated.json fails CI instead of silently leaving the docs demo Settings screen stale.
89 lines
2.3 KiB
YAML
89 lines
2.3 KiB
YAML
name: PR checks
|
|
|
|
# Runs on pull requests into main (typically from dev) and into dev (typically
|
|
# from feature/* branches): lint + format checks, a demo settings-manifest
|
|
# drift guard, and a no-push image build to prove the Docker images still build.
|
|
|
|
on:
|
|
pull_request:
|
|
branches: [main, dev]
|
|
|
|
concurrency:
|
|
group: ci-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint & format
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Install ruff
|
|
run: pip install "ruff>=0.8.0"
|
|
|
|
- name: Ruff lint (Python)
|
|
run: ruff check .
|
|
|
|
- name: Ruff format check (Python)
|
|
run: ruff format --check .
|
|
|
|
- name: Set up Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
cache: npm
|
|
cache-dependency-path: frontend/package-lock.json
|
|
|
|
- name: Install frontend deps
|
|
run: npm ci
|
|
working-directory: frontend
|
|
|
|
- name: ESLint (frontend)
|
|
run: npm run lint
|
|
working-directory: frontend
|
|
|
|
- name: Prettier check (frontend)
|
|
run: npm run format:check
|
|
working-directory: frontend
|
|
|
|
demo-manifest:
|
|
name: Demo settings manifest in sync
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.12"
|
|
cache: pip
|
|
cache-dependency-path: backend/requirements.txt
|
|
|
|
- name: Install backend deps + pytest
|
|
run: pip install -r backend/requirements.txt pytest
|
|
|
|
# Fails if admin_settings_manifest.py changed without regenerating the
|
|
# demo snapshot. Fix: `python scripts/export_settings_manifest.py` then
|
|
# `npx --prefix frontend prettier --write \
|
|
# src/lib/webapp/settingsManifest.generated.json`, and commit the result.
|
|
- name: Check demo settings manifest is in sync
|
|
run: python -m pytest tests/test_settings_manifest_demo_sync.py -q
|
|
|
|
build:
|
|
name: Docker build
|
|
uses: ./.github/workflows/_docker-build-push.yml
|
|
with:
|
|
push: false
|
|
tag_mode: dev
|