Update über den Git-Server, Tests, Repo ohne node_modules und Sicherungen
- Admin → Update: neuere Versionen (Tags) vom Git-Server anzeigen und per Knopf einspielen; ausgeführt vom Dienst auf dem Rechner (Docker/update-einrichten.sh, Docker/update-ausfuehren.sh), nur vorwärts, Fehler bei ausbleibendem Neustart, abgebrochene Läufe sperren nicht - Tests (npm test): Zusammenführen paralleler Änderungen, Rechteprüfung beim Speichern; SESSIONS_DIR lenkt den Datenordner für Testserver um - node_modules, Sicherungen und Uploads aus dem Repo genommen - cors und requireRole() entfernt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e12936444d
commit
fd44db2213
2357 files changed
+588
-514948
No files matched your search
@@ -4375,6 +4375,36 @@ kopieren, „In Outlook öffnen“ (`webcal:`-Link), Anleitung, „Neue Adresse
|
||||
Microsoft-Server aus dem Internet ab — dafür muss der Server von außen
|
||||
erreichbar sein. Das klassische Outlook am PC holt es im Firmennetz direkt.
|
||||
|
||||
## Update über den Git-Server (Admin → Update)
|
||||
|
||||
Eriks Wunsch: Neue Versionen vom Git-Server auf Anfrage im Admin-Bereich
|
||||
sehen und per Knopf einspielen. **Eine Version ist ein Tag `vX.Y.Z`**
|
||||
(annotiert, die Nachricht ist der Änderungstext) auf `main`.
|
||||
- **App** (`server.js`, Abschnitt „Update über den Git-Server“, Recht
|
||||
**`a.update`**): `GET /admin/update[?suchen=1]` liest
|
||||
`sessions/update/installiert.json`/`status.json` und fragt nur mit
|
||||
`suchen` den Git-Server (Gitea-API `UPDATE_REPO_API` aus
|
||||
`docker-compose.yml`, `/tags`) nach neueren Versionen; bei einem Fehler
|
||||
kommt das Ende von `update.log` mit. `POST /admin/update {version}` prüft
|
||||
Muster und Existenz der Version und legt `sessions/update/auftrag.json` ab
|
||||
(409, solange ein Update läuft oder der Dienst fehlt). Karte
|
||||
`#adminUpdateCard`, `loadAdminUpdate()` in `js/admin/admin.js`: Suchen,
|
||||
Liste neuerer Versionen, zweistufiges „Update installieren“, Fortschritt
|
||||
(fragt alle 5 s, auch über den Neustart hinweg), danach „Seite neu laden“.
|
||||
- **Rechner, nicht Container**: Der Container bekommt keinen Zugriff auf
|
||||
Docker. `sudo bash Docker/update-einrichten.sh` (einmal, im Klon des
|
||||
Repos) richtet `projektuebersicht-update.path`/`.service` ein (systemd
|
||||
wartet auf `auftrag.json`), legt `sessions/update/` für uid 1000 an und
|
||||
vermerkt die laufende Version (nächster Tag). `Docker/update-ausfuehren.sh`
|
||||
(alles in `main()`, weil der Checkout das Skript im Lauf ersetzt): Auftrag
|
||||
lesen und löschen, `git fetch --tags`, bei lokalen Code-Änderungen
|
||||
(außer `sessions/`) abbrechen, `git checkout --detach <tag>`, `docker
|
||||
compose build` (alte Version läuft weiter; schlägt es fehl, zurück auf den
|
||||
vorigen Stand), `up -d`, auf `/health` warten, `installiert.json`
|
||||
schreiben. Fortschritt in `status.json`, Protokoll in `update.log`.
|
||||
- Die Datenbank sichert der Server wie bei jedem Start selbst. Das Repo auf
|
||||
dem Rechner steht nach einem Update auf einem losgelösten HEAD (Tag).
|
||||
|
||||
## Teams: persönliche Nachricht bei neuen Aufgaben
|
||||
|
||||
Eriks Wunsch („nur persönlich“): Wird jemandem eine Aufgabe zugewiesen,
|
||||
@@ -4979,6 +5009,13 @@ und den Verlauf-Kacheln (ohne Verfasser). Stile `.kommentar-gewerke`,
|
||||
|
||||
- Git repo; commits are German (e.g. "PDF Export von A4 auf A3 …"). Remote:
|
||||
`http://192.168.3.187:3000/erik/projektuebersicht.git`.
|
||||
- No linter, formatter, typecheck, or test suite. Manual verification only:
|
||||
start server, open `http://localhost:3003`, exercises the relevant tab,
|
||||
confirm SQLite changes (the DB file `sessions/projektuebersicht.db` grows).
|
||||
- No linter, formatter or typecheck. **Tests:** `npm test` (`node --test
|
||||
test/`, keine Abhängigkeit) — `test/zusammenfuehren.test.js` prüft
|
||||
`dreiwegeZusammenfuehren()` (lädt `public/js/store.js` per `vm`),
|
||||
`test/rechte.test.js` startet einen echten Server mit leerer Datenbank in
|
||||
einem Wegwerf-Ordner (`SESSIONS_DIR`/`DB_PATH`, damit keine Sicherung im
|
||||
echten `sessions/` landet) und prüft die Rechteprüfung beim Speichern.
|
||||
Sonst manuell: start server, open `http://localhost:3003`, exercise the
|
||||
relevant tab, confirm SQLite changes.
|
||||
- **`SESSIONS_DIR`** (Umgebungsvariable) lenkt den Datenordner um
|
||||
(Sicherungen, Uploads, Update-Auftrag) — für jeden Testserver setzen.
|
||||
Reference in new issue
Block a user