Aller au contenu principal

CI/CD

Statut

Document de cadrage DevOps — version initiale — v1.0 — relu le 2026-05-11.

Objectif

La CI/CD DMV doit sécuriser les changements sans créer une chaîne de déploiement trop complexe.

La priorité est de tester, construire, livrer et pouvoir revenir en arrière de manière fiable.

État actuel — Pipeline opérationnel

Le workflow GitHub Actions .github/workflows/deploy.yml est actif sur la branche main.

Il comporte deux jobs :

Job test

  1. Lance un service PostgreSQL 16 (postgres:16) avec une base dmv_test.
  2. Configure PHP 8.4 avec l'extension pdo_pgsql.
  3. Génère un APP_KEY de test.
  4. Installe les dépendances Composer.
  5. Exécute php artisan migrate --force sur la base de test.
  6. Exécute php artisan test.

Variables d'environnement injectées : DB_CONNECTION=pgsql, DB_HOST=127.0.0.1, DB_SSLMODE=disable.

Job deploy (conditionné à test)

  1. Connexion SSH au VPS via appleboy/ssh-action.
  2. git pull origin main.
  3. composer install --no-dev.
  4. Mode maintenance activé.
  5. php artisan migrate --force.
  6. Reconstruction des caches Laravel (config, route, view, event).
  7. Rechargement OPcache (systemctl reload php8.4-fpm).
  8. Redémarrage des workers Supervisor (dmv-api-worker:).
  9. Mode maintenance désactivé.

Secrets GitHub requis : SSH_HOST, SSH_PRIVATE_KEY.

Pipeline cible minimal

ÉtapeBackend LaravelFrontends
Installationcomposer installnpm ci ou équivalent verrouillé.
QualitéPint, analyse ciblée si configurée.ESLint.
TestsPHPUnit / tests Laravel.Tests frontend si présents.
BuildCache config/routes si pertinent.next build, vite build.
ArtefactRelease ou code déployable.Build statique ou app Node selon cible.
DéploiementScript contrôlé.Plateforme frontend retenue.

Environnements de pipeline

La CI/CD cible doit distinguer :

  • pull request ;
  • branche de développement ;
  • staging ;
  • production ;
  • hotfix.

Principes

  • Ne pas déployer si les tests critiques échouent.
  • Ne pas exposer les secrets dans les logs.
  • Ne pas exécuter de migrations destructrices sans procédure.
  • Garder les déploiements traçables.
  • Commencer avec un pipeline simple.
  • Éviter les outils multiples pour le même objectif.

Points restants à clarifier

  • Déploiement automatisé des frontends (dmv-public, dmv-backoffice).
  • Validation manuelle avant promotion en production.
  • Stratégie de rollback automatisée.
  • Pipeline de staging distinct.