update.sh: api und sync bei jedem Update neu erzeugen (#115)

Die rote Fahne aus #113 blieb nach dem automatischen Update aus. Code-Pfad und Daten sind
in Ordnung (NC-Gantt #333 ist offen und stammt von "tinko"), aber der sync-Container bindet
./api nur als Volume ein. Bei unveraendertem Image und unveraenderter Compose-Konfiguration
liess "docker compose up -d" ihn deshalb einfach weiterlaufen. Der --watch-Prozess hatte
seine Klassen noch vom alten Stand geladen, uebergab also nie einen author, und
countExternalOpenTickets() kam immer auf 0.

update.sh erzeugt api und sync deshalb jetzt mit --force-recreate neu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
fds2610-bot 2026-10-10 10:36:36 +02:00
parent 41a11a0a73
commit e8d19534a6
3 changed files with 13 additions and 2 deletions

View file

@ -4,6 +4,9 @@ Format in Anlehnung an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
## Unreleased
- `update.sh` erzeugt die Container `api` und `sync` bei jedem Update neu. Bisher lief der
`sync`-Prozess nach einem Update mit dem alten Code weiter, schrieb deshalb keinen
Ticket-Ersteller und die rote Fahne am PO (#113) erschien nicht (#115).
- Rote Fahne am PO mit der Anzahl offener Tickets externer User (Ersteller weder `fds2610`
noch `fds2610-bot`); der Codeberg-Sync speichert dafuer den Ersteller jedes Issues/PRs in
der neuen Ticket-Spalte `author` (#113).

View file

@ -11,7 +11,9 @@ aktualisiert.
- **`update.sh`** (Projekt-Wurzel) - holt die neueste Version des konfigurierten Branches per
`git pull --ff-only`, baut die Docker-Images neu, startet `api`, `web` und `sync` neu und
fuehrt (per Default) die Testsuiten aus. Kann jederzeit auch manuell aufgerufen werden, siehe
fuehrt (per Default) die Testsuiten aus. `api` und `sync` werden dabei immer neu erzeugt
(`--force-recreate`), weil sie den Code nur per Volume einbinden und der langlebige
`sync`-Prozess neuen PHP-Code sonst erst nach einem manuellen Neustart sieht (Issue #115). Kann jederzeit auch manuell aufgerufen werden, siehe
Kommentar am Kopf der Datei fuer die Umgebungsvariablen `UPDATE_REMOTE`, `UPDATE_BRANCH`,
`UPDATE_RUN_TESTS`.
Nach dem Neustart meldet das Skript ein Event "Monitor: Update eingespielt (<Commit>)" per

View file

@ -95,7 +95,13 @@ else
fi
log "Starte Dienste neu (api, web, sync)..."
$DOCKER_COMPOSE up -d api web sync
# --force-recreate fuer api und sync: beide mounten ./api nur als Volume, ein reines "up -d"
# laesst die Container daher unveraendert weiterlaufen, sobald Image und Compose-Konfiguration
# gleich bleiben. Der sync-Dienst ist ein einziger langlebiger PHP-Prozess (--watch), der seine
# Klassen einmal geladen hat und neuen Code sonst nie sieht - so schrieb er nach dem Update zu
# Issue #113 weiterhin keinen Ticket-Ersteller und die rote Fahne am PO blieb aus (Issue #115).
$DOCKER_COMPOSE up -d --force-recreate api sync
$DOCKER_COMPOSE up -d web
# Meldet das Update als Event (POST /api/v1/events/system, Admin-Key aus der .env). Die API ist
# direkt nach "up -d" evtl. noch nicht bereit, daher mehrere Versuche; ein Fehlschlag bricht das