← back to Homesonspec
deploy-full.sh
50 lines
#!/usr/bin/env bash
# Full deploy for the /yolo "Open Design" run: reskin + packages/search freshness
# filter + Stage-3 verification engine + the additive DB migration.
# ! bash ~/Projects/homesonspec/deploy-full.sh
set -euo pipefail
KH=root@45.61.58.125; REMOTE=/root/Projects/homesonspec; WEB=9975
RP='export PATH=$PATH:/root/.npm-global/bin:/usr/local/bin; export $(grep -E "^DATABASE_URL=" '"$REMOTE"'/.env | head -1 | xargs)'
echo "── 1/5 ship changed source (reskin + search + workers + prisma) ──"
rsync -az --delete ~/Projects/homesonspec/apps/web/src/ $KH:$REMOTE/apps/web/src/
rsync -az --delete ~/Projects/homesonspec/packages/search/src/ $KH:$REMOTE/packages/search/src/
rsync -az --delete ~/Projects/homesonspec/packages/publisher/src/ $KH:$REMOTE/packages/publisher/src/
rsync -az --delete ~/Projects/homesonspec/packages/schemas/src/ $KH:$REMOTE/packages/schemas/src/
rsync -az --delete ~/Projects/homesonspec/apps/workers/src/ $KH:$REMOTE/apps/workers/src/
rsync -az ~/Projects/homesonspec/apps/workers/package.json $KH:$REMOTE/apps/workers/package.json
# Every collector's src — carries the extractors (image capture etc.).
rsync -az --delete ~/Projects/homesonspec/collectors/ $KH:$REMOTE/collectors/ --exclude node_modules
rsync -az --delete ~/Projects/homesonspec/packages/database/prisma/ $KH:$REMOTE/packages/database/prisma/
rsync -az ~/Projects/homesonspec/design-system/ $KH:$REMOTE/design-system/
echo " synced"
echo "── 1.5/5 link workspace packages (new collector adapters) ──"
ssh $KH "cd $REMOTE; export PATH=\$PATH:/root/.npm-global/bin:/usr/local/bin; pnpm install --silent 2>&1 | tail -1"
echo "── 2/5 apply ADDITIVE migration to live DB (SourceRun + SourceRegistry cols) ──"
ssh $KH "cd $REMOTE; $RP; pnpm --filter @homesonspec/database exec prisma migrate deploy 2>&1 | grep -iE 'migration|applied|already|error' | head"
echo "── 3/5 regenerate Prisma client ──"
ssh $KH "cd $REMOTE; $RP; pnpm --filter @homesonspec/database exec prisma generate 2>&1 | grep -iE 'Generated|error' | head -3"
echo "── 4/5 rebuild web (must compile before restart) ──"
BUILD=$(ssh $KH "cd $REMOTE; $RP; pnpm --filter @homesonspec/web build 2>&1 | grep -iE 'Compiled successfully|Failed|Type error|error TS' | head -4")
echo "$BUILD"
if ! echo "$BUILD" | grep -qi 'Compiled successfully'; then
echo "❌ build did NOT report success — NOT restarting pm2 (old build still serving). Aborting."
exit 1
fi
echo "── 5/5 restart + verify ──"
ssh $KH "cd $REMOTE; $RP
pm2 restart homesonspec-web --update-env >/dev/null; sleep 4
echo -n ' local web → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/
echo -n ' /map page → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/map
echo -n ' /search page → '; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:$WEB/search
echo -n ' /api/map count → '; curl -s http://127.0.0.1:$WEB/api/map | python3 -c 'import sys,json;d=json.load(sys.stdin);print(d[\"total\"],\"markers,\",len(d[\"builders\"]),\"builder(s)\")'
echo -n ' verify CLI ok? → '; pnpm --filter @homesonspec/workers verify -- health 2>/dev/null | python3 -c 'import sys,json;d=json.load(sys.stdin);print(len(d),\"sources tracked\")' 2>/dev/null || echo 'verify CLI FAILED'
echo -n ' public https → '; curl -s -o /dev/null -w '%{http_code}\n' https://homesonspec.com/map
echo -n ' font shipped? → '; curl -s http://127.0.0.1:$WEB/ | grep -oiE 'fraunces|inter' | head -1 || echo '(font name not inlined — check rendered CSS)'"
echo "✅ full deploy complete"