Files
Nexus/deploy/deploy-frontend.sh
T

61 lines
2.0 KiB
Bash
Raw Normal View History

#!/bin/bash
# deploy-frontend.sh — Build Vuetify frontend and deploy to server
#
# Usage: bash deploy/deploy-frontend.sh
# Run from the Nexus project root directory.
set -euo pipefail
echo "═══ Nexus Frontend Deploy ═══"
# 1. Build
echo "▶ Building frontend..."
cd frontend && npx vite build && cd ..
echo "✓ Build complete"
# 2. Tar the build output (index.html + assets/)
echo "▶ Packaging..."
tar czf /tmp/nexus-frontend.tar.gz -C web/app index.html assets/
echo "✓ Package ready ($(du -h /tmp/nexus-frontend.tar.gz | cut -f1))"
# 3. Upload to server
echo "▶ Uploading to server..."
scp /tmp/nexus-frontend.tar.gz nexus:/tmp/nexus-frontend.tar.gz
echo "✓ Upload complete"
# 4. Extract on server + prune orphaned legacy chunks
echo "▶ Deploying on server..."
ssh nexus "cd /www/wwwroot/api.synaglobal.vip/web/app && tar xzf /tmp/nexus-frontend.tar.gz && rm /tmp/nexus-frontend.tar.gz"
echo "▶ Pruning orphaned assets (dry-run first)..."
if ! ssh nexus "python3 /www/wwwroot/api.synaglobal.vip/deploy/prune_frontend_assets.py --dry-run"; then
echo "✗ Prune dry-run failed — aborting (no files deleted)"
exit 1
fi
if ! ssh nexus "python3 /www/wwwroot/api.synaglobal.vip/deploy/prune_frontend_assets.py"; then
echo "✗ Prune failed — check index.html references before retry"
exit 1
fi
echo "✓ Extracted and pruned"
# 5. Restart backend
echo "▶ Restarting backend..."
ssh nexus "supervisorctl restart nexus"
echo "✓ Restarted"
# 6. Health check
sleep 3
HEALTH=$(ssh nexus "curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8600/health" 2>/dev/null || echo "000")
SPA=$(ssh nexus "curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:8600/app/" 2>/dev/null || echo "000")
echo ""
echo "═══ Verification ═══"
echo " /health → $HEALTH"
echo " /app/ → $SPA"
if [ "$HEALTH" = "200" ] && [ "$SPA" = "200" ]; then
echo "✓ Deploy successful!"
else
echo "✗ Verification failed — check server logs"
exit 1
fi