Add deploy dry-run mode

This commit is contained in:
2026-06-23 11:47:49 +02:00
parent e108a5e78b
commit ab3a40f835
2 changed files with 26 additions and 1 deletions
+4 -1
View File
@@ -25,7 +25,8 @@ Ein SFTP-Deployment ist vorbereitet.
1. Vorlage kopieren: `cp .deploy.env.example .deploy.env` 1. Vorlage kopieren: `cp .deploy.env.example .deploy.env`
2. In `.deploy.env` Host, Benutzer, Port und Zielpfad eintragen 2. In `.deploy.env` Host, Benutzer, Port und Zielpfad eintragen
3. Upload-Liste bei Bedarf in `scripts/deploy-include.txt` anpassen 3. Upload-Liste bei Bedarf in `scripts/deploy-include.txt` anpassen
4. Deployment starten: `./scripts/deploy-sftp.sh` 4. Optional Vorschau anzeigen: `./scripts/deploy-sftp.sh --dry-run`
5. Deployment starten: `./scripts/deploy-sftp.sh`
Beispiel fuer die Konfiguration: Beispiel fuer die Konfiguration:
@@ -40,4 +41,6 @@ Das Skript uebertraegt die statischen Projektdateien und Verzeichnisse `css`, `i
Vor dem Verbindungsaufbau prueft das Skript, ob alle in `scripts/deploy-include.txt` aufgefuehrten Dateien und Verzeichnisse lokal vorhanden sind. Die Upload-Liste kann damit zentral gepflegt werden. Vor dem Verbindungsaufbau prueft das Skript, ob alle in `scripts/deploy-include.txt` aufgefuehrten Dateien und Verzeichnisse lokal vorhanden sind. Die Upload-Liste kann damit zentral gepflegt werden.
Mit `--dry-run` gibt das Skript nur die erzeugten SFTP-Befehle aus, ohne eine Verbindung zum Server aufzubauen.
Wichtig: Das Deployment aktualisiert vorhandene Dateien, entfernt aber keine Dateien auf dem Server, die lokal bereits geloescht wurden. Wichtig: Das Deployment aktualisiert vorhandene Dateien, entfernt aber keine Dateien auf dem Server, die lokal bereits geloescht wurden.
+22
View File
@@ -2,6 +2,22 @@
set -euo pipefail set -euo pipefail
dry_run=false
while [[ $# -gt 0 ]]; do
case "$1" in
--dry-run)
dry_run=true
;;
*)
echo "Unbekanntes Argument: $1" >&2
echo "Verwendung: $0 [--dry-run]" >&2
exit 1
;;
esac
shift
done
repo_root="$(cd "$(dirname "$0")/.." && pwd)" repo_root="$(cd "$(dirname "$0")/.." && pwd)"
config_file="$repo_root/.deploy.env" config_file="$repo_root/.deploy.env"
include_file="${DEPLOY_INCLUDE_FILE:-$repo_root/scripts/deploy-include.txt}" include_file="${DEPLOY_INCLUDE_FILE:-$repo_root/scripts/deploy-include.txt}"
@@ -73,6 +89,12 @@ for item in "${deploy_items[@]}"; do
fi fi
done done
if [[ "$dry_run" == true ]]; then
echo "Dry-Run: folgende SFTP-Befehle wuerden ausgefuehrt:"
cat "$batch_file"
exit 0
fi
cd "$repo_root" cd "$repo_root"
sftp -P "$deploy_port" "$DEPLOY_USER@$DEPLOY_HOST" < "$batch_file" sftp -P "$deploy_port" "$DEPLOY_USER@$DEPLOY_HOST" < "$batch_file"