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
- Lance un service PostgreSQL 16 (
postgres:16) avec une basedmv_test. - Configure PHP 8.4 avec l'extension
pdo_pgsql. - Génère un
APP_KEYde test. - Installe les dépendances Composer.
- Exécute
php artisan migrate --forcesur la base de test. - 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)
- Connexion SSH au VPS via
appleboy/ssh-action. git pull origin main.composer install --no-dev.- Mode maintenance activé.
php artisan migrate --force.- Reconstruction des caches Laravel (
config,route,view,event). - Rechargement OPcache (
systemctl reload php8.4-fpm). - Redémarrage des workers Supervisor (
dmv-api-worker:). - Mode maintenance désactivé.
Secrets GitHub requis : SSH_HOST, SSH_PRIVATE_KEY.
Pipeline cible minimal
| Étape | Backend Laravel | Frontends |
|---|---|---|
| Installation | composer install | npm ci ou équivalent verrouillé. |
| Qualité | Pint, analyse ciblée si configurée. | ESLint. |
| Tests | PHPUnit / tests Laravel. | Tests frontend si présents. |
| Build | Cache config/routes si pertinent. | next build, vite build. |
| Artefact | Release ou code déployable. | Build statique ou app Node selon cible. |
| Déploiement | Script 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.