diff --git a/CHANGELOG.md b/CHANGELOG.md index 3947787..6d759f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ Alle nennenswerten Änderungen an diesem Projekt werden hier dokumentiert. Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), Versionierung nach [Semantic Versioning](https://semver.org/lang/de/). +## [1.8.1] – 2026-07-20 + +### Hinzugefügt +- `update.sh`: Update-Skript für Linux-Deployments – stoppt den Docker- + Stack, sichert lokale Änderungen an `docker-compose.yml` per + `git stash` (falls vorhanden), führt `git pull` aus, spielt die + Änderungen zurück und startet den Stack neu im Build-Modus. Bricht + bei einem `git pull`- oder Stash-Konflikt kontrolliert ab, statt mit + einem halb aktualisierten Stand weiterzumachen. In DEPLOYMENT.md unter + „Updates einspielen“ dokumentiert. + ## [1.8.0] – 2026-07-19 ### Hinzugefügt diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 3d76501..49c81f8 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -225,6 +225,15 @@ Neue Datenbank-Migrationen (`db/migrations/*.sql`) werden beim Start automatisch und idempotent angewendet, bestehende Daten bleiben erhalten. +Alternativ übernimmt `./update.sh` den kompletten Ablauf: Stack stoppen, +lokale Änderungen an `docker-compose.yml` per `git stash` sichern (falls +vorhanden), `git pull`, Änderungen zurückspielen, Stack neu bauen und +starten: + +```bash +./update.sh +``` + ## Backup Zwei Docker-Volumes enthalten alle persistenten Daten: diff --git a/package-lock.json b/package-lock.json index d50a9de..08eda67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "canteen-menu", - "version": "1.8.0", + "version": "1.8.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "canteen-menu", - "version": "1.8.0", + "version": "1.8.1", "dependencies": { "@simplewebauthn/browser": "^13.3.0", "@simplewebauthn/server": "^13.3.2", diff --git a/package.json b/package.json index 61e5e5e..93a24d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "canteen-menu", - "version": "1.8.0", + "version": "1.8.1", "private": true, "scripts": { "predev": "node --env-file-if-exists=.env.local db/migrate.mjs && node --env-file-if-exists=.env.local scripts/bootstrap-admin.mjs", diff --git a/update.sh b/update.sh new file mode 100755 index 0000000..d9ddba3 --- /dev/null +++ b/update.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# Aktualisiert ein per Docker Compose betriebenes Deployment: +# Stack stoppen -> lokale docker-compose.yml-Änderungen sichern (git stash) +# -> git pull -> Änderungen zurückspielen -> Stack neu bauen und starten. +# +# Aufruf im Projektverzeichnis (dort, wo docker-compose.yml liegt): +# ./update.sh + +set -euo pipefail +cd "$(dirname "$0")" + +ENV_FILE=".env.local" +if [ ! -f "$ENV_FILE" ]; then + echo "Fehler: $ENV_FILE nicht gefunden. Bitte im Projektverzeichnis ausführen." >&2 + exit 1 +fi + +echo "==> Stoppe laufenden Stack..." +docker compose --env-file "$ENV_FILE" down + +STASHED=0 +if ! git diff --quiet -- docker-compose.yml || ! git diff --cached --quiet -- docker-compose.yml; then + echo "==> Sichere lokale Änderungen an docker-compose.yml (git stash)..." + git stash push --message "update.sh: docker-compose.yml vor Pull gesichert" -- docker-compose.yml + STASHED=1 +fi + +echo "==> Hole neueste Version (git pull)..." +git pull + +if [ "$STASHED" -eq 1 ]; then + echo "==> Stelle lokale Änderungen an docker-compose.yml wieder her..." + if ! git stash pop; then + echo "Fehler: git stash pop hatte einen Konflikt in docker-compose.yml." >&2 + echo "Bitte den Konflikt manuell auflösen (git status), danach Stack manuell starten:" >&2 + echo " docker compose --env-file $ENV_FILE up -d --build" >&2 + exit 1 + fi +fi + +echo "==> Baue und starte Stack neu..." +docker compose --env-file "$ENV_FILE" up -d --build + +echo "==> Fertig. Status:" +docker compose ps