Q: You have integration tests that require a database. How do you run them in CI without setting up a real database server?
Use service containers in CI:
#CI/CD #Testing in CI #L2 #DevOps #Automation #Pipelines
🎙️ Candidate Opening & Architectural Context
""In enterprise CI/CD, you cannot rely on manual interventions; every rollback and promotion must be declarative. When addressing this question, I walk the interviewer through our production incident runbook: isolating the blast radius, checking diagnostic logs and metrics, and applying a safe fix.""
Advertisement
🛠️ Production Runbook & Step-by-Step Resolution
1️⃣
Production Solution & Architecture
Use service containers in CI: GitHub Actions: GitLab CI: The database container runs alongside the test job, accessible at localhost. No external DB needed.
services:
postgres:
image: postgres:15
env:
POSTGRES_PASSWORD: testpass
POSTGRES_DB: testdb
options: >-
--health-cmd pg_isready
--health-interval 10s
steps:
- name: Run tests
env:
DATABASE_URL: postgres://postgres:testpass@localhost/testdb
run: pytest tests/integration/
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Use service containers in CI:."
⚡ 60-Second Elevator Pitch Talking Points
- Immediate Triage: Use service containers in CI:
- Run targeted verification commands before modifying configuration.
- Automate permanent guardrails (CI check, alerts, IaC policy) to prevent recurrence.
Advertisement