- /download/windows: eigene, korrekt geframte Windows-Seite (PC-DNS-Schutz, nicht iPhone-Supervision) - Installer in public/downloads/RebreakMagic-Setup.exe (3,7 MB, aus CI-Artefakt) - deploy-marketing.sh: --info=progress2 -> --progress (macOS-rsync-kompatibel) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
70 lines
2.3 KiB
Bash
Executable File
70 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# deploy-marketing.sh -- Local-Build + rsync der Marketing-SPA nach staging.rebreak.org
|
|
#
|
|
# Pattern: Nuxt generate -> .output/public/ -> rsync auf Hetzner -> /var/www/marketing-staging
|
|
#
|
|
# Usage:
|
|
# ./scripts/deploy-marketing.sh # build + deploy staging
|
|
# DRY_RUN=1 ./scripts/deploy-marketing.sh # nur rsync-dry-run, kein write
|
|
#
|
|
# Voraussetzungen auf Server (einmalig):
|
|
# sudo mkdir -p /var/www/marketing-staging
|
|
# sudo chown -R $USER:www-data /var/www/marketing-staging
|
|
# sudo cp ops/nginx/staging.rebreak.org.conf /etc/nginx/sites-available/
|
|
# sudo nginx -t && sudo systemctl reload nginx
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
MARKETING_DIR="$REPO_ROOT/apps/marketing"
|
|
|
|
# Server-Settings (anpassen wenn anderer Host/User)
|
|
# 2026-06-06: Default auf Clone (91.99.225.223) umgestellt -- ALT-Box 49.13.55.22 ist migriert/abgeschaltet
|
|
SSH_HOST="${MARKETING_SSH_HOST:-root@91.99.225.223}"
|
|
REMOTE_DIR="${MARKETING_REMOTE_DIR:-/var/www/marketing-staging}"
|
|
|
|
log() { echo "[deploy-marketing] $(date '+%H:%M:%S') $*"; }
|
|
|
|
log "=== Marketing Deploy gestartet ==="
|
|
log "Repo: $REPO_ROOT"
|
|
log "Source: $MARKETING_DIR"
|
|
log "Target: $SSH_HOST:$REMOTE_DIR"
|
|
|
|
# 1. Build (statische Generierung)
|
|
log "Step 1: nuxt generate..."
|
|
cd "$MARKETING_DIR"
|
|
pnpm install --frozen-lockfile
|
|
pnpm generate
|
|
|
|
PUBLIC_DIR="$MARKETING_DIR/.output/public"
|
|
[[ -d "$PUBLIC_DIR" ]] || {
|
|
echo "FEHLER: $PUBLIC_DIR existiert nicht nach generate" >&2
|
|
exit 1
|
|
}
|
|
[[ -f "$PUBLIC_DIR/index.html" ]] || {
|
|
echo "FEHLER: $PUBLIC_DIR/index.html fehlt" >&2
|
|
exit 1
|
|
}
|
|
|
|
log "Build ok ($(du -sh "$PUBLIC_DIR" | cut -f1))"
|
|
|
|
# 2. rsync nach Server
|
|
# --progress statt --info=progress2: macOS' System-rsync (2.6.9 / openrsync)
|
|
# kennt --info nicht. --progress läuft auf alt + neu.
|
|
RSYNC_FLAGS=(-az --delete --progress)
|
|
if [[ "${DRY_RUN:-0}" == "1" ]]; then
|
|
RSYNC_FLAGS+=(--dry-run)
|
|
log "DRY_RUN aktiv -- nur Simulation"
|
|
fi
|
|
|
|
log "Step 2: rsync nach $SSH_HOST:$REMOTE_DIR ..."
|
|
SSH_KEY="${MARKETING_SSH_KEY:-$HOME/.ssh/id_ed25519}"
|
|
rsync "${RSYNC_FLAGS[@]}" \
|
|
-e "ssh -i $SSH_KEY" \
|
|
"$PUBLIC_DIR/" \
|
|
"$SSH_HOST:$REMOTE_DIR/"
|
|
|
|
log "=== Marketing Deploy erfolgreich ==="
|
|
log "Test: curl -I https://staging.rebreak.org/"
|