- CI/CD Gitea Actions: ci.yml (Pint + PHPUnit), deploy.yml (déploiement SSH) - Suppression de l'ancien workflow GitHub cassé - En-têtes de sécurité: ajout CSP et Permissions-Policy - RGPD: droit à l'effacement (anonymisation du compte) + tests - Correctifs: ForceHttps hors env testing, timestamps du modèle Utilisateur, suppression des migrations en doublon (migrate échouait sur base neuve) - Qualité: formatage Laravel Pint sur l'ensemble du code - Documentation dossier technique (docs/) + .docx + .pptx Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.8 KiB
02 — Plan de déploiement
Projet (RE)Sources Relationnelles — Bloc INFCDAAL3
1. Stratégie de déploiement
Le déploiement repose sur trois piliers :
- Conteneurisation (Docker) pour un environnement reproductible.
- Gestion de version (Gitea) comme source unique de vérité.
- Intégration et déploiement continus (Gitea Actions) pour automatiser qualité, tests et mise en production.
Approche retenue : à chaque push sur master, la CI valide le code
(qualité + tests) ; si tout est vert, le déploiement se déclenche automatiquement
sur le serveur.
2. Environnements
| Environnement | Rôle | Hébergement |
|---|---|---|
| Local (dev) | Développement sur le poste | Docker / php artisan serve |
| Test (CI) | Exécution automatisée des tests | Runner Gitea Actions (base SQLite en mémoire) |
| Pré-production (QA) (recommandé) | Recette avant mise en ligne | Conteneurs Docker, base dédiée |
| Production | Service ouvert aux citoyens | Serveur app.sam-coffre.duckdns.org |
La configuration de chaque environnement est portée par un fichier
.envdistinct (jamais versionné). Seul.env.exampleest présent dans le dépôt.
3. Architecture de déploiement
Internet (HTTPS)
│
▼
┌───────────────────────────┐
│ Nginx (conteneur web) │ :443 TLS / redirection 80→443
│ laravel_web │
└─────────────┬─────────────┘
│ FastCGI :9000
▼
┌───────────────────────────┐
│ PHP-FPM (conteneur app) │ Laravel 12
│ laravel_php │
└─────────────┬─────────────┘
│
▼
Base de données MySQL
Fichiers concernés : Dockerfile (image PHP), docker-compose.yml
(orchestration), nginx.conf (reverse proxy / TLS).
4. Pipeline d'intégration et de déploiement continus (CI/CD)
4.1 Intégration continue — .gitea/workflows/ci.yml
Déclenchée sur chaque push et chaque pull_request vers master :
- Récupération du code.
- Installation de PHP 8.2 et des extensions.
- Installation des dépendances Composer (avec cache).
- Vérification du style de code :
vendor/bin/pint --test. - Exécution des tests :
php artisan test(PHPUnit).
4.2 Déploiement continu — .gitea/workflows/deploy.yml
Déclenché sur push vers master, il se connecte en SSH au serveur et exécute :
git pull origin master— récupération de la nouvelle version.docker compose up -d --build— reconstruction des conteneurs.php artisan migrate --force— application des migrations de base.config:cache,route:cache,view:cache— optimisations de production.- Correction des permissions (
storage,bootstrap/cache).
Secrets Gitea requis (Settings → Actions → Secrets) : SSH_HOST,
SSH_USER, SSH_PRIVATE_KEY, SSH_PORT.
Prérequis : un runner Gitea Actions doit être enregistré sur l'instance (
https://gitea.sam-coffre.duckdns.org/) et les Actions activées pour le dépôt.
5. Plan de déploiement détaillé (étapes, ressources, responsables)
| # | Étape | Ressource / Outil | Responsable | Automatisé ? |
|---|---|---|---|---|
| 1 | Développement + commit | Git / Gitea | Développeur | Non |
| 2 | Push sur master |
Gitea | Développeur | Non |
| 3 | Contrôle qualité (Pint) | Gitea Actions | Runner CI | ✅ Oui |
| 4 | Tests automatisés (PHPUnit) | Gitea Actions | Runner CI | ✅ Oui |
| 5 | Connexion au serveur | SSH | Runner CD | ✅ Oui |
| 6 | Récupération du code | Git | Serveur | ✅ Oui |
| 7 | Build des conteneurs | Docker Compose | Serveur | ✅ Oui |
| 8 | Migrations BDD | Artisan | Serveur | ✅ Oui |
| 9 | Mise en cache config/routes/vues | Artisan | Serveur | ✅ Oui |
| 10 | Vérification post-déploiement | Endpoint /up (health check) |
Équipe | Semi |
6. Retour arrière (rollback)
En cas de problème après un déploiement :
- Code :
git revertou retour à un tag précédent, puis nouveau déploiement. - Base de données :
php artisan migrate:rollback(migrations réversibles). - Conteneurs : redéploiement de l'image précédente via
docker compose.
7. Supervision
- Health check : endpoint
/upexposé par Laravel (voirbootstrap/app.php). - Journaux :
storage/logs/laravel.log+ logs des conteneurs Docker. - Historique des déploiements : onglet Actions de Gitea.