Self-hosted EPPA CI fallback¶
Forgejo Actions CI and Docs workflows are configured for the online
self-hosted, quantlab runner. If Forgejo does not create new workflow runs,
use this local fallback on the same machine to keep validation moving without
weakening the test gate.
CI topology¶
| Gate | Trigger | Playwright | Smoke |
|---|---|---|---|
PR / main CI (.github/workflows/ci.yml) |
Every PR and pushes to main, ci/**, issue-*, monorepo/** |
No — disabled (RUN_PLAYWRIGHT=0) |
No |
Prod promotion (.github/workflows/prod-promotion.yml) |
Push to prod/release/** or manual dispatch |
Yes — full Playwright critical paths | Yes — smoke-production.sh |
The PR gate runs backend and frontend tests, typecheck, build, coverage
(test:py:coverage + test:unit:coverage), and supply-chain audit. Playwright
and E2E are intentionally excluded to keep PR feedback fast.
The prod-promotion workflow runs the complete battery (same as PR gate) plus Playwright E2E and post-deploy smoke checks. It is not triggered on every PR.
Running locally¶
Run the PR/main validation (no Playwright):
cd fronts/eppa
INSTALL_DEPS=1 INSTALL_PLAYWRIGHT=0 RUN_PLAYWRIGHT=0 npm run ci:selfhosted
Useful switches:
INSTALL_DEPS=0 npm run ci:selfhosted
RUN_PLAYWRIGHT=0 npm run ci:selfhosted
INSTALL_PLAYWRIGHT=0 npm run ci:selfhosted
PYTHON=python3 npm run ci:selfhosted
Run the full prod-promotion validation (with Playwright) when explicitly needed:
cd fronts/eppa
INSTALL_DEPS=1 INSTALL_PLAYWRIGHT=1 RUN_PLAYWRIGHT=1 npm run ci:selfhosted
Publish the result as a commit status after a successful local run:
cd fronts/eppa
scripts/publish-selfhosted-status.sh "$(git rev-parse HEAD)" success
The status context is self-hosted/local-ci. It is evidence that the same
validation battery ran on the self-hosted machine; it is not a replacement for
Forgejo Actions when Forgejo starts dispatching workflow runs again.
Run the docs validation fallback:
cd fronts/eppa
npm run docs:selfhosted
That command creates an isolated venv under /tmp/eppa-docs-venv by default,
installs requirements-docs.txt, and runs mkdocs build --strict.