Sprint 0 â Fondations & CI/CD de base
Mise en place GitLab, Docker, Alembic. Les fondations sont fragiles. đ
INC-001 â Variable GitLab CI Protected sur feature branch
Contexte : Pipeline test stage
SymptĂŽme :
pydantic_core.ValidationError: SECRET_KEY Field required
Cause :
Variable GitLab CI marquée "Protected"
Feature branch non protĂ©gĂ©e â variable non injectĂ©e
Fix :
Settings â CI/CD â Variables â SECRET_KEY
Protected : â â Masked : â
Leçon :
Protected = injecté uniquement sur branches protégées (main, develop)
Masked = cache la valeur dans les logs â suffisant pour la sĂ©curitĂ©
RĂšgle : CI/CD variables â Masked uniquement sauf secrets production
INC-002 â Pydantic BaseSettings prioritĂ© .env vs variables d'environnement
Contexte : Docker Compose networking
SymptĂŽme :
Connection refused: localhost:5432
Cause :
Pydantic BaseSettings lit le fichier .env en priorité
DB_HOSTNAME=localhost dans .env écrase DB_HOSTNAME=db injecté par Docker
Fix :
# Créer un fichier .env.docker séparé
DB_HOSTNAME=db # nom du service Docker Compose
Leçon :
Pydantic BaseSettings priorité :
1. Variables d'environnement (haute)
2. Fichier .env (basse par défaut)
â En dev Docker : utiliser .env.docker
â En CI/CD : pas de fichier .env (variables injectĂ©es)
INC-003 â Migration Alembic dupliquĂ©e
Contexte : Démarrage de l'application
SymptĂŽme :
sqlalchemy.exc.ProgrammingError: DuplicateTable relation "users" already exists
Cause :
Migration c9e6377cb51d_new_migration.py recréait des tables
déjà créées par les migrations précédentes
Fix :
# Identifier et supprimer la migration problématique
rm alembic/versions/c9e6377cb51d_new_migration.py
Leçon :
Toujours vérifier l'historique Alembic avant d'ajouter une migration
alembic history --verbose
Ne jamais créer une migration qui recrée des tables existantes
đ RĂ©sumĂ© Sprint 0
- 3 incidents : Variables, Networking, Database
- Clé : Comprendre les priorités (Protected vs Masked, .env vs env vars)
- DurĂ©e de fix : ~5-10 min chacun (quand on sait đ )
â Voir Sprint 1