CI / CD
Two repos, two GitHub Actions workflows. Both are real and green.
DefendableCloud — .github/workflows/ci.yml
Section titled “DefendableCloud — .github/workflows/ci.yml”Three parallel jobs on push/PR (Python 3.13, Node 22.12.0):
- api —
pip install -e ".[dev]"thenpytest(working directoryapi/). - app — Vault SPA:
npm ci,npm audit --audit-level=low,npm run build(working directoryapp/). - site — marketing site:
npm ci,npm audit --audit-level=low,npm run build(working directorysite/).
DefendableRouter — .github/workflows/ci.yml
Section titled “DefendableRouter — .github/workflows/ci.yml”Two jobs on push/PR (Python 3.12):
- test —
pytest -ra. - smoke (boot-smoke) —
init-db,seed-demo, boot uvicorn, then assert behavior end-to-end:/healthreportsdb_status:"ok"; the server-side pricing is correct (2hrtx6000_blackwell_96gbquotes$10, 3hrog_astral_5090_32gbquotes$6); and an inactive member hitting/datasets/{id}/accessis gated with HTTP 403.
Deploy
Section titled “Deploy”- Cloudflare Pages auto-deploys the site, app, and docs frontends on push.
- The API ships via
fly deployto Fly.io (defendable-cloud-api, regioniad). - The router is CI-verified and operator-local — there is no auto-deploy; it is not a public service.
🐝 Operator-grade · books and records · to the shed.