Files
yourpart3/update-frontend.sh
Torsten Schulz (local) 76da586b8e
All checks were successful
Deploy to production / deploy (push) Successful in 3m3s
fix(deploy): provision Falukant release models
2026-09-02 07:44:28 +02:00

103 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
TARGET_DIR="${1:?target dir required}"
FRONTEND_DIR="$TARGET_DIR/frontend"
CURRENT_LINK="/opt/yourpart"
CURRENT_FRONTEND="$CURRENT_LINK/frontend"
CURRENT_ROOT_ENV="$CURRENT_LINK/.env"
MODELS_MANIFEST="$TARGET_DIR/falukant-models.env"
echo "=== YourPart Frontend Update ==="
echo "Ziel: $FRONTEND_DIR"
echo "NOTE: .env files will NOT be overwritten"
cd "$FRONTEND_DIR"
if [ -d "dist" ]; then
echo "Korrigiere Berechtigungen für dist-Verzeichnis..."
sudo -n chown -R "$USER:$USER" dist/ 2>/dev/null || true
fi
echo "Lösche alle generierten Verzeichnisse..."
rm -rf dist/
rm -rf node_modules/.vite/
rm -rf node_modules/.cache/
TEMP_ENV="/tmp/yourpart-frontend-env-$$"
if [ -f "$CURRENT_ROOT_ENV" ]; then
echo "Nutze bestehende .env-Datei vom Live-System (Root) für Build..."
cp "$CURRENT_ROOT_ENV" "$TEMP_ENV"
cp "$TEMP_ENV" .env
elif [ -f "$CURRENT_FRONTEND/.env" ]; then
echo "Nutze bestehende .env-Datei vom Live-System (Frontend) für Build..."
cp "$CURRENT_FRONTEND/.env" "$TEMP_ENV"
cp "$TEMP_ENV" .env
elif [ -f .env.production ]; then
echo "Nutze .env.production für Build..."
cp .env.production .env
elif [ -f .env.server ]; then
echo "Nutze .env.server für Build..."
cp .env.server .env
fi
echo "Baue Frontend neu..."
export VITE_API_BASE_URL="${VITE_API_BASE_URL:-https://www.your-part.de}"
export VITE_DAEMON_SOCKET="${VITE_DAEMON_SOCKET:-wss://www.your-part.de:4551}"
export VITE_CHAT_WS_URL="${VITE_CHAT_WS_URL:-wss://www.your-part.de:1235}"
echo "VITE_API_BASE_URL=$VITE_API_BASE_URL"
echo "VITE_DAEMON_SOCKET=$VITE_DAEMON_SOCKET"
echo "VITE_CHAT_WS_URL=$VITE_CHAT_WS_URL"
echo "Installiere Dependencies..."
npm install
if [ ! -f "$MODELS_MANIFEST" ]; then
echo "ERROR: Falukant model manifest missing: $MODELS_MANIFEST" >&2
exit 1
fi
# Source GLBs are versioned as a Gitea release attachment rather than Git
# objects, keeping routine clones and deployments small.
# shellcheck disable=SC1090
source "$MODELS_MANIFEST"
: "${FALUKANT_MODELS_URL:?Falukant model URL is missing}"
: "${FALUKANT_MODELS_SHA256:?Falukant model checksum is missing}"
MODELS_ARCHIVE="$(mktemp /tmp/falukant-models-XXXXXX.tar.gz)"
trap 'rm -f "$TEMP_ENV" "$MODELS_ARCHIVE"' EXIT
echo "Lade Falukant-3D-Modelle (${FALUKANT_MODELS_URL})..."
curl --fail --location --retry 3 --retry-delay 2 \
--output "$MODELS_ARCHIVE" "$FALUKANT_MODELS_URL"
echo "${FALUKANT_MODELS_SHA256} ${MODELS_ARCHIVE}" | sha256sum --check --status
echo "Entpacke Falukant-3D-Modelle..."
rm -rf "$FRONTEND_DIR/models-src/3d/falukant"
tar -xzf "$MODELS_ARCHIVE" -C "$TARGET_DIR"
echo "Optimiere Falukant-3D-Modelle..."
npm run optimize-models
echo "Baue Frontend..."
npm run build
if [ -f "$FRONTEND_DIR/.env" ]; then
echo "✓ Bestehende .env-Datei wurde beibehalten"
else
echo "⚠ Keine .env-Datei im Zielverzeichnis gefunden"
fi
echo "Setze Berechtigungen..."
sudo -n chown -R www-data:www-data "$FRONTEND_DIR/dist"
if [ -f "$FRONTEND_DIR/.env" ]; then
sudo -n chown www-data:www-data "$FRONTEND_DIR/.env"
sudo -n chmod 644 "$FRONTEND_DIR/.env"
fi
sudo -n chmod -R 755 "$FRONTEND_DIR/dist"
echo "=== Frontend Update abgeschlossen! ==="