← back to Abrams Report
deploy-kamatera.sh
44 lines
#!/usr/bin/env bash
# deploy-kamatera.sh — abrams-report deploy to Kamatera
set -euo pipefail
REMOTE_HOST="root@45.61.58.125"
REMOTE_DIR="/root/Projects/Designer-Wallcoverings/DW-Websites/abrams-report"
HEALTH_URL="http://localhost:9779/health"
LOCAL_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "==> Syncing to Kamatera..."
rsync -az --delete \
--exclude 'node_modules/' \
--exclude '.git/' \
--exclude '.env*' \
--exclude 'data/*.db' \
--exclude 'data/*.db-shm' \
--exclude 'data/*.db-wal' \
--exclude '*.log' \
--exclude '.DS_Store' \
"$LOCAL_DIR/" "$REMOTE_HOST:$REMOTE_DIR/"
echo "==> Installing dependencies..."
ssh "$REMOTE_HOST" "cd $REMOTE_DIR && npm install --omit=dev 2>&1 | tail -3"
echo "==> Creating data dir if needed..."
ssh "$REMOTE_HOST" "mkdir -p $REMOTE_DIR/data"
echo "==> Starting/reloading pm2..."
ssh "$REMOTE_HOST" "cd $REMOTE_DIR && pm2 startOrReload ecosystem.config.js --update-env && pm2 save"
echo "==> Waiting for process to settle (5s)..."
sleep 5
echo "==> Health check..."
HEALTH=$(ssh "$REMOTE_HOST" "curl -sf $HEALTH_URL" 2>/dev/null || echo "FAIL")
if echo "$HEALTH" | grep -q '"ok"'; then
echo "PASS: $HEALTH"
else
echo "FAIL: health check returned: $HEALTH"
exit 1
fi
echo "==> Deploy complete."