install.sh wird update-faehig, update.sh auf Bootstrapper reduziert
install.sh erkennt jetzt selbststaendig eine bestehende Installation (an sqlite.db) und verhaelt sich entsprechend: - Keine vorhandene Installation -> normale Frischinstallation (wie bisher). - Vorhanden, SCHEMA_VERSION unveraendert -> einfaches In-Place-Update, kein Backup noetig (rsync schliesst sqlite.db ohnehin aus). - Vorhanden, SCHEMA_VERSION unbekannt/abweichend -> Update MIT Sicherheitsnetz: die KOMPLETTE bisherige Installation (Code, venv, Datenbank, Schluessel) wird vorher 1:1 nach /srv/tesm-backup-pre-migration-<timestamp> kopiert (bewusst nicht nur die Datenbank -- ein reines DB-Rollback wuerde beim naechsten Start mit dem NEUEN Code sofort denselben Migrationsfehler wiederholen). Die eigentliche Schema-Migration uebernimmt danach die App selbst beim Start (_ensure_schema() in app.py). Kommt der Dienst anschliessend per HTTP-Check auf /login nachweislich NICHT gesund hoch, wird automatisch die komplette Sicherung zurueckgespielt und bleibt zur manuellen Pruefung erhalten. Kommt er gesund hoch, gilt die Migration als erfolgreich und das Backup wird geloescht. update.sh delegiert diese gesamte /srv/tesm-spezifische Logik jetzt an install.sh und ist selbst nur noch fuer das Ablösen AELTERER, TESM vorausgehender Installationsstufen zustaendig (PoE Manager unter /srv/poe_manager, das urspruengliche reine Bash-Setup) -- bleibt aber als bequemer Ein-Skript-Bootstrapper (Download + Entpacken + Aufruf von install.sh) bestehen, wie gewuenscht. install.sh selbst ist dadurch jetzt auch OHNE update.sh direkt aus einem entpackten Release-Paket lauffaehig und erkennt ein Update trotzdem korrekt. VERSION: 1.0.3 (SCHEMA_VERSION unveraendert, 1 -- keine echte Schema- Aenderung in diesem Release, In-Place-Update-Pfad bleibt der Normalfall).
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
||||
1.0.2
|
||||
1.0.3
|
||||
|
||||
Reference in New Issue
Block a user