Der erste Lauf brach im Runner-Image von Gitea 1.27 ab: die JS-Aktion
actions/checkout stirbt beim Aufruf von "git version" mit "read ENOTCONN"
- ein Node-24-Fehler im Container, nicht unser Workflow.
Der Code wird jetzt per Shell geklont. Das braucht kein Node und ist damit
unabhaengig vom Image. Geholt wird flach nach Commit-SHA, ersatzweise nach
Branch, falls der Server das Anfordern einzelner SHAs nicht erlaubt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Push auf main rollt den Stand selbst aus, statt ihn von Hand zu kopieren.
Der Runner (pve-runner) liegt im selben LAN wie der Zielhost.
Drei Dinge, die dabei nicht passieren duerfen und deshalb abgesichert sind:
- Die .env, das data-Verzeichnis und node_modules sind vom rsync-Abgleich
ausgenommen. Das --delete raeumt zwar geloeschte Dateien weg, laesst diese
Pfade aber in Ruhe (kein --delete-excluded).
- npm ci laeuft auf dem Zielhost, nicht im Runner-Container: bcrypt und
sqlite3 sind native Module und muessen zur dortigen Umgebung passen.
Aufgerufen wird es nur, wenn sich backend/package*.json geaendert hat.
- Neu gestartet wird nur bei Aenderungen unter backend/ oder deploy/.
Eine geaenderte Frontend-Datei wird ausgeliefert, ohne den laufenden
Dienst anzufassen.
Danach ein Health-Check gegen /health; bleibt die Antwort aus, schlaegt der
Lauf fehl und die letzten Journal-Zeilen stehen im Protokoll.
Die Einrichtung (Deploy-Benutzer, eng gefasste sudo-Regel, Variablen und
Secrets) steht in DEPLOY.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>