Aller au contenu principal

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) :

  1. Vérifier que la dernière sauvegarde existe (voir Sauvegarde).

  2. Lister les migrations qui vont s'appliquer :

    docker exec -u www-data pch_backend php bin/console doctrine:migrations:status
  3. 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 update sur le poste de développement, tests, puis déploiement ; composer.lock est commité.
  • Frontend : npm install --legacy-peer-deps (les dépendances l'exigent) ; vérifier npx tsc --noEmit, les tests Jest et npm run build avant 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.