2026-06-26 18:18:14 -04:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
2026-06-26 20:30:30 -04:00
|
|
|
APP_DIR="/srv/worldshaper/app"
|
|
|
|
|
GIT_DIR="/srv/worldshaper/repo.git"
|
|
|
|
|
CONTENT_ROOT="/srv/worldshaper/shared/content"
|
2026-06-27 00:18:41 -04:00
|
|
|
ENV_FILE="/srv/worldshaper/shared/worldshaper.env"
|
2026-06-26 18:18:14 -04:00
|
|
|
PORT="5180"
|
2026-06-26 20:30:30 -04:00
|
|
|
APP_NAME="worldshaper"
|
2026-06-26 18:18:14 -04:00
|
|
|
|
2026-06-27 00:18:41 -04:00
|
|
|
if [ -f "$ENV_FILE" ]; then
|
|
|
|
|
echo "[deploy] load env"
|
|
|
|
|
set -a
|
|
|
|
|
# shellcheck disable=SC1090
|
|
|
|
|
. "$ENV_FILE"
|
|
|
|
|
set +a
|
|
|
|
|
fi
|
|
|
|
|
|
2026-06-26 18:18:14 -04:00
|
|
|
echo "[deploy] checkout"
|
|
|
|
|
git --work-tree="$APP_DIR" --git-dir="$GIT_DIR" checkout -f
|
|
|
|
|
|
|
|
|
|
cd "$APP_DIR"
|
|
|
|
|
|
|
|
|
|
echo "[deploy] install"
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
|
|
echo "[deploy] validate"
|
|
|
|
|
npm run validate:content
|
|
|
|
|
|
|
|
|
|
echo "[deploy] build"
|
|
|
|
|
npm run build
|
|
|
|
|
|
|
|
|
|
echo "[deploy] restart"
|
2026-06-27 00:18:41 -04:00
|
|
|
CONTENT_ROOT="$CONTENT_ROOT" \
|
|
|
|
|
PORT="$PORT" \
|
|
|
|
|
REQUEST_ANALYZER_AUTORUN="${REQUEST_ANALYZER_AUTORUN:-1}" \
|
|
|
|
|
REQUEST_ANALYZER_PROVIDER="${REQUEST_ANALYZER_PROVIDER:-deepseek}" \
|
|
|
|
|
REQUEST_ANALYZER_MODEL="${REQUEST_ANALYZER_MODEL:-deepseek-v4-flash}" \
|
|
|
|
|
REQUEST_ANALYZER_PROMOTE_THRESHOLD="${REQUEST_ANALYZER_PROMOTE_THRESHOLD:-0.85}" \
|
|
|
|
|
REQUEST_ANALYZER_THINKING="${REQUEST_ANALYZER_THINKING:-disabled}" \
|
|
|
|
|
DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY:-}" \
|
|
|
|
|
pm2 restart "$APP_NAME" --update-env || \
|
|
|
|
|
CONTENT_ROOT="$CONTENT_ROOT" \
|
|
|
|
|
PORT="$PORT" \
|
|
|
|
|
REQUEST_ANALYZER_AUTORUN="${REQUEST_ANALYZER_AUTORUN:-1}" \
|
|
|
|
|
REQUEST_ANALYZER_PROVIDER="${REQUEST_ANALYZER_PROVIDER:-deepseek}" \
|
|
|
|
|
REQUEST_ANALYZER_MODEL="${REQUEST_ANALYZER_MODEL:-deepseek-v4-flash}" \
|
|
|
|
|
REQUEST_ANALYZER_PROMOTE_THRESHOLD="${REQUEST_ANALYZER_PROMOTE_THRESHOLD:-0.85}" \
|
|
|
|
|
REQUEST_ANALYZER_THINKING="${REQUEST_ANALYZER_THINKING:-disabled}" \
|
|
|
|
|
DEEPSEEK_API_KEY="${DEEPSEEK_API_KEY:-}" \
|
|
|
|
|
pm2 start server.js --name "$APP_NAME"
|