5b88e69c40
Runs on push/PR to codex/staging-baseline plus manual dispatch: sbt test for the backend, and npm ci/typecheck/build/audit (full + production-only) for the frontend, matching the checks already documented as the manual Rocky verification routine. Verified sbt test compiles and passes with no .env file present (matching what a checkout-only CI job will actually have) via a git-archive dry run before writing this. Two separate jobs, each with its own container image, rather than one shared runner-label image with ad-hoc installs — reuses the exact hseeberger/scala-sbt image already used all session for local backend builds, and a plain node:20-bookworm for the frontend, so nothing needs apt-get bootstrapping of a second language runtime into the same container.
41 lines
797 B
YAML
41 lines
797 B
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- codex/staging-baseline
|
|
pull_request:
|
|
branches:
|
|
- codex/staging-baseline
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
backend:
|
|
runs-on: docker
|
|
container:
|
|
image: hseeberger/scala-sbt:17.0.2_1.6.2_2.13.8
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: sbt test
|
|
run: sbt -batch test
|
|
|
|
frontend:
|
|
runs-on: docker
|
|
container:
|
|
image: node:20-bookworm
|
|
defaults:
|
|
run:
|
|
working-directory: web
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: npm ci
|
|
run: npm ci
|
|
- name: typecheck
|
|
run: npm run typecheck
|
|
- name: build
|
|
run: npm run build
|
|
- name: audit (full)
|
|
run: npm audit
|
|
- name: audit (production only)
|
|
run: npm audit --omit=dev
|