Skip to content

release: v1.5.3

release: v1.5.3 #190

Workflow file for this run

name: CI
# Runs on every push to main and on every PR — fast feedback only.
# Heavier multi-arch builds live in `release.yml` and are triggered by
# pushing a `vX.Y.Z` tag.
on:
push:
branches: [master, main]
pull_request:
branches: [master, main]
# Cancel in-progress runs for the same ref so a quick force-push doesn't
# burn through all your free Actions minutes.
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
backend:
name: Backend tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'
cache: pip
cache-dependency-path: backend/requirements*.txt
- name: Install deps
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt -r requirements-dev.txt
- name: Run pytest
run: python -m pytest tests/ -q
frontend:
name: Frontend build + tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: 'frontend/package-lock.json'
# `npm ci` requires committed `package-lock.json` (re-tracked in
# v1.2.5 after we decided reproducible builds + supply-chain
# defense outweigh the Dependabot rebase friction of having both
# `package.json` and the lock in PRs). `--legacy-peer-deps`
# tolerates dev-only peer-range mismatches (e.g. lucide-react vs
# React 19 in older lockfiles) without weakening prod resolution.
- name: Install dependencies (npm ci, locked)
run: npm ci --legacy-peer-deps --no-audit --no-fund
# `npm run lint` is intentionally skipped — there's no ESLint
# config tracked in the repo yet (the `lint` script in
# package.json invokes eslint without a `.eslintrc.*` /
# `eslint.config.js`). When we add one, drop this comment and
# re-enable: `- run: npm run lint`.
- run: npm run test:ci
- run: npm run build
# Surface the build size on PRs — handy for catching accidental
# 10 MB chunks before they ship.
- name: Report dist size
run: du -sh dist