74 lines
1.6 KiB
Bash
Executable File
74 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
||
set -Eeuo pipefail
|
||
|
||
APP_DIR="/volume2/docker_nvme/assetmanager"
|
||
REMOTE_URL="https://git.jusaro.de/Roland/Assetmanager.git"
|
||
BRANCH="main"
|
||
|
||
cd "$APP_DIR"
|
||
|
||
command -v git >/dev/null || {
|
||
echo "Fehler: Git ist nicht installiert."
|
||
exit 1
|
||
}
|
||
|
||
command -v docker >/dev/null || {
|
||
echo "Fehler: Docker wurde nicht gefunden."
|
||
exit 1
|
||
}
|
||
|
||
[ -d ".git" ] || {
|
||
echo "Fehler: $APP_DIR ist kein Git-Repository."
|
||
exit 1
|
||
}
|
||
|
||
# Prüfen, ob wichtige lokale Daten tatsächlich ignoriert werden
|
||
for path in \
|
||
".env" \
|
||
"data/config/config.json" \
|
||
"data/postgres/__check__" \
|
||
"data/uploads/__check__" \
|
||
"data/logs/__check__"
|
||
do
|
||
if ! git check-ignore -q --no-index "$path"; then
|
||
echo "Sicherheitsabbruch: $path wird nicht durch .gitignore geschützt."
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
# Remote-Adresse korrigieren
|
||
git remote set-url origin "$REMOTE_URL"
|
||
|
||
echo "AssetManager wird gestoppt ..."
|
||
docker compose down
|
||
|
||
SUCCESS=0
|
||
|
||
restart_on_error() {
|
||
if [ "$SUCCESS" -eq 0 ]; then
|
||
echo "Update fehlgeschlagen – Container werden wieder gestartet."
|
||
docker compose up -d || true
|
||
fi
|
||
}
|
||
|
||
trap restart_on_error EXIT
|
||
|
||
echo "Aktueller Stand wird von Gitea geladen ..."
|
||
git fetch --prune origin
|
||
|
||
echo "Lokaler Programmstand wird ersetzt ..."
|
||
git reset --hard "origin/$BRANCH"
|
||
|
||
# Entfernt unversionierte, aber nicht ignorierte Dateien.
|
||
# .env, Datenbank, Uploads und Konfiguration bleiben erhalten.
|
||
git clean -fd
|
||
|
||
echo "Container werden neu gebaut und gestartet ..."
|
||
docker compose up -d --build
|
||
|
||
SUCCESS=1
|
||
trap - EXIT
|
||
|
||
echo "Update abgeschlossen."
|
||
docker compose logs --tail=100 -f
|