Add build storage and backup scripts

- upload-release.sh: Upload artifacts to Hetzner Storage Box
- create-release.sh: Create Gitea releases with tag and artifacts
- post-deploy.sh: Auto-backup DB and upload after deploy
- setup-storagebox.sh: One-time storage box directory setup
This commit is contained in:
2026-03-29 21:47:04 +00:00
parent bb8763bca1
commit 3034fa9093
4 changed files with 202 additions and 0 deletions

44
scripts/post-deploy.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
# Post-deploy: backup DB + upload artifacts to storage box
# Run after each successful deploy
set -uo pipefail
VERSION=$(cd /opt/task-team && git describe --tags --always 2>/dev/null || echo "unknown")
DATE=$(date +%Y%m%d_%H%M)
REMOTE="u458763-sub3@u458763.your-storagebox.de"
PORT=23
LOG="/var/log/taskteam-backup.log"
echo "[$(date +%H:%M:%S)] Post-deploy backup starting: $VERSION" | tee -a $LOG
# 1. DB backup
echo "[$(date +%H:%M:%S)] Running DB backup..." | tee -a $LOG
/opt/task-team/backup.sh >> $LOG 2>&1
DB_EXIT=$?
# 2. Upload latest DB backup to storage box
LATEST_BACKUP=$(ls -t /opt/task-team/backups/*.gz 2>/dev/null | head -1)
if [ -f "${LATEST_BACKUP:-}" ]; then
echo "[$(date +%H:%M:%S)] Uploading DB backup: $(basename $LATEST_BACKUP)" | tee -a $LOG
scp -P $PORT -o ConnectTimeout=10 -o BatchMode=yes "$LATEST_BACKUP" "$REMOTE:releases/backups/" 2>>$LOG || echo "[$(date +%H:%M:%S)] WARN: Storage box upload failed (DB backup saved locally)" | tee -a $LOG
fi
# 3. Upload APK if exists
APK_DIR="/opt/task-team/mobile/dist/android"
APK=$(ls -t $APK_DIR/*.apk 2>/dev/null | head -1)
if [ -f "${APK:-}" ]; then
echo "[$(date +%H:%M:%S)] Uploading APK: $(basename $APK)" | tee -a $LOG
scp -P $PORT -o ConnectTimeout=10 -o BatchMode=yes "$APK" "$REMOTE:releases/android/task-team-${VERSION}-${DATE}.apk" 2>>$LOG || echo "[$(date +%H:%M:%S)] WARN: Storage box APK upload failed" | tee -a $LOG
fi
# 4. Upload web build if exists
if [ -d "/opt/task-team/web/.next" ]; then
WEB_ARCHIVE="/tmp/task-team-web-${VERSION}-${DATE}.tar.gz"
tar czf "$WEB_ARCHIVE" -C /opt/task-team/web .next public package.json next.config.ts 2>/dev/null || true
if [ -f "$WEB_ARCHIVE" ]; then
scp -P $PORT -o ConnectTimeout=10 -o BatchMode=yes "$WEB_ARCHIVE" "$REMOTE:releases/web/" 2>>$LOG || true
rm -f "$WEB_ARCHIVE"
fi
fi
echo "[$(date +%H:%M:%S)] Post-deploy backup complete: $VERSION (DB exit: $DB_EXIT)" | tee -a $LOG