boot-labs.js drives the real admin Prepare-Labs endpoint (reusing the existing session-helper.js from Phase 3A) and records boot time/failure rate; sample-resources.sh samples real docker stats for running Labs. capacity-model.js turns measured per-Lab CPU/memory into a recommended/ warning/hard-admission-control concurrency threshold - no concurrency number is hardcoded as a marketing figure, every input is explicitly placeholder data until measured against the real host. Plus deploy/rollback/smoke-test scripts used by the CI/CD and deployment runbooks. All syntax-checked; validate-compose.sh and capacity-model.js actually run against real inputs.
27 lines
1.3 KiB
Bash
Executable File
27 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Production post-deploy smoke test — deliberately read-only/non-destructive (never creates
|
|
# real students/cohorts against production data). Confirms the deployed services are actually
|
|
# up after a deploy/rollback, before calling the deploy "done."
|
|
set -euo pipefail
|
|
|
|
PROD_URL="${PRODUCTION_URL:?set PRODUCTION_URL, e.g. https://academy.example.com}"
|
|
|
|
echo "==> Gateway health"
|
|
curl -sf "$PROD_URL/healthz" > /dev/null && echo "OK"
|
|
|
|
echo "==> TLS certificate is valid and not expiring soon"
|
|
EXPIRY=$(echo | openssl s_client -connect "$(echo "$PROD_URL" | sed -e 's#https://##')":443 -servername "$(echo "$PROD_URL" | sed -e 's#https://##')" 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
|
|
echo "Certificate expires: $EXPIRY"
|
|
|
|
echo "==> Roster endpoint responds (public, unauthenticated, read-only)"
|
|
curl -sf "$PROD_URL/api/roster/cohorts" > /dev/null && echo "OK"
|
|
|
|
echo "==> Admin login page loads (does not attempt to log in)"
|
|
curl -sf "$PROD_URL/admin" -o /dev/null -w '%{http_code}\n' | grep -q 200 && echo "OK"
|
|
|
|
echo
|
|
echo "OK: production smoke test passed. For a full functional check (owner/instructor login,"
|
|
echo "cohort, Prepare Labs, student flow, assessment, Capstone), work through"
|
|
echo "docs/PRODUCTION_VALIDATION_CHECKLIST.md's ACADEMY section manually — deliberately not"
|
|
echo "automated against real production data."
|