Files
movie-select/deploy.sh

51 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
REMOTE_HOST="serve"
REMOTE_APP_DIR="/home/serve/services/movie-select"
REMOTE_STATIC_DIR="/var/www/virtual/serve/html/movie-select"
echo "==> Installing local dependencies..."
bun install
echo "==> Building client (Vite)..."
bun run build
echo "==> Stamping service worker version..."
sed -i '' "s/__SW_VERSION__/$(date +%s)/" dist/client/sw.js
echo "==> Syncing static files to ${REMOTE_HOST}:${REMOTE_STATIC_DIR} ..."
rsync -avz --delete \
--exclude='.DS_Store' \
dist/client/ "${REMOTE_HOST}:${REMOTE_STATIC_DIR}/"
echo "==> Copying .htaccess for SPA fallback..."
scp .htaccess "${REMOTE_HOST}:${REMOTE_STATIC_DIR}/.htaccess"
echo "==> Syncing server code to ${REMOTE_HOST}:${REMOTE_APP_DIR} ..."
rsync -avz --delete \
--exclude='.DS_Store' \
--exclude='.git/' \
--exclude='.env' \
--exclude='.env.example' \
--exclude='dist/' \
--exclude='tests/' \
--exclude='scripts/' \
--exclude='node_modules/' \
--exclude='.htaccess' \
--exclude='.claude/' \
--exclude='AI_AGENT_REPORT.md' \
--exclude='*.test.ts' \
--exclude='vite.config.ts' \
--exclude='drizzle.config.ts' \
--exclude='biome.json' \
./ "${REMOTE_HOST}:${REMOTE_APP_DIR}/"
echo "==> Installing production dependencies on remote..."
ssh "${REMOTE_HOST}" "cd ${REMOTE_APP_DIR} && bun install --production"
echo "==> Restarting service..."
ssh "${REMOTE_HOST}" "systemctl --user restart movie-select 2>/dev/null || true"
echo "Done. Live at https://serve.uber.space/movie-select/"