From 135187f69f8c60336d53b796c9353791cccbb439 Mon Sep 17 00:00:00 2001 From: Gato Date: Sun, 31 May 2026 17:38:23 +0200 Subject: [PATCH] CI rollback Signed-off-by: Gato --- Mise-a-jour-Applications.md | 56 +++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/Mise-a-jour-Applications.md b/Mise-a-jour-Applications.md index bc464d8..0ccfe2d 100644 --- a/Mise-a-jour-Applications.md +++ b/Mise-a-jour-Applications.md @@ -55,13 +55,59 @@ docker compose up -d ## Revenir à une version précédente (rollback) -1. Identifier le tag voulu dans le registre Gitea : **Packages → bonsai-webapp** -2. Modifier le tag dans `docker-compose.yml` (ex. `v1.1.0`) -3. Appliquer : +Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher au serveur manuellement. + +### Rollback Bonsai Webapp + +1. Aller dans **Gitea → Bonsai-webapp → Actions → Rollback → Run workflow** +2. Saisir la version cible (ex. `v1.2.3`) +3. Lancer — Watchtower redéploie automatiquement + +### Rollback Bonsai API (avec ou sans restauration BDD) + +1. Aller dans **Gitea → Bonsai-api → Actions → Rollback → Run workflow** +2. Saisir la version cible (ex. `v1.2.3`) +3. Choisir `restore_db` : + - `no` (défaut) — rollback du code uniquement (migrations Flyway compatibles) + - `yes` — rollback du code **et** restauration de la base de données depuis le backup créé avant ce déploiement + +> **Attention** : `restore_db=yes` écrase toutes les données créées depuis le déploiement à annuler. À réserver aux cas où la migration de schéma est incompatible avec l'ancienne version. + +### Ce que fait le workflow en coulisse + +1. Retague l'image `image:vX.Y.Z` en `image:latest` dans le registry Gitea +2. (Si `restore_db=yes`) Se connecte en SSH au serveur, arrête l'API, restaure le dump PostgreSQL +3. Déclenche Watchtower → redéploie le conteneur avec la version rétrogradée + +--- + +## Backups de la base de données + +Un backup compressé (`pg_dump | gzip`) est créé automatiquement **avant chaque déploiement** de Bonsai API. + +- **Emplacement sur le serveur** : `/opt/backups/bonsai-api/` +- **Format du nom** : `bonsai_v1.2.3_20260531_143000.sql.gz` +- **Rétention** : les 10 derniers backups sont conservés, les plus anciens sont supprimés automatiquement + +Pour lister les backups disponibles sur le serveur : ```bash -docker compose pull -docker compose up -d +ls -lh /opt/backups/bonsai-api/ +``` + +Pour restaurer manuellement un backup : + +```bash +VERSION="v1.2.3" +BACKUP_FILE=$(ls -t /opt/backups/bonsai-api/bonsai_${VERSION}_*.sql.gz | head -1) + +docker stop bonsai-api +docker exec bonsai-api-db psql -U bonsai postgres \ + -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='bonsai' AND pid != pg_backend_pid();" +docker exec bonsai-api-db dropdb -U bonsai bonsai +docker exec bonsai-api-db createdb -U bonsai bonsai +gunzip -c "$BACKUP_FILE" | docker exec -i bonsai-api-db psql -U bonsai bonsai +docker start bonsai-api ``` ---