CI rollback

Signed-off-by: Gato <cedric@goutailler-olivier.fr>
This commit is contained in:
2026-05-31 17:38:23 +02:00
parent df3a672387
commit 135187f69f
+51 -5
View File
@@ -55,13 +55,59 @@ docker compose up -d
## Revenir à une version précédente (rollback) ## Revenir à une version précédente (rollback)
1. Identifier le tag voulu dans le registre Gitea : **Packages → bonsai-webapp** Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher au serveur manuellement.
2. Modifier le tag dans `docker-compose.yml` (ex. `v1.1.0`)
3. Appliquer : ### 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 ```bash
docker compose pull ls -lh /opt/backups/bonsai-api/
docker compose up -d ```
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
``` ```
--- ---