feat(sdlc): staging environment + automated staging→prod pipeline #2

Merged
tudor merged 1 commits from feat/sdlc-staging-pipeline into main 2026-07-03 06:17:40 +00:00
Owner

Introduces the staging→prod SDLC: PR checks (typecheck, tests, builds, Claude AI review), build-once/promote-image deploys gated by Playwright E2E journeys on staging, staging Portainer stack seeded via Airflow, prod pinned to :prod with :prod-previous rollback. One-time setup checklist in docs/DEPLOY.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PqGhF93UrpDNvXBLMjJENL

Introduces the staging→prod SDLC: PR checks (typecheck, tests, builds, Claude AI review), build-once/promote-image deploys gated by Playwright E2E journeys on staging, staging Portainer stack seeded via Airflow, prod pinned to :prod with :prod-previous rollback. One-time setup checklist in docs/DEPLOY.md. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01PqGhF93UrpDNvXBLMjJENL
tudor added 1 commit 2026-07-03 06:17:12 +00:00
feat(sdlc): staging environment + automated staging→prod pipeline
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 10m0s
PR Checks / Backend Smoke (pull_request) Successful in 48s
PR Checks / Build Backend (no push) (pull_request) Successful in 17s
PR Checks / Build Frontend (no push) (pull_request) Successful in 41s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 10s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 24s
4a52735356
- pr-checks.yml: PR gate — frontend typecheck+jest, backend import smoke,
  image builds (no push), Claude AI review posted as PR comment (severe
  findings block merge)
- deploy.yml (replaces build-and-push.yml): merge to main builds+pushes
  images tagged sha-<sha>/staging, deploys the staging Portainer stack via
  webhook, runs Playwright E2E journeys against staging, then retags the
  verified images :prod (previous kept as :prod-previous) and deploys prod
- docker-compose.portainer.staging.yml: second Portainer stack — :staging
  images, sc_staging_* names, own macvlan IPs, Airflow on 8081; data
  bootstrapped from source via the staging Airflow DAGs
- prod compose now pins :prod instead of :latest (only the promotion step
  moves it; :latest is no longer published)
- e2e/: 6 Playwright journeys (search, postcode, detail, compare, rankings)
  driven by BASE_URL — the promotion gate
- scripts/ci/ai_review.py: Claude review with structured JSON findings
- docs/DEPLOY.md: full SDLC doc incl. one-time setup checklist and rollback
- replaced removed 'next lint' with tsc typecheck; fixed stale jest tests
  (slug URLs, N/A formatting, stable trend, fake-timer setup)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PqGhF93UrpDNvXBLMjJENL
tudor merged commit df0bf1c4d6 into main 2026-07-03 06:17:40 +00:00
tudor deleted branch feat/sdlc-staging-pipeline 2026-07-03 06:17:40 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tudor/school_compare#2