Files
smom-dbis-138/services/token-aggregation/deploy-to-vmid.sh
defiQUG fcd55aa9c4
Some checks failed
CI/CD Pipeline / Solidity Contracts (pull_request) Failing after 1m6s
CI/CD Pipeline / Security Scanning (pull_request) Successful in 12m42s
CI/CD Pipeline / Lint and Format (pull_request) Failing after 42s
CI/CD Pipeline / Terraform Validation (pull_request) Failing after 25s
CI/CD Pipeline / Kubernetes Validation (pull_request) Successful in 27s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (pull_request) Failing after 49s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (pull_request) Failing after 26s
Validation / validate-genesis (pull_request) Successful in 36s
Validation / validate-terraform (pull_request) Failing after 28s
Validation / validate-kubernetes (pull_request) Failing after 12s
Validation / validate-smart-contracts (pull_request) Failing after 13s
Validation / validate-security (pull_request) Failing after 1m39s
Validation / validate-documentation (pull_request) Failing after 18s
feat(token-aggregation): add historical pricing context, backfill, and indexer hardening
2026-04-25 23:45:07 -07:00

77 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Deploy token-aggregation service to a Proxmox VMID
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VMID="${1:-5000}"
PROXMOX_HOST="${2:-192.168.11.12}"
PROXMOX_USER="${PROXMOX_USER:-root}"
SERVICE_PORT="${SERVICE_PORT:-3001}"
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_ok() { echo -e "${GREEN}[OK]${NC} $1"; }
log_info "Deploying token-aggregation to VMID $VMID"
# Build
log_info "Building..."
(cd "$SCRIPT_DIR" && pnpm run build)
log_ok "Built"
# Package
log_info "Creating package..."
PACKAGE_ITEMS=(dist src package.json package-lock.json tsconfig.json scripts)
for optional in .env.example .env; do
[ -e "$SCRIPT_DIR/$optional" ] && PACKAGE_ITEMS+=("$optional")
done
(cd "$SCRIPT_DIR" && tar czf /tmp/token-agg.tar.gz --exclude=node_modules "${PACKAGE_ITEMS[@]}")
# Deploy
log_info "Deploying..."
scp /tmp/token-agg.tar.gz "$PROXMOX_USER@$PROXMOX_HOST:/tmp/"
ssh "$PROXMOX_USER@$PROXMOX_HOST" "
pct push $VMID /tmp/token-agg.tar.gz /tmp/token-agg.tar.gz
pct exec $VMID -- bash -c '
if ! command -v node &>/dev/null; then
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt-get install -y nodejs postgresql-client
fi
mkdir -p /opt/token-aggregation && cd /opt/token-aggregation
tar xzf /tmp/token-agg.tar.gz
npm ci --omit=dev
npm_config_build_from_source=true npm rebuild bcrypt >/dev/null 2>&1 || true
if [ ! -f .env ] && [ -f .env.example ]; then
cp .env.example .env
fi
'
"
# Create service
ssh "$PROXMOX_USER@$PROXMOX_HOST" "pct exec $VMID -- bash -c 'cat > /etc/systemd/system/token-aggregation.service <<EOF
[Unit]
Description=Token Aggregation Service
After=network.target postgresql.service
[Service]
Type=simple
User=root
WorkingDirectory=/opt/token-aggregation
Environment=\"NODE_ENV=production\"
Environment=\"PORT=$SERVICE_PORT\"
ExecStart=/usr/bin/node /opt/token-aggregation/dist/index.js
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable token-aggregation
'"
log_ok "Deployed. Configure /opt/token-aggregation/.env then: systemctl start token-aggregation"