Improve deploy.sh: show commit details, warn if unpushed
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / deploy (push) Has been cancelled
Code Quality / quality (push) Has been cancelled

- Display current branch, local/remote main commit with message
- Warn if local main is ahead of Gitea remote
- Show last 5 commits on main before deploying
- Update server address to deployment@217.154.84.225

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-12 14:25:26 +00:00
parent 7e42b50d5b
commit f1358d0131

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# deploy.sh — Deploy main branch to production (vhtv-stiftung.de) # deploy.sh — Deploy main branch to production (217.154.84.225)
# #
# Usage: # Usage:
# ./deploy.sh # Deploy current main to production # ./deploy.sh # Deploy current main to production
@@ -12,7 +12,7 @@
set -euo pipefail set -euo pipefail
SERVER="${DEPLOY_SERVER:-remmer@vhtv-stiftung.de}" SERVER="${DEPLOY_SERVER:-deployment@217.154.84.225}"
PROD_DIR="${DEPLOY_DIR:-/opt/stiftung}" PROD_DIR="${DEPLOY_DIR:-/opt/stiftung}"
COMPOSE_FILE="compose.yml" COMPOSE_FILE="compose.yml"
DRY_RUN=false DRY_RUN=false
@@ -28,9 +28,54 @@ echo "Path: $PROD_DIR"
echo "Compose: $COMPOSE_FILE" echo "Compose: $COMPOSE_FILE"
echo "" echo ""
# Verify local main is up to date with remote # --- Pre-deploy checks ---
LOCAL_MAIN=$(git rev-parse main 2>/dev/null || echo "unknown") CURRENT_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "Local main: $LOCAL_MAIN" echo "Aktueller Branch: $CURRENT_BRANCH"
# Check if main branch exists
if ! git rev-parse --verify main &>/dev/null; then
echo ""
echo "FEHLER: Branch 'main' existiert nicht lokal."
echo "Bist du im richtigen Repository?"
exit 1
fi
LOCAL_MAIN=$(git rev-parse --short main 2>/dev/null)
LOCAL_MAIN_FULL=$(git rev-parse main 2>/dev/null)
echo "Local main: $LOCAL_MAIN ($(git log -1 --format='%s' main 2>/dev/null))"
# Check if main is pushed to Gitea
git fetch origin --quiet 2>/dev/null || true
REMOTE_MAIN=$(git rev-parse --short origin/main 2>/dev/null || echo "unknown")
echo "Remote main: $REMOTE_MAIN (origin = Gitea)"
if [[ "$REMOTE_MAIN" != "unknown" && "$LOCAL_MAIN" != "$REMOTE_MAIN" ]]; then
UNPUSHED=$(git log --oneline origin/main..main 2>/dev/null | wc -l | tr -d ' ')
echo ""
echo "WARNUNG: Local main ist $UNPUSHED Commit(s) vor origin/main!"
echo "Du musst erst 'git push origin main' ausführen, sonst deployed der Server den alten Stand."
if [[ "$DRY_RUN" != true ]]; then
echo ""
read -p "Trotzdem fortfahren? [y/N] " -n 1 -r
echo ""
[[ $REPLY =~ ^[Yy]$ ]] || exit 0
fi
elif [[ "$REMOTE_MAIN" == "unknown" ]]; then
echo ""
echo "WARNUNG: Konnte Gitea-Remote nicht erreichen. Status unbekannt."
fi
# Show what the server will get
echo ""
echo "Der Server wird diesen Stand deployen:"
echo " Commit: $LOCAL_MAIN"
echo " $(git log -1 --format='%ai — %s' main 2>/dev/null)"
RECENT_COMMITS=$(git log --oneline -5 main 2>/dev/null)
if [[ -n "$RECENT_COMMITS" ]]; then
echo ""
echo "Letzte 5 Commits auf main:"
echo "$RECENT_COMMITS" | sed 's/^/ /'
fi
if [[ "$DRY_RUN" == true ]]; then if [[ "$DRY_RUN" == true ]]; then
echo "" echo ""
@@ -45,10 +90,10 @@ if [[ "$DRY_RUN" == true ]]; then
fi fi
echo "" echo ""
read -p "Deploy main ($LOCAL_MAIN) to production? [y/N] " -n 1 -r read -p "Deploy main ($LOCAL_MAIN) auf Produktion? [y/N] " -n 1 -r
echo "" echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Aborted." echo "Abgebrochen."
exit 0 exit 0
fi fi