- dev-images: build/push backend, worker, frontend to ghcr.io and Docker Hub on every push to dev (tags: dev, dev-<sha>) - release-images: same images on v* tag push (tags: latest, <version>) - PR checks (into main/dev): ruff lint+format, eslint+prettier, no-push Docker build of all targets - CodeQL (python, js/ts), dependency-review, pip-audit, npm audit, Trivy fs - pin .github/workflows/*.yml to LF
65 lines
1.4 KiB
YAML
65 lines
1.4 KiB
YAML
name: PR checks
|
|
|
|
# Runs on pull requests into main (typically from dev) and into dev (typically
|
|
# from feature/* branches): lint + format checks 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
|
|
|
|
build:
|
|
name: Docker build
|
|
uses: ./.github/workflows/_docker-build-push.yml
|
|
with:
|
|
push: false
|
|
tag_mode: dev
|