Abgleich ohne rsync ueber einen Commit-Merkzettel
Deploy auf den Timer-Server / deploy (push) Successful in 18s
Deploy auf den Timer-Server / deploy (push) Successful in 18s
Auf dem Zielhost gibt es kein rsync (und im Runner-Container laeuft es wegen des Docker-Hosts ohnehin nicht). Der ausgerollte Commit steht jetzt in /opt/timer-app/.deploy-commit; die Aenderungsliste kommt aus git diff gegen diesen Stand. Das ist genauer als ein Zeitstempelvergleich: geloeschte Dateien sind als solche benannt und werden gezielt entfernt, und ob npm ci und ein Neustart noetig sind, entscheidet dieselbe Liste. Ist kein Vorgaengerstand bekannt, gilt alles als neu. Der Pruefschritt bricht jetzt ab, wenn der Deploy-Benutzer im Zielpfad nicht schreiben darf - das ist besser als ein halb ausgerollter Stand. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -487,12 +487,14 @@ Stand selbsttaetig auf den Server aus. Der Workflow liegt in
|
||||
|
||||
### Was der Workflow tut
|
||||
|
||||
1. Uebertraegt die versionierten Dateien als tar-Paket auf den Server und
|
||||
gleicht sie dort per `rsync` gegen `/opt/timer-app` ab. (Im Runner-Container
|
||||
laesst der Docker-Host rsync nicht laufen - `pipe: Permission denied`.)
|
||||
1. Uebertraegt die versionierten Dateien als tar-Paket und entpackt sie ueber
|
||||
`/opt/timer-app`. Kein rsync: im Runner-Container verbietet der Docker-Host
|
||||
dessen `pipe()`-Aufruf, und auf dem Zielhost ist rsync nicht installiert.
|
||||
**Nicht angefasst** werden `backend/.env`, `data/` und `node_modules/` —
|
||||
sie sind vom Abgleich ausgenommen und ueberleben auch das `--delete`,
|
||||
das geloeschte Dateien auf dem Server aufraeumt.
|
||||
sie liegen nicht im Repo und sind damit auch nicht im Paket.
|
||||
Im Repo geloeschte Dateien werden auf dem Server entfernt: die Liste kommt
|
||||
aus `git diff` gegen den zuletzt ausgerollten Commit, der als Merkzettel
|
||||
in `/opt/timer-app/.deploy-commit` liegt.
|
||||
2. `npm ci --omit=dev` **nur**, wenn sich `backend/package*.json` geaendert hat.
|
||||
Das laeuft bewusst auf dem Zielhost: `bcrypt` und `sqlite3` sind native
|
||||
Module und muessen zur dortigen Architektur passen.
|
||||
|
||||
Reference in New Issue
Block a user