Common CI Failures Reference
1. Database Readiness Race Condition
- Symptom:
ConnectionRefusedError: [Errno 111]
- Root Cause: Web application container starts before PostgreSQL is ready to accept connections.
- Fix: Use Docker Compose
condition: service_healthy or an explicit wait loop (pg_isready).
2. Missing Environment Variables
- Symptom:
KeyError: 'DATABASE_URL'
- Root Cause: Environment variable specified in
.env is omitted in CI workflow file (.github/workflows/ci.yml).
- Fix: Declare default fallback in configuration or pass test env vars in CI step.
3. Unapplied Database Migrations
- Symptom:
UndefinedTable: relation "users" does not exist
- Root Cause: CI runner did not execute migration command prior to test execution.
- Fix: Add migration target (
docker compose run --rm backend alembic upgrade head) to CI pipeline.