All checks were successful
CI / lint-and-test (push) Successful in 9m52s
Co-authored-by: Cursor <cursoragent@cursor.com>
68 lines
2.6 KiB
Bash
Executable File
68 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Remote Deployment Script
|
|
# This script copies deployment files to Proxmox host and runs deployment
|
|
|
|
set -euo pipefail
|
|
|
|
PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.11}"
|
|
PROXMOX_USER="${PROXMOX_USER:-root}"
|
|
DEPLOYMENT_DIR="/tmp/solace-dapp-deployment"
|
|
|
|
echo "=========================================="
|
|
echo "Remote Deployment to Proxmox VE"
|
|
echo "=========================================="
|
|
echo "Proxmox Host: $PROXMOX_HOST"
|
|
echo "User: $PROXMOX_USER"
|
|
echo ""
|
|
|
|
# Check if DATABASE_PASSWORD is set
|
|
if [[ -z "${DATABASE_PASSWORD:-}" ]]; then
|
|
echo "ERROR: DATABASE_PASSWORD environment variable must be set"
|
|
echo "Example: export DATABASE_PASSWORD='your_secure_password'"
|
|
exit 1
|
|
fi
|
|
|
|
# Get the script directory
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
echo "Copying deployment files to Proxmox host..."
|
|
ssh "$PROXMOX_USER@$PROXMOX_HOST" "mkdir -p $DEPLOYMENT_DIR"
|
|
scp -r "$SCRIPT_DIR"/* "$PROXMOX_USER@$PROXMOX_HOST:$DEPLOYMENT_DIR/"
|
|
|
|
echo "Copying project files (excluding node_modules and .next)..."
|
|
ssh "$PROXMOX_USER@$PROXMOX_HOST" "mkdir -p $DEPLOYMENT_DIR/project"
|
|
rsync -az --delete \
|
|
--exclude node_modules --exclude .next --exclude dist --exclude cache --exclude artifacts \
|
|
"$PROJECT_ROOT/backend/" "$PROXMOX_USER@$PROXMOX_HOST:$DEPLOYMENT_DIR/project/backend/"
|
|
rsync -az --delete \
|
|
--exclude node_modules --exclude .next \
|
|
"$PROJECT_ROOT/frontend/" "$PROXMOX_USER@$PROXMOX_HOST:$DEPLOYMENT_DIR/project/frontend/"
|
|
rsync -az --delete \
|
|
--exclude node_modules --exclude cache --exclude artifacts \
|
|
"$PROJECT_ROOT/contracts/" "$PROXMOX_USER@$PROXMOX_HOST:$DEPLOYMENT_DIR/project/contracts/"
|
|
# Monorepo lockfile (optional; deploy scripts fall back to --no-frozen-lockfile)
|
|
scp "$PROJECT_ROOT/pnpm-lock.yaml" "$PROJECT_ROOT/package.json" "$PROXMOX_USER@$PROXMOX_HOST:$DEPLOYMENT_DIR/project/" 2>/dev/null || true
|
|
|
|
echo "Setting up configuration..."
|
|
ssh "$PROXMOX_USER@$PROXMOX_HOST" "cat > $DEPLOYMENT_DIR/config/dapp.conf <<EOF
|
|
$(grep -v '^DATABASE_PASSWORD=' "$SCRIPT_DIR/config/dapp.conf")
|
|
DATABASE_PASSWORD=$DATABASE_PASSWORD
|
|
PROJECT_ROOT=$DEPLOYMENT_DIR/project
|
|
PROXMOX_STORAGE=thin1
|
|
CONTAINER_UNPRIVILEGED=0
|
|
CONTAINER_HOSTNAME=
|
|
EOF
|
|
"
|
|
|
|
echo "Running deployment on Proxmox host..."
|
|
ssh "$PROXMOX_USER@$PROXMOX_HOST" "cd $DEPLOYMENT_DIR && chmod +x *.sh && export DATABASE_PASSWORD='${DATABASE_PASSWORD}' DEPLOY_NGINX=true && ./deploy-dapp.sh"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Deployment Complete"
|
|
echo "=========================================="
|
|
echo "Check container status:"
|
|
echo " ssh $PROXMOX_USER@$PROXMOX_HOST 'pct list | grep -E \"300[0-3]\"'"
|
|
|