[object Object]

← back to Govarbitrage

Phase 21: deploy-auctions.sh — one-shot update deploy to auctions.agentabrams.com (rsync+migrate+build+free-feed populate+pm2), preserves server .env

49f1858f6722f83c1122f8e262c67379767a2464 · 2026-07-10 07:51:38 -0700 · Steve Abrams

Files touched

Diff

commit 49f1858f6722f83c1122f8e262c67379767a2464
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Jul 10 07:51:38 2026 -0700

    Phase 21: deploy-auctions.sh — one-shot update deploy to auctions.agentabrams.com (rsync+migrate+build+free-feed populate+pm2), preserves server .env
---
 scripts/deploy-auctions.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/scripts/deploy-auctions.sh b/scripts/deploy-auctions.sh
new file mode 100755
index 0000000..9d2ed2c
--- /dev/null
+++ b/scripts/deploy-auctions.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+# One-shot deploy of GovArbitrage → auctions.agentabrams.com (Kamatera).
+# Updates the existing stub in place: rsync code, install, migrate, build,
+# populate with the FREE feeds ($0), restart pm2. Preserves the server .env
+# (keeps DATABASE_URL); only appends missing auth secrets.
+set -euo pipefail
+
+HOST=root@45.61.58.125
+DIR=/root/public-projects/govarbitrage
+LOCAL=/Users/macstudio3/Projects/govarbitrage
+
+echo "▶ rsync app → $HOST:$DIR"
+cd "$LOCAL"
+rsync -az \
+  --exclude node_modules --exclude .next --exclude .git --exclude '.env' \
+  --exclude logs --exclude 'prisma/*.db' --exclude '.DS_Store' \
+  ./ "$HOST:$DIR/"
+
+echo "▶ remote: env, install, migrate, build, populate, restart"
+ssh "$HOST" bash -s <<'REMOTE'
+set -euo pipefail
+cd /root/public-projects/govarbitrage
+
+# Ensure required auth secrets exist without touching DATABASE_URL.
+touch .env
+grep -q '^AUTH_SECRET=' .env      || echo "AUTH_SECRET=\"$(openssl rand -hex 24)\"" >> .env
+grep -q '^ENCRYPTION_KEY=' .env    || echo "ENCRYPTION_KEY=\"$(openssl rand -hex 32)\"" >> .env
+grep -q '^GSA_API_KEY=' .env       || echo 'GSA_API_KEY="DEMO_KEY"' >> .env
+grep -q '^NODE_ENV=' .env          || echo 'NODE_ENV="production"' >> .env
+
+echo "  npm install"
+npm install --no-audit --no-fund
+echo "  prisma generate + db push"
+npx prisma generate
+npx prisma db push --skip-generate --accept-data-loss
+echo "  build"
+npm run build
+echo "  seed users (+ demo) then import FREE feeds (\$0)"
+npx tsx prisma/seed.ts || true
+npx tsx scripts/import-govdeals-free.ts 120 || true
+npx tsx scripts/import-gsa.ts 200 || true
+npx tsx scripts/import-grays.ts 100 || true
+echo "  restart pm2"
+pm2 restart govarbitrage --update-env
+pm2 save
+REMOTE
+
+echo "▶ smoke test"
+curl -s -o /dev/null -w "  auctions.agentabrams.com/login -> %{http_code}\n" https://auctions.agentabrams.com/login
+echo "✔ deploy complete — https://auctions.agentabrams.com  (login: admin@govarbitrage.local / changeme)"

← 357a4ea Phase 20: FREE GraysOnline (AU) importer via harvested Algol  ·  back to Govarbitrage  ·  Phase 21b: deploy-auctions.sh uses --force-reset (old Kamate 5216572 →