DevOps, déploiement, opérations¶
Continuous Integration / Continuous Delivery¶
La documentation du process de CI/CD est disponible dans la section Référence/Infrastructure/CI-CD
Accéder à un shell en production¶
Pour executer une commande en production, il faut au préalable se connection au shell via le CLI Scalingo.
Ensuite il est possible dâouvrir un shell (ici bash) dans le worker Scalingo.
scalingo run --app quefairedemesobjets bash
LâintĂ©gralitĂ© des commandes possibles nâest pas documentĂ©e ici, elle lâest dans la documentation officielle de Django
Lâensemble des commandes documentĂ©es ci-aprĂšs peut ĂȘtre lancĂ©e soit depuis un environnement local, soit depuis un shell en production ou prĂ©-production.
Rollback: Revenir Ă une version prĂ©cĂ©dente de lâapplication dĂ©ployĂ©e¶
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