- Removed nginx configuration file as it is no longer needed. - Updated README.md to reflect changes in deployment structure. - Enhanced DEPLOYMENT.md with detailed directory structure and user permissions. - Added release.sh and rollback.sh scripts for managing deployments. - Improved N8N.md to clarify file access and document handling. - Adjusted health check and cache flushing procedures in deployment scripts.
61 lines
2.2 KiB
Bash
61 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# Auf die vorige Veröffentlichung zurückschalten.
|
|
#
|
|
# /var/www/ekdos/deploy/rollback.sh # eine zurück
|
|
# /var/www/ekdos/deploy/rollback.sh 2f9c1ab # auf eine bestimmte
|
|
# /var/www/ekdos/deploy/rollback.sh --list # zeigt, was vorrätig ist
|
|
#
|
|
# Es wird nur der Symlink getauscht und php-fpm neu geladen. Die alten
|
|
# Veröffentlichungen liegen vollständig da, ein Rückschritt dauert Sekunden.
|
|
#
|
|
# ACHTUNG: Datenbankmigrationen werden NICHT zurückgenommen. Hat die neue
|
|
# Fassung das Schema geändert, muss die alte damit umgehen können. Bei den
|
|
# bisherigen Migrationen (nur Tabellen anlegen) ist das der Fall.
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="${EKDOS_ROOT:-/var/www/ekdos}"
|
|
FPM_SERVICE="${EKDOS_FPM:-php8.5-fpm}"
|
|
HEALTH_URL="${EKDOS_HEALTH_URL:-http://127.0.0.1/api/health}"
|
|
|
|
step() { printf '\n\033[1m==> %s\033[0m\n' "$1"; }
|
|
fail() { printf '\033[31mFEHLER: %s\033[0m\n' "$1" >&2; exit 1; }
|
|
|
|
CURRENT="$(basename "$(readlink "$ROOT/current" 2>/dev/null || echo none)")"
|
|
|
|
if [ "${1:-}" = "--list" ]; then
|
|
echo "Vorrätige Veröffentlichungen (neueste zuerst):"
|
|
( cd "$ROOT/releases" && ls -1td -- */ | sed 's#/$##' ) | while read -r name; do
|
|
[ "$name" = "$CURRENT" ] && echo " * $name (aktiv)" || echo " $name"
|
|
done
|
|
exit 0
|
|
fi
|
|
|
|
TARGET="${1:-}"
|
|
|
|
if [ -z "$TARGET" ]; then
|
|
# Ohne Argument: der Eintrag, den release.sh beim letzten Umschalten notiert hat.
|
|
[ -f "$ROOT/previous" ] || fail "Keine vorige Veröffentlichung vermerkt. Auswahl zeigen mit: rollback.sh --list"
|
|
TARGET="$(basename "$(cat "$ROOT/previous")")"
|
|
fi
|
|
|
|
[ -d "$ROOT/releases/$TARGET" ] || fail "Die Veröffentlichung '$TARGET' gibt es nicht. Auswahl zeigen mit: rollback.sh --list"
|
|
[ "$TARGET" != "$CURRENT" ] || fail "'$TARGET' ist bereits aktiv."
|
|
|
|
step "Zurück von $CURRENT auf $TARGET"
|
|
ln -sfn "releases/$TARGET" "$ROOT/current.new"
|
|
mv -Tf "$ROOT/current.new" "$ROOT/current"
|
|
printf '%s\n' "$CURRENT" > "$ROOT/previous"
|
|
|
|
step "$FPM_SERVICE neu laden"
|
|
sudo systemctl reload "$FPM_SERVICE"
|
|
|
|
step "n8n-Cache verwerfen"
|
|
php "$ROOT/current/backend/bin/ekdos" cache:flush
|
|
|
|
step "Gesundheitsprüfung"
|
|
curl -fsS --max-time 5 "$HEALTH_URL" > /dev/null || fail "$HEALTH_URL antwortet nicht."
|
|
|
|
step "$TARGET ist wieder aktiv."
|