Skip to content

Add ESLint with CI enforcement #72

Add ESLint with CI enforcement

Add ESLint with CI enforcement #72

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
check-lockfile:
name: Check backend lockfile is up to date
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Ensure lockfiles are updated when .in files change
run: |
BASE=${{ github.event.pull_request.base.sha }}
HEAD=${{ github.event.pull_request.head.sha }}
CHANGED=$(git diff --name-only "$BASE" "$HEAD")
FAIL=0
if echo "$CHANGED" | grep -q 'backend/requirements\.in$'; then
if ! echo "$CHANGED" | grep -q 'backend/requirements\.txt$'; then
echo "::error::backend/requirements.in was modified but backend/requirements.txt was not."
FAIL=1
fi
if ! echo "$CHANGED" | grep -q 'backend/requirements-dev\.txt$'; then
echo "::error::backend/requirements.in was modified but backend/requirements-dev.txt was not."
FAIL=1
fi
fi
if echo "$CHANGED" | grep -q 'backend/requirements-dev\.in$'; then
if ! echo "$CHANGED" | grep -q 'backend/requirements-dev\.txt$'; then
echo "::error::backend/requirements-dev.in was modified but backend/requirements-dev.txt was not."
FAIL=1
fi
fi
if [ "$FAIL" -eq 1 ]; then
echo "::error::Please run pip-compile to regenerate lockfiles. See README for instructions."
exit 1
fi
frontend-lint:
name: Frontend Lint & Typecheck
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: frontend/package-lock.json
- run: npm ci
- run: npm run lint
- run: npm run typecheck