|
|
||
|---|---|---|
| .. | ||
| ci.yml | ||
| production-deploy.yml | ||
| README.md | ||
| staging-deploy.yml | ||
| staging-verify.yml | ||
CI/CD Workflows
Forgejo Actions workflows for the Lilith Platform codebase.
Workflows
ci.yml - Pull Request Validation
Runs on PRs to main. Validates code before merge.
Jobs:
detect-changes- Identifies affected features/packagestypecheck- TypeScript type checkinglint- ESLinttest- Node.js tests via turbobuild- Verify packages builddetect-python-services- Auto-discovers Python servicestest-python-services- Matrix job testing all changed Python servicese2e-landing- Playwright E2E tests (when landing changes)
staging-deploy.yml - Deploy to Staging
Runs on push to main. Builds and deploys to staging environment.
Jobs:
check-skip- Skip version bump commitsbump-version- Increment VERSION.jsondetect-changes- Identify changed featuresbuild- Build Node.js packages (uses turbo change detection)trigger-reconciliation- Dispatches to infrastructure repo
Build Strategy:
# Uses turbo's built-in change detection
bun run turbo build --filter="...[$BEFORE]"
This builds only packages that changed since the last push, plus their dependents.
production-deploy.yml - Production Deployment
Manual workflow for production releases.
Change Detection
Node.js Packages
Turbo handles dependency graph automatically:
- Changed package → rebuilds
- Dependency changed → dependents rebuild
- Shared package changed → all dependents rebuild
Python Services
Auto-discovered by scanning for pyproject.toml:
features/*/*/pyproject.toml → detected as Python service
Tested when:
- Feature directory changes
- Shared packages (
@packages/) change
Adding a New Feature
Node.js (Frontend/Backend)
- Create package with
package.jsonand turbo-compatible scripts - Turbo auto-detects and includes in builds
- Add to infrastructure reconcile for deployment
Python Service
- Create service with
pyproject.toml - Add
tests/directory with pytest tests - Auto-discovered by
detect-python-servicesjob - Add to infrastructure reconcile for deployment
Environment Variables
| Variable | Purpose |
|---|---|
FORGEJO_TOKEN |
Registry auth (NPM + PyPI) |
Artifacts
Build artifacts uploaded for infrastructure reconciliation:
features/*/frontend-*/dist
features/*/backend-*/dist
features/webmap/router/dist
Flow
PR created
↓
ci.yml runs (typecheck, lint, test, build)
↓
PR merged to main
↓
staging-deploy.yml runs
├── bump VERSION.json
├── build changed packages
└── trigger infrastructure reconcile
↓
infrastructure/reconcile.yml
├── deploy to staging (black)
└── health checks