Files
whattoplay/deploy.sh

55 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
SERVER="wtp"
REMOTE_HTML="~/html/"
REMOTE_SERVER="~/whattoplay/server/"
ENV_FILE=".env.1password"
echo "=== WhatToPlay Deploy ==="
# 1. Build frontend
echo ""
echo "[1/5] Building frontend..."
npm run build
# 2. Deploy frontend
echo ""
echo "[2/5] Deploying frontend..."
rsync -avz --delete dist/ "$SERVER:$REMOTE_HTML"
# 3. Deploy backend
echo ""
echo "[3/5] Deploying backend..."
rsync -avz --delete \
--exclude node_modules \
--exclude data/igdb-cache.json \
server/ "$SERVER:$REMOTE_SERVER"
# 4. Install backend dependencies on server
echo ""
echo "[4/5] Installing backend dependencies..."
ssh "$SERVER" "cd $REMOTE_SERVER && npm install --production"
# 5. Inject secrets from 1Password and restart
echo ""
echo "[5/5] Updating secrets and restarting service..."
TWITCH_CLIENT_ID=$(op read "op://Private/WhatToPlay/TWITCH_CLIENT_ID")
TWITCH_CLIENT_SECRET=$(op read "op://Private/WhatToPlay/TWITCH_CLIENT_SECRET")
ssh "$SERVER" "cat > ~/whattoplay.env << 'ENVEOF'
PORT=3000
ALLOWED_ORIGIN=https://wtp.uber.space
TWITCH_CLIENT_ID=$TWITCH_CLIENT_ID
TWITCH_CLIENT_SECRET=$TWITCH_CLIENT_SECRET
ENVEOF
chmod 600 ~/whattoplay.env"
ssh "$SERVER" "systemctl --user restart whattoplay"
echo ""
echo "=== Deploy complete ==="
echo "Frontend: https://wtp.uber.space"
echo "Backend: https://wtp.uber.space/api/health"