CI / frontend (push) Successful in 1m46s
CI / backend (push) Has been cancelled
CI / e2e (push) Has been cancelled
CI / codeql (csharp) (push) Has been cancelled
CI / codeql (javascript-typescript) (push) Has been cancelled
CI / api-client-drift (push) Has been cancelled
CI / storybook-a11y (push) Has been cancelled
CI (Gitea Actions, .github/workflows/ci.yml): - CodeQL off the PR critical path: runs on push-to-main + a weekly cron only (`if: github.event_name != 'pull_request'`, `schedule: Mondays 03:00 UTC`). The 2-language 20-min matrix was the slowest thing on every PR; code is still scanned on main + weekly. - Cache Playwright browsers (~/.cache/ms-playwright) in the storybook-a11y + e2e jobs — skips the chromium download on a hit; `install --with-deps` then only does the fast apt deps check. - Cache NuGet (~/.nuget/packages, keyed on **/*.csproj — no packages.lock.json) in the backend / e2e / api-client-drift / codeql-csharp jobs. - `npm ci --prefer-offline --no-audit --no-fund` in the 4 npm jobs. Demo (docker-compose.yml, local only — NOT used by CI): web image node:24 → node:24-slim (~1.1GB → 232MB verified). The container only runs `npm ci && ng serve` and the native deps ship prebuilt glibc binaries, so slim needs no toolchain — verified: npm ci clean, ng serve boots, app returns 200. Note: CI timing/behaviour can only be confirmed on the Gitea runner (not observable locally). Every change here is independently revertable. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
2.3 KiB
YAML
51 lines
2.3 KiB
YAML
# ponytail: dev-server images (not multi-stage prod builds) — this is a demo.
|
|
# `docker compose up` → app at http://localhost:4200, Swagger at http://localhost:5000/swagger
|
|
services:
|
|
api:
|
|
image: mcr.microsoft.com/dotnet/sdk:10.0
|
|
working_dir: /src
|
|
command: dotnet run --project src/BigRegister.Api --urls http://+:5000
|
|
environment:
|
|
- ASPNETCORE_ENVIRONMENT=Development
|
|
volumes:
|
|
# ':z' relabels for SELinux (Fedora/RHEL); harmless on other hosts.
|
|
# WP-22: no separate volume needed for the SQLite file — `dotnet run` sets
|
|
# its cwd to the project dir (src/BigRegister.Api), which this bind mount
|
|
# already covers, so bigregister.db lands on the host and survives
|
|
# `docker compose restart api` / `down` + `up` for free (gitignored).
|
|
- ./backend:/src:z
|
|
- api-bin:/src/src/BigRegister.Api/bin
|
|
- api-obj:/src/src/BigRegister.Api/obj
|
|
# WP-25: LetterHtml.Render inlines public/letter.css (the FE⇄BE letter
|
|
# contract, repo-root sibling of backend/) — mounted here so the same
|
|
# walk-up-from-the-assembly lookup that works for `dotnet run`/tests also
|
|
# resolves inside this container, whose bind mount otherwise only sees backend/.
|
|
- ./public:/src/public:z
|
|
ports:
|
|
- '5000:5000'
|
|
|
|
web:
|
|
# slim (Debian/glibc, ~220MB vs ~1.1GB for the full tag): the container only runs
|
|
# `npm ci && ng serve`, and the native deps (esbuild, lmdb, @parcel/watcher,
|
|
# msgpackr-extract) ship prebuilt glibc binaries, so no build toolchain is needed.
|
|
image: node:24-slim
|
|
working_dir: /app
|
|
# Uses the committed generated client (no codegen at startup); proxies /api → api container.
|
|
# ponytail: `--no-fund --loglevel=error` silences npm 11's startup noise (deprecation +
|
|
# allow-scripts + funding) so the demo boots clean; ng serve output is unaffected. The
|
|
# deprecation lines are Angular 22's webpack-builder (@angular-devkit/build-angular) — a
|
|
# known upstream deprecation; migrating to @angular/build is a separate, larger effort.
|
|
command: sh -c "npm ci --no-fund --loglevel=error && npx ng serve --host 0.0.0.0 --proxy-config proxy.conf.docker.json"
|
|
volumes:
|
|
- ./:/app:z
|
|
- web-modules:/app/node_modules
|
|
ports:
|
|
- '4200:4200'
|
|
depends_on:
|
|
- api
|
|
|
|
volumes:
|
|
api-bin:
|
|
api-obj:
|
|
web-modules:
|