PROD: Revenir à une version précédente

Dans le cas d’une catastrophe en production, il est parfois nécessaire de revenir à la version précédente. Suivez les étapes ci-dessous pour revenir à la version précédente

Rollback des interfaces

Prérequis

  • Prévenir l’équipe du problème de prod et du rollback à venir sur Mattermost

  • Voir avec l’administrateur des données (Christian) si des modifications récentes sont à sauvegarder avant la restauration de la base de données

  • Tester la procédure de rollback ci-dessous en preprod avant de l’appliquer en production

Rollback du code

  • Vérifier le tag de version précédente sur la page des releases github

  • Pousser le tag de la version précédente en production

git remote add prod-interface git@ssh.osc-fr1.scalingo.com:quefairedemesobjets.git
git push -f prod-interface <TAG>:master

Base de données

Restaurer la base de données avec la sauvegarde souhaitée (géréralement, la sauvegarde juste avant l’incident)

  • Copier de la sauvegarde de la base de données localement à partir de l”interface Scalingo

  • Déclarer les variables d’environnements ci-dessous et éxécuter la commande de restauration

DUMP_FILE=20241216001128_quefairedem_5084.tar.gz
DATABASE_URL=<Copie from scalingo env variable SCALINGO_POSTGRESQL_URL>
for table in $(psql "${DATABASE_URL}" -t -c "SELECT \"tablename\" FROM pg_tables WHERE schemaname='public'"); do
     psql "${DATABASE_URL}" -c "DROP TABLE IF EXISTS \"${table}\" CASCADE;"
done
pg_restore -d "${DATABASE_URL}" --clean --no-acl --no-owner --no-privileges "${DUMP_FILE}"

TODO: refaire un script de restauration de la base de données plus simple à utiliser avec des input et tout et tout

Vérifier que la restauration est effective

Accéder à la carte et jouer avec : La carte Accéder au formulaire et joue avec : Le formulaire Accéder à l’administration Django et vérifier les données qui ont été restaurée : Admin