Aller au contenu principal

Mise à Jour

Ce guide explique comment mettre à jour PCH-SIG vers une nouvelle version.

Préparation

Vérifier la version actuelle

# Version backend
docker exec pch_backend php bin/console --version

# Version frontend (dans package.json)
cat frontend/package.json | grep version

Sauvegarder avant mise à jour

Important

Toujours effectuer une sauvegarde complète avant toute mise à jour.

# Sauvegarde rapide
docker exec pch_postgres pg_dump -U pch_admin pch_sig > backup_avant_maj.sql

Mise à jour du Frontend

Étape 1 : Récupérer les modifications

cd frontend

# Récupérer les dernières modifications
git pull origin main

# Installer les nouvelles dépendances
npm install

Étape 2 : Build de production

npm run build

Étape 3 : Déployer sur le serveur

# Créer la session PowerShell
$cred = Get-Credential
$session = New-PSSession -ComputerName $SERVER_IP -Credential $cred

# Copier le build
Copy-Item -Path ".\build\*" -Destination "C:\pch-sig\frontend\build" -ToSession $session -Recurse -Force

# Redémarrer le conteneur
Invoke-Command -Session $session -ScriptBlock {
docker-machine ssh default "docker restart pch_frontend"
}

Remove-PSSession $session

Étape 4 : Mettre à jour le Service Worker

Incrémenter la version du cache dans frontend/public/service-worker.js :

// Avant
const CACHE_NAME = 'pch-sig-cache-v2';

// Après
const CACHE_NAME = 'pch-sig-cache-v3';

Mise à jour du Backend

Étape 1 : Récupérer les modifications

cd backend

# Récupérer les dernières modifications
git pull origin main

# Installer les dépendances
composer install --no-dev --optimize-autoloader

Étape 2 : Exécuter les migrations

# Vérifier les migrations en attente
php bin/console doctrine:migrations:status

# Exécuter les migrations
php bin/console doctrine:migrations:migrate --no-interaction

Étape 3 : Vider le cache

php bin/console cache:clear --env=prod
php bin/console cache:warmup --env=prod

Étape 4 : Déployer sur le serveur

# Copier les fichiers backend
Copy-Item -Path ".\src\*" -Destination "C:\pch-sig\backend\src" -ToSession $session -Recurse -Force
Copy-Item -Path ".\config\*" -Destination "C:\pch-sig\backend\config" -ToSession $session -Recurse -Force

# Exécuter les migrations sur le serveur
Invoke-Command -Session $session -ScriptBlock {
docker exec pch_backend php bin/console doctrine:migrations:migrate --no-interaction
docker exec pch_backend php bin/console cache:clear --env=prod
}

Mise à jour des Conteneurs Docker

Mettre à jour les images

cd deploy

# Télécharger les nouvelles images
docker compose pull

# Redémarrer avec les nouvelles images
docker compose up -d

Reconstruire une image personnalisée

Si vous avez modifié un Dockerfile :

# Reconstruire l'image backend
docker compose build backend

# Redémarrer le conteneur
docker compose up -d backend

Gestion des Migrations de Base de Données

Vérifier l'état des migrations

docker exec pch_backend php bin/console doctrine:migrations:status

Créer une nouvelle migration

docker exec pch_backend php bin/console make:migration

Annuler la dernière migration

docker exec pch_backend php bin/console doctrine:migrations:migrate prev

Exécuter une migration spécifique

docker exec pch_backend php bin/console doctrine:migrations:execute 'DoctrineMigrations\Version20240115120000' --up

Rollback en cas de problème

Restaurer le frontend

# Les backups sont dans C:\pch-sig\backups\
Copy-Item -Path "C:\pch-sig\backups\frontend-YYYYMMDD\*" -Destination "C:\pch-sig\frontend\build" -Recurse -Force

docker restart pch_frontend

Restaurer le backend

# Revenir à la version précédente du code
git checkout HEAD~1

# Annuler les migrations
docker exec pch_backend php bin/console doctrine:migrations:migrate prev

Restaurer la base de données

# Restaurer depuis la sauvegarde
docker exec -i pch_postgres psql -U pch_admin -d pch_sig < backup_avant_maj.sql

Mises à jour majeures

Changement de version PHP

  1. Mettre à jour l'image dans docker-compose.yml
  2. Vérifier la compatibilité des dépendances Composer
  3. Tester en environnement de développement
  4. Déployer en production

Changement de version PostgreSQL

  1. Exporter toutes les données
  2. Arrêter l'ancien conteneur
  3. Mettre à jour l'image
  4. Restaurer les données
# Export complet
docker exec pch_postgres pg_dumpall -U pch_admin > full_backup.sql

# Mettre à jour et restaurer
docker compose down postgres
# Modifier la version dans docker-compose.yml
docker compose up -d postgres
docker exec -i pch_postgres psql -U pch_admin < full_backup.sql

Checklist de mise à jour

  • Sauvegarder la base de données
  • Sauvegarder les fichiers de configuration
  • Noter la version actuelle
  • Récupérer les modifications (git pull)
  • Installer les dépendances
  • Exécuter les migrations
  • Vider le cache
  • Déployer sur le serveur
  • Tester l'application
  • Mettre à jour la version du Service Worker
  • Informer les utilisateurs

Prochaines étapes