Rapatrie l'environnement dev à la demande (#151) et l'en-tête CORP (#149). - deploy.yml : garde le routage de #151 (main vers prod, dev vers rec, toute autre branche vers dev) et l'appel par ci.yml après « CI ok ». Le groupe concurrency par environnement cède la place au flock sur le dossier, qui sérialise aussi deux branches lancées dans dev. La garde anti-recul ne joue que sur la même branche : dans dev, une autre branche que celle en place est toujours déployée. - provision-host.sh : le dossier dev reçoit aussi les clés de supervision, profil inactif, ports 3003, 9092 et 9095. - 10-infra.md, 50-cicd.md et ADR 0017 : trois environnements, supervision et verrou flock.
3.0 KiB
0017 - Un troisième environnement, dev, déployé à la demande depuis n'importe quelle branche
- Statut : accepté
- Date : 2026-09-23
Contexte
L'ADR 0009 a posé deux environnements sur
la VM ENI : la recette suit dev, la production suit main. Les environnements GitHub en
comptent trois, dev, rec et prod, et le troisième ne déployait rien.
Il manque un endroit où montrer une branche de travail avant son merge : la recette ne doit
porter que ce qui est intégré à dev, sinon elle cesse d'être une recette. Un
workflow_dispatch sur une branche de travail envoyait d'ailleurs cette branche dans la
recette, puisque tout ce qui n'était pas main y partait.
La VM est passée à 32 Go : une troisième TimescaleDB, réglée à 2 Go comme les deux autres, tient sans peine.
Décision
Un troisième projet Compose, enervision-dev, dans /srv/enervision/dev, bâti exactement
comme les deux autres : son clone, son .env, son certificat, préparés par
scripts/provision-host.sh.
Déployé à la demande, jamais sur un push. deploy.yml envoie main en prod, dev en
recette, et toute autre branche lancée depuis l'onglet Actions dans dev. Seul un membre ayant
le droit d'écriture sur le dépôt peut lancer un workflow.
Ports décalés d'un cran de plus : HTTPS 9443, et sur 127.0.0.1 la redirection HTTP
8083, PostgreSQL 5435, Mailpit 8027, Airflow 8084. Nom d'hôte dev.enervision.local,
pour la même raison de cookie que la recette.
Le verrou de déploiement suit l'environnement (un flock sur son dossier, ADR 0014), et non
plus la branche : deux branches lancées coup sur coup écriraient sinon dans le même dossier en
même temps.
Alternatives écartées
devsuit la branchedevà chaque push, la recette devient manuelle : la recette offrirait une version figée au jury, mais la doc CI/CD, l'ADR 0009 et l'habitude de l'équipe basculeraient à deux jours du rendu.- Un environnement par branche de travail : un projet Compose et une TimescaleDB par branche, sans mécanisme de nettoyage. La machine ne le porterait pas longtemps.
- Garder
devsur les postes seulement : rien à montrer d'une branche non mergée sans passer par la recette.
Conséquences
- Une branche de travail créée avant ce changement porte l'ancien
deploy.yml: lancée à la main, elle part encore dans la recette. Limiter l'environnement GitHubrecà la branchedevferme ce chemin, réglage que seul un administrateur du dépôt peut poser. devne garde aucune donnée d'une branche à l'autre au-delà de ce que ses migrations acceptent : une branche dont les migrations divergent dedevpeut laisser la base dans un état que la suivante refuse. Recréer le volume,docker compose down -v, est alors le remède.- Trois environnements construisent leurs images séparément : l'écart de l'ADR 0009, un même commit construit deux fois, reste ouvert jusqu'au passage à GHCR.