Mise à Jour
Mettre à jour l'application
Une mise à jour de Bemba est un déploiement : préproduction (staging), test à l'écran, puis production (main).
Avant une mise à jour qui touche la base (nouvelles migrations) :
-
Vérifier que la dernière sauvegarde existe (voir Sauvegarde).
-
Lister les migrations qui vont s'appliquer :
docker exec -u www-data pch_backend php bin/console doctrine:migrations:status -
Déployer d'abord en préproduction et y vérifier les écrans touchés.
Les migrations sont jouées automatiquement au démarrage du nouveau conteneur backend. Une migration qui échoue empêche le démarrage : lire docker logs pch_backend.
Revenir en arrière
- Frontend, documentation : redéployer le build de la version précédente (reconstruit depuis le commit voulu).
- Backend sans migration : redéployer l'archive du commit précédent.
- Backend avec migration : la plupart des migrations de données ne sont pas réversibles ; restaurer la base (voir Restauration) puis redéployer l'ancienne version. D'où l'importance de tester en préproduction.
Mettre à jour les images Docker
cd ~/pch-sig
docker compose -f docker-compose.prod.yml pull # images publiques (nginx, postgres, redis, traefik…)
docker compose -f docker-compose.prod.yml build --pull backend
docker compose -f docker-compose.prod.yml up -d
docker image prune -f
- PostgreSQL : un changement de version majeure (15 → 16) exige un export/import ; ne jamais changer l'étiquette de l'image sans plan de migration.
- Traefik : lire les notes de version avant un changement de version majeure.
Dépendances du code
- Backend :
composer updatesur le poste de développement, tests, puis déploiement ;composer.lockest commité. - Frontend :
npm install --legacy-peer-deps(les dépendances l'exigent) ; vérifiernpx tsc --noEmit, les tests Jest etnpm run buildavant de commiter.
Système
sudo apt update && sudo apt upgrade -y
sudo reboot # si le noyau a changé ; voir Démarrage automatique
Les mises à jour de sécurité sont appliquées automatiquement (unattended-upgrades).
Services de la préproduction
- KoboToolbox : par
~/kobo-install(python3 run.py --update), voir KoboToolbox auto-hébergé. - GitLab :
docker compose -f ~/gitlab/docker-compose.yml pull && … up -d, en respectant le chemin de montée de version de GitLab ; sauvegarde (gitlab-backup create) avant.