Skip to content

integration(full pod): decouple frontend build from backend/integration CI - #75

Merged
Anthony Sligar (sligara7) merged 1 commit into
NSLS2:mainfrom
sligara7:fix/decouple-frontend-from-integration-ci
Jul 1, 2026
Merged

integration(full pod): decouple frontend build from backend/integration CI#75
Anthony Sligar (sligara7) merged 1 commit into
NSLS2:mainfrom
sligara7:fix/decouple-frontend-from-integration-ci

Conversation

@sligara7

Copy link
Copy Markdown
Collaborator

Problem

The full pod end-to-end CI job brings up the pod with docker compose up --build -d, which builds and starts every service defined in integration/pods/full/docker-compose.yaml — including the frontend. However, that job only exercises the backends: the health gate waits on :8004/:8003, and every exercise step hits configuration_service / direct_control / registry. The frontend is built but never tested.

That coupling means a frontend-team change can break backend/integration CI even though the frontend isn't under test. Concretely, PR #68 (a frontend SSR PR) turned the whole full pod end-to-end job red at the build step — first with a dockerfile parse error ... unknown instruction: Containerfile (a botched DockerfileContainerfile symlink), then with set -euxo pipefail failing under /bin/sh (dash) in a RUN step. Neither has anything to do with the backends this job is meant to validate.

Fix

Gate the frontend service behind a Compose frontend profile so it is no longer built/started by the default docker compose up used in CI, while remaining available on demand:

docker compose --profile frontend up --build

This keeps the backend/integration CI self-contained and owned by the backend team, consistent with the frontend-ownership boundary already documented in the root docker-compose.yml ("The frontend container is intentionally NOT defined here — that's the frontend team's responsibility").

Scope / notes

  • Only integration/pods/full/docker-compose.yaml changes (one service gains profiles: ["frontend"], plus header/usage comments).
  • The dev pod (integration/pods/dev) — whose purpose is frontend development and which is not run in CI — is intentionally left unchanged.
  • No workflow change is required: docker compose up --build -d now simply skips the profiled service.

Verification

# default (CI path) — frontend excluded:
$ docker compose config --services
configuration_service direct_control_service ioc ioc_adsim ioc_fake_motor \
ioc_random_walk ioc_random_walk_h ioc_random_walk_v ioc_thermo postgres

# on demand — frontend included:
$ docker compose --profile frontend config --services | grep frontend
frontend

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

The full-pod end-to-end job builds and starts every service via
`docker compose up --build -d`, including the frontend. But the pod's checks
(health wait + exercise scripts) only touch the backends on 8003/8004 — the
frontend is never exercised. That coupling means a frontend-team change to
frontend/Dockerfile can break the backend/integration CI (e.g. a Dockerfile
rename or a dash-incompatible `pipefail` in a RUN step will fail the whole
"full pod end-to-end" job before any backend is tested).

Move the frontend service behind a "frontend" compose profile so it is no
longer built/started by the default `docker compose up` used in CI, while
remaining available on demand:

    docker compose --profile frontend up --build

This keeps the backend/integration CI self-contained and owned by the backend
team, consistent with the frontend-ownership boundary already documented in the
root docker-compose.yml. The dev pod (integration/pods/dev), whose purpose is
frontend development and which is not run in CI, is intentionally left as-is.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sligara7
Anthony Sligar (sligara7) merged commit 7c680c1 into NSLS2:main Jul 1, 2026
9 checks passed
@sligara7
Anthony Sligar (sligara7) deleted the fix/decouple-frontend-from-integration-ci branch July 1, 2026 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant