Aller au contenu

ADR : Workflow Git/CI Apps TS — main = prod + environnement de preview par PR

Contexte

Sur l’Apps TS liée à l’outil d’analyse (DB Neon), le flux actuel mélange main (prod) et une branche / env de préprod (development). Les contributeurs poussent souvent vers la préprod pour tester. Un écart se creuse avec main. En parallèle, l’historique Drizzle n’est plus fiable : certaines évolutions de schéma passent par des requêtes SQL directes. Ce fonctionnement ralentit les développements et a déjà provoqué des incidents de migration en production. (update sujets build 06/08)

Options envisagées

Option A — Continuer préprod partagée + rattrapage Drizzle « au fil de l’eau »

  • Avantages : pas de setup CI immédiat.
  • Inconvénients : une seule préprod pour N personnes ; écart main ↔ préprod récurrent ; migrations hors process ; pas de rollback propre après merge.

Option B — Modèle déjà en place côté monorepo tech (Denis) : preview par PR

  • Description : main = prod ; chaque feature part d’une branche + PR ; Railway déploie un env par PR ; Neon branching pour une DB isolée ; CI (tests, Bugbot, migrations à jour) bloque le merge si rouge ; merge PR → prod.
  • Avantages : parallélisme sans s’écraser ; conflits résolus sur la branche ; un seul chemin vers la prod ; aligné sur le monorepo existant (réutilisable comme référence).
  • Inconvénients : setup CI / GitHub / Railway à faire ; changement d’habitudes (plus de « je merge pour tester ») ; memories IA à purger.

Option C — Tout tester en local uniquement

  • Inconvénients : l’équipe ne tourne presque jamais l’app en local (dépendances API) ; ne résout pas le besoin de preview partageable.

Décision

Option retenue : B.

Compléments actés le même jour :

  1. Reset Drizzle : partir de l’état actuel comme migration initiale ; ne pas reconstruire l’historique manquant.
  2. Périmètre d’écriture DB Apps TS : Romain + Jérôme ; Dimitri reste sur le repo analyse et échange via endpoints.
  3. Livrables de démarrage : one-pager + plan (Romain, review Denis/Alban) ; reset migrations (Romain) ; purge des memories Cursor qui poussent sur main.
  4. Fenêtre : maintenant, tant que main / préprod sont relativement resynchro et que l’équipe est en prise de hauteur plutôt qu’en rafale de micro-fix.

Conséquences

  • La branche / env de préprod partagée cesse d’être le chemin nominal de test.
  • L’ADR-017 legacy devient historique pour l’Apps TS.
  • Toute évolution de schéma passe par une migration versionnée, appliquée via le process CI.
  • Jérôme doit être aligné via le one-pager avant de continuer à toucher la DB.
  • Si le plan IA de Romain coince sur les settings GitHub/Railway, Denis peut reprendre le setup.

Hors-scope

  • Généralisation immédiate à tous les repos Bricks (le pattern existe déjà côté monorepo ; ici on l’applique à Apps TS / outil d’analyse).
  • Choix d’outil de design / pipeline produit d’Alban (débat build vs buy, non tranché).

Sources