Context
From PR #157 review by @AyBruno.
The CI integration test job currently hardcodes service startup:
node apps/auth/dist/app.js > /tmp/auth.log 2>&1 &
node apps/backend/dist/app.js > /tmp/backend.log 2>&1 &
timeout 30 bash -c 'until curl -sf http://localhost:8083/healthcheck ...'
timeout 30 bash -c 'until curl -sf http://localhost:8081/healthcheck ...'
The suggestion is to replace this with npm run start --workspace=apps/** so CI doesn't need updating when a new service is added.
Tradeoffs to consider
- Healthcheck URLs and ports are still hardcoded, so a new service requires CI changes regardless.
- Per-service log redirection (
> /tmp/auth.log) enables the "Show service logs on failure" step. Running through npm merges output streams.
- Auth must be healthy before backend starts (JWKS dependency). A single workspace start command doesn't guarantee ordering.
- The
start scripts would need timeout/healthcheck logic baked in, mixing CI concerns into app code.
When this becomes worth doing
If a third service is added under apps/, revisit this. A possible approach:
- Add a
ci:start script per workspace that wraps startup with healthcheck polling and log redirection.
- Use
npm run ci:start --workspace=apps/** with concurrency controls.
- Or use a lightweight orchestrator script in
scripts/ that reads workspace metadata.
Context
From PR #157 review by @AyBruno.
The CI integration test job currently hardcodes service startup:
The suggestion is to replace this with
npm run start --workspace=apps/**so CI doesn't need updating when a new service is added.Tradeoffs to consider
> /tmp/auth.log) enables the "Show service logs on failure" step. Running through npm merges output streams.startscripts would need timeout/healthcheck logic baked in, mixing CI concerns into app code.When this becomes worth doing
If a third service is added under
apps/, revisit this. A possible approach:ci:startscript per workspace that wraps startup with healthcheck polling and log redirection.npm run ci:start --workspace=apps/**with concurrency controls.scripts/that reads workspace metadata.