ADR 0044 – Déploiement continu
Statut : Décidée. Date : 03/10/2026. Complète l’ADR 0028. Modifie l’ADR 0013 : qui exécute les migrations.
Contexte
Section intitulée « Contexte »Le dépôt n’avait qu’une intégration continue. L’ADR 0028 fixe la cible (API sur Kubernetes, frontends en fichiers statiques sur Cloudflare) sans dire comment on y livre. L’équipe exploite déjà cette chaîne sur d’autres projets : la reprendre évite d’en maintenir deux.
Décision
Section intitulée « Décision »- Branches :
developlivre en QA,mainlivre en production. Les branches de séquence partent dedevelop. - API : image construite par
apps/api/Dockerfile, poussée sur le registre, déployée parhelm upgrade --installavec le chartinfra/charts/biotrace-api. En QA l’étiquette estv<version>-SNAPSHOT, en productionv<version>(version deapps/api/package.json, incrémentée après chaque mise en production). - Migrations : un job du pipeline (
migrations) lancedbmate migratedepuis le runner, avec leDATABASE_URLde l’environnement GitHub, avanthelm upgrade. Un échec arrête le déploiement. L’image de l’API ne contient ni dbmate ni les migrations, et le rôle des migrations n’entre jamais dans le cluster (EC-032). - Frontends : back-office, documentation et build web du terrain sur Cloudflare Pages, un projet par application ; seules les applications touchées sont reconstruites (Turborepo).
- Configuration : variables et secrets dans les environnements GitHub
staging(QA) etproduction. Le pipeline en fait un ConfigMap et un Secret Kubernetes pour l’API.
Alternatives écartées
Section intitulée « Alternatives écartées »- Valeurs dans un dépôt de déploiement séparé (pratique des autres projets) : un dépôt et un jeton de plus, et des mots de passe en clair dans git.
- Migrations par un Job Kubernetes lancé par Helm (ADR 0013 d’origine) : il oblige à embarquer dbmate et les migrations dans l’image de l’API, et à confier au cluster le rôle des migrations.
- Manifestes bruts ou Kustomize : pas de notion de version déployée.
- GitOps (Argo CD, Flux) : un composant de plus sur le cluster, sans besoin avéré à ce stade.
Conséquences
Section intitulée « Conséquences »Deux outils de plus dans la chaîne : Helm et wrangler. Les valeurs d’un environnement ne sont pas relues dans git : la liste des variables et secrets attendus est tenue dans infra/README.md. La base doit être joignable depuis le runner du pipeline : son exposition réseau est à maîtriser (adresse filtrée, TLS). Le back-office et l’API ont deux origines : l’API gère le CORS (EC-080).
Stratégie de sortie
Section intitulée « Stratégie de sortie »Le chart ne produit que des objets Kubernetes standard : helm template les donne tels quels à un autre outil. Les frontends sont des fichiers statiques, déployables chez tout hébergeur.