Phase 6 (F2): detectDoorVisits() erkennt die drei Anlaesse aus den Detailantworten
(neues per Codeberg-Sync angelegtes Backlog-Ticket, Ticket erreicht "fertig", Ticket
erreicht "done") durch Diff zweier Ticket-Snapshots. office-render.js laesst dafuer
einen "user"-Besucher durch die linke Tuer hereinkommen, zum Board laufen, kurz
interagieren und wieder hinausgehen - unabhaengig vom Daten-Refresh-Takt, damit ein
Besuch auch bei einem zwischenzeitlichen Refresh sauber zu Ende animiert.
Phase 7 (F16): html/mon.html, script.js und styles.css sind entfallen ("kann
entfallen" laut Detailantworten); check_fds.sh/mail_fds.py/status.txt speisen
weiterhin unveraendert den System-Monitor. Unit-Tests fuer die neue Tuer-Logik
ergaenzt (weiterhin 100% Line-Coverage, node --test). E2E-Tests bleiben bewusst
ausserhalb dieser Phase.
Ausserdem: update.sh (holt die neueste Version vom konfigurierten Git-Remote und
faehrt die Docker-Compose-Entwicklungsumgebung hoch) und register-agent.sh
(Hilfsskript zur Agenten-Registrierung per API) ergaenzt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
74 lines
2.8 KiB
Bash
74 lines
2.8 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Holt die neueste Version aus dem konfigurierten Git-Repo und fuehrt die noetigen Updates
|
|
# fuer die Docker-Compose-Entwicklungs-/Laufzeitumgebung durch (siehe README.md/Visualization.md
|
|
# Abschnitt "Entwicklung nur mit Docker"): PHP-Abhaengigkeiten aktualisieren, Images neu bauen,
|
|
# Dienste neu starten, Testsuiten laufen lassen. SQLite-Migrationen brauchen keinen eigenen
|
|
# Schritt - api/src/Db/Database::migrate() wendet sie bei jedem API-Start automatisch an.
|
|
#
|
|
# Konfiguration ueber Umgebungsvariablen (Defaults passen fuer den ueblichen Fall):
|
|
# UPDATE_REMOTE - Git-Remote, aus dem geholt wird (Default: origin)
|
|
# UPDATE_BRANCH - Branch, der aktualisiert wird (Default: aktuell ausgecheckter Branch)
|
|
# UPDATE_RUN_TESTS - "0" setzen, um die Testsuiten nach dem Update zu ueberspringen (Default: 1)
|
|
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)"
|
|
cd "$REPO_DIR"
|
|
|
|
log() {
|
|
printf '[update.sh] %s\n' "$1"
|
|
}
|
|
|
|
fail() {
|
|
printf '[update.sh] Fehler: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
command -v git >/dev/null 2>&1 || fail "git ist nicht installiert."
|
|
command -v docker >/dev/null 2>&1 || fail "docker ist nicht installiert."
|
|
git -C "$REPO_DIR" rev-parse --is-inside-work-tree >/dev/null 2>&1 \
|
|
|| fail "$REPO_DIR ist kein Git-Repository."
|
|
|
|
UPDATE_REMOTE="${UPDATE_REMOTE:-origin}"
|
|
UPDATE_BRANCH="${UPDATE_BRANCH:-$(git rev-parse --abbrev-ref HEAD)}"
|
|
UPDATE_RUN_TESTS="${UPDATE_RUN_TESTS:-1}"
|
|
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
fail "Lokale Aenderungen/unversionierte Dateien vorhanden - bitte erst committen/stashen. Breche ab, um nichts zu ueberschreiben."
|
|
fi
|
|
|
|
log "Hole Aenderungen von ${UPDATE_REMOTE}/${UPDATE_BRANCH}..."
|
|
git fetch "$UPDATE_REMOTE" "$UPDATE_BRANCH"
|
|
|
|
# --ff-only statt reset --hard: bricht kontrolliert ab, falls der lokale Branch abweicht
|
|
# (z. B. eigene, noch nicht gepushte Commits), statt Historie zu ueberschreiben.
|
|
git checkout "$UPDATE_BRANCH"
|
|
git pull --ff-only "$UPDATE_REMOTE" "$UPDATE_BRANCH"
|
|
|
|
DOCKER_COMPOSE="docker compose"
|
|
if ! docker compose version >/dev/null 2>&1; then
|
|
command -v docker-compose >/dev/null 2>&1 || fail "Weder 'docker compose' noch 'docker-compose' verfuegbar."
|
|
DOCKER_COMPOSE="docker-compose"
|
|
fi
|
|
|
|
log "Aktualisiere PHP-Abhaengigkeiten (composer install)..."
|
|
$DOCKER_COMPOSE run --rm api composer install --no-interaction --no-progress
|
|
|
|
log "Baue Docker-Images neu (falls Dockerfile/Abhaengigkeiten sich geaendert haben)..."
|
|
$DOCKER_COMPOSE build
|
|
|
|
log "Starte Dienste neu (api, web)..."
|
|
$DOCKER_COMPOSE up -d api web
|
|
|
|
if [ "$UPDATE_RUN_TESTS" = "1" ]; then
|
|
log "Fuehre PHPUnit-Tests (API) aus..."
|
|
$DOCKER_COMPOSE run --rm api composer test
|
|
|
|
log "Fuehre Frontend-Tests aus..."
|
|
$DOCKER_COMPOSE run --rm frontend
|
|
else
|
|
log "UPDATE_RUN_TESTS=0 gesetzt - ueberspringe Testsuiten."
|
|
fi
|
|
|
|
log "Update abgeschlossen (${UPDATE_BRANCH} @ $(git rev-parse --short HEAD))."
|