Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
112 lines
4.9 KiB
Bash
Executable File
112 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run all deployment/verification commands on the Proxmox host via SSH.
|
|
# When using SSH + pct, root is not needed: use non-root PROXMOX_USER with pct permissions
|
|
# and set PROXMOX_VMID to run commands inside an LXC container.
|
|
#
|
|
# Usage:
|
|
# ./scripts/run-on-proxmox-via-ssh.sh
|
|
# PROXMOX_USER=deploy PROXMOX_VMID=5700 ./scripts/run-on-proxmox-via-ssh.sh # run in container via pct exec
|
|
# ./scripts/run-on-proxmox-via-ssh.sh --sync
|
|
#
|
|
# Optional: PROXMOX_SSH_OPTS, PROXMOX_REPO_PATH. Repo at PROXMOX_REPO_PATH or use --sync.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
# Load IP config (same as config/ip-addresses.conf)
|
|
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
|
|
|
PROXMOX_HOST="${PROXMOX_HOST:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"
|
|
# Non-root user with SSH and (if using pct) pct exec permissions — root not required
|
|
PROXMOX_USER="${PROXMOX_USER:-$USER}"
|
|
# When set, run commands inside LXC via pct exec (no root needed on host)
|
|
PROXMOX_VMID="${PROXMOX_VMID:-}"
|
|
# Path to the repo on the host or inside the container (when PROXMOX_VMID is set)
|
|
PROXMOX_REPO_PATH="${PROXMOX_REPO_PATH:-~/projects/proxmox}"
|
|
PROXMOX_SSH_OPTS="${PROXMOX_SSH_OPTS:--o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new}"
|
|
RPC_URL="${RPC_URL_138:-http://192.168.11.211:8545}"
|
|
DO_SYNC=""
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--sync) DO_SYNC=1 ;;
|
|
esac
|
|
done
|
|
|
|
export LC_ALL=C LANG=C
|
|
|
|
# Run a command on the host or inside the container (when PROXMOX_VMID is set, via pct exec)
|
|
run_remote() {
|
|
local cmd="export LC_ALL=C LANG=C; $*"
|
|
if [ -n "$PROXMOX_VMID" ]; then
|
|
local q
|
|
q=$(printf '%q ' "$cmd")
|
|
ssh $PROXMOX_SSH_OPTS "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $PROXMOX_VMID -- bash -c $q"
|
|
else
|
|
ssh $PROXMOX_SSH_OPTS "$PROXMOX_USER@$PROXMOX_HOST" "$cmd"
|
|
fi
|
|
}
|
|
|
|
echo "=============================================="
|
|
echo "Proxmox host: $PROXMOX_USER@$PROXMOX_HOST"
|
|
[ -n "$PROXMOX_VMID" ] && echo "Container (pct): $PROXMOX_VMID"
|
|
echo "Repo path: $PROXMOX_REPO_PATH"
|
|
echo "RPC: $RPC_URL"
|
|
echo "=============================================="
|
|
echo ""
|
|
|
|
# 0) Optional: rsync repo to host (or into container: rsync to host then pct push, or use path inside container)
|
|
if [ -n "$DO_SYNC" ]; then
|
|
echo "[0] Syncing repo to $PROXMOX_USER@$PROXMOX_HOST:$PROXMOX_REPO_PATH ..."
|
|
if [ -n "$PROXMOX_VMID" ]; then
|
|
ssh $PROXMOX_SSH_OPTS "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $PROXMOX_VMID -- mkdir -p \"$PROXMOX_REPO_PATH\""
|
|
rsync -az --delete \
|
|
--exclude '.git' --exclude 'node_modules' --exclude 'venv' --exclude '__pycache__' \
|
|
-e "ssh $PROXMOX_SSH_OPTS" \
|
|
"$PROJECT_ROOT/" "$PROXMOX_USER@$PROXMOX_HOST:/tmp/proxmox-sync/" || { echo "WARN: rsync to host failed."; exit 1; }
|
|
ssh $PROXMOX_SSH_OPTS "$PROXMOX_USER@$PROXMOX_HOST" "pct push $PROXMOX_VMID /tmp/proxmox-sync $PROXMOX_REPO_PATH --recursive 2>/dev/null || rsync -az /tmp/proxmox-sync/ \$(pct exec $PROXMOX_VMID -- printenv HOME)/proxmox-repo/ 2>/dev/null || true"
|
|
echo "Note: When using VMID, ensure repo is at $PROXMOX_REPO_PATH inside the container (e.g. pct push or mount)."
|
|
else
|
|
run_remote "mkdir -p \"$PROXMOX_REPO_PATH\""
|
|
rsync -az --delete \
|
|
--exclude '.git' --exclude 'node_modules' --exclude 'venv' --exclude '__pycache__' \
|
|
-e "ssh $PROXMOX_SSH_OPTS" \
|
|
"$PROJECT_ROOT/" "$PROXMOX_USER@$PROXMOX_HOST:$PROXMOX_REPO_PATH/" || { echo "WARN: rsync failed."; exit 1; }
|
|
fi
|
|
echo ""
|
|
fi
|
|
|
|
# 1) On-chain contract check (Chain 138)
|
|
echo "[1/4] On-chain contract check (Chain 138)..."
|
|
run_remote "cd \"$PROXMOX_REPO_PATH\" && ./scripts/verify/check-contracts-on-chain-138.sh \"$RPC_URL\"" || {
|
|
echo "WARN: check-contracts failed (RPC unreachable or repo path wrong?). Continuing."
|
|
}
|
|
echo ""
|
|
|
|
# 2) Phased deployment (smom-dbis-138) — skips phases when env set
|
|
echo "[2/4] Phased deployment (smom-dbis-138)..."
|
|
run_remote "cd \"$PROXMOX_REPO_PATH/smom-dbis-138\" && [ -f .env ] && source .env 2>/dev/null; ./scripts/deployment/deploy-all-phases.sh" || {
|
|
echo "WARN: deploy-all-phases failed. Continuing."
|
|
}
|
|
echo ""
|
|
|
|
# 3) Phoenix Deploy API — install to /opt and enable systemd
|
|
echo "[3/4] Phoenix Deploy API (install systemd)..."
|
|
run_remote "cd \"$PROXMOX_REPO_PATH/phoenix-deploy-api\" && [ -f scripts/install-systemd.sh ] && ./scripts/install-systemd.sh" || {
|
|
echo "WARN: phoenix-deploy-api install failed or script not found. Continuing."
|
|
}
|
|
echo ""
|
|
|
|
# 4) Blockscout verification (optional; from host that can reach Blockscout)
|
|
echo "[4/4] Blockscout contract verification..."
|
|
run_remote "cd \"$PROXMOX_REPO_PATH\" && source smom-dbis-138/.env 2>/dev/null; ./scripts/verify/run-contract-verification-with-proxy.sh" || {
|
|
echo "WARN: Blockscout verification failed or skipped (Blockscout may be unreachable). Continuing."
|
|
}
|
|
echo ""
|
|
|
|
echo "=============================================="
|
|
echo "All commands completed on Proxmox."
|
|
echo "=============================================="
|