← 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."