Files
Ressources-relationnel/docs/02-plan-de-deploiement.md
sam e5e6f72f92
CD - Déploiement continu / deploy (push) Successful in 6m44s
CI - Intégration continue / quality-and-tests (push) Failing after 2m30s
Sécurisation, déploiement CI/CD Gitea et documentation INFCDAAL3
- 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>
2026-07-06 11:09:34 +02:00

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 :

  1. Conteneurisation (Docker) pour un environnement reproductible.
  2. Gestion de version (Gitea) comme source unique de vérité.
  3. 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 .env distinct (jamais versionné). Seul .env.example est 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 :

  1. Récupération du code.
  2. Installation de PHP 8.2 et des extensions.
  3. Installation des dépendances Composer (avec cache).
  4. Vérification du style de code : vendor/bin/pint --test.
  5. 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 :

  1. git pull origin master — récupération de la nouvelle version.
  2. docker compose up -d --build — reconstruction des conteneurs.
  3. php artisan migrate --force — application des migrations de base.
  4. config:cache, route:cache, view:cache — optimisations de production.
  5. 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 revert ou 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 /up exposé par Laravel (voir bootstrap/app.php).
  • Journaux : storage/logs/laravel.log + logs des conteneurs Docker.
  • Historique des déploiements : onglet Actions de Gitea.