name: Build check # Proves the split Dockerfile actually builds (repo-split Stage 7b) -- NOT a # live boot+healthz check. content.register() fetches the IndexNow key from # backend at import time with no retry (documented Stage 4 behavior, # unchanged here); without a real, reachable backend this process crashes # immediately on import, by design -- so a standalone boot check would either # be fake (skip the real import path) or require checking out and booting # thermograph-backend too. That's the real fix (a genuine cross-repo # contract-test job, same pattern the original repo-split plan already # scoped for the /cell + ETag contract), not yet built -- flagged as a real # gap, not silently skipped. Full pytest-suite migration is separate, # deferred follow-up work too, same category as thermograph-copy's deferred # vendoring. # # workflow_call added alongside `dev` on both push/pull_request filters # (dev-branch flow, mirroring the monorepo's build.yml): pr-build.yml (PRs # into dev) and deploy-dev.yml (pushes to dev) both `uses:` this file as # their shared build gate, same build-only behavior either way -- direct # push/PR-to-main triggers are unchanged. on: push: branches: [main, dev] pull_request: branches: [main, dev] workflow_call: {} jobs: build: runs-on: docker steps: - uses: actions/checkout@v4 - name: Install Docker CLI run: | apt-get update -qq apt-get install -y -qq docker.io - name: Build run: docker build -t thermograph-frontend:ci . # Run the hermetic unit tier INSIDE the image we just built (it ships # tests/ + all runtime deps via COPY . /app/): fixture-backed rendering # tests, no backend, no network. The integration tier # (tests/integration/, needs a live backend container) stays a local # `make`/scripts concern -- see scripts/backend-for-tests.sh. # requirements-dev.txt only layers pytest on top, so the install is tiny. # -u 0: the image's default user can't write to site-packages. # unset THERMOGRAPH_BASE: the image bakes the prod root-mount; the tests # expect the app default (/thermograph), same rationale as the backend. - name: Run unit tests in the built image run: | docker run --rm -u 0 thermograph-frontend:ci \ sh -c "unset THERMOGRAPH_BASE; pip install -q --no-cache-dir pytest==8.4.1 && python -m pytest tests/unit -q"