Files
smom-dbis-138/services/relay/start-relay.sh
defiQUG 6ba33a4d3f
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m18s
CI/CD Pipeline / Security Scanning (push) Successful in 2m27s
CI/CD Pipeline / Lint and Format (push) Failing after 46s
CI/CD Pipeline / Terraform Validation (push) Failing after 28s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 29s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 1m0s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 29s
Validation / validate-genesis (push) Successful in 30s
Validation / validate-terraform (push) Failing after 32s
Validation / validate-kubernetes (push) Failing after 10s
Validation / validate-smart-contracts (push) Failing after 13s
Validation / validate-security (push) Failing after 1m23s
Validation / validate-documentation (push) Failing after 22s
Verify Deployment / Verify Deployment (push) Failing after 11m53s
Add mainnet cW market registry and align ops scripts with Stack A.
- CWTokenMarketRegistry + USD feeds for mainnet cW* market anchors
- HYBX cross-chain treasury line registry expansion
- PMM seed default → live DODOPMMIntegration (0x86ADA6Ef…)
- mint-xau-chain138: troy-ounce mint helper with multisig path
- relay: prefer CCIP_MAINNET_LINK138 relayer key on default profile

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-22 19:50:52 -07:00

117 lines
4.3 KiB
Bash
Executable File

#!/bin/bash
# Start relay service with proper environment loading
cd "$(dirname "$0")"
PROJECT_ROOT="$(cd ../.. && pwd)"
PROFILE="${1:-}"
# Production relays run on Proxmox (/opt/smom-dbis-138), not operator workstation checkouts.
if [[ -f "$PROJECT_ROOT/../../scripts/lib/chainlink-production-placement.sh" ]]; then
# shellcheck source=../../scripts/lib/chainlink-production-placement.sh
source "$PROJECT_ROOT/../../scripts/lib/chainlink-production-placement.sh"
require_ccip_relay_on_proxmox || exit 1
elif [[ "$(pwd)" == *"/projects/"*"/services/relay"* ]] && [[ "${CCIP_RELAY_ALLOW_LOCAL:-0}" != "1" ]]; then
echo "ERROR: CCIP relay must run on Proxmox r630-01 (/opt/smom-dbis-138/services/relay). Set CCIP_RELAY_ALLOW_LOCAL=1 for dev." >&2
exit 1
fi
SKIP_ENV_LOCAL="${RELAY_SKIP_ENV_LOCAL:-0}"
declare -A ORIGINAL_ENV_VARS=()
while IFS='=' read -r key _; do
[ -n "$key" ] || continue
ORIGINAL_ENV_VARS["$key"]=1
done < <(env)
# Try to load NVM if available
if [ -f "$HOME/.nvm/nvm.sh" ]; then
source "$HOME/.nvm/nvm.sh"
nvm use node 2>/dev/null || nvm use --lts 2>/dev/null || true
elif [ -f "/usr/local/nvm/nvm.sh" ]; then
source "/usr/local/nvm/nvm.sh"
nvm use node 2>/dev/null || nvm use --lts 2>/dev/null || true
fi
load_env_file() {
local env_file="$1"
[ -f "$env_file" ] || return 0
while IFS= read -r line || [ -n "$line" ]; do
[[ "$line" =~ ^#.*$ ]] && continue
[[ -z "$line" ]] && continue
local key="${line%%=*}"
local value="${line#*=}"
if [[ -n "${ORIGINAL_ENV_VARS[$key]:-}" ]]; then
continue
fi
if [[ "$value" == *'${PRIVATE_KEY'* ]] && [ -n "${PRIVATE_KEY:-}" ] && [[ "$key" == "PRIVATE_KEY" || "$key" == "RELAYER_PRIVATE_KEY" ]]; then
export "$key=$PRIVATE_KEY"
continue
fi
if [[ "$line" =~ \$\{PRIVATE_KEY\} ]] && [ -n "${PRIVATE_KEY:-}" ]; then
export "${line//\$\{PRIVATE_KEY\}/$PRIVATE_KEY}"
continue
fi
export "$line"
done < "$env_file"
}
# Load project env through the shared loader so secure-secrets fallbacks and RPC cleanup
# behave the same way they do in deployment scripts.
if [ -f "$PROJECT_ROOT/scripts/load-env.sh" ]; then
# shellcheck disable=SC1090
source "$PROJECT_ROOT/scripts/load-env.sh" >/dev/null 2>&1
elif [ -f "$PROJECT_ROOT/.env" ]; then
source "$PROJECT_ROOT/.env"
fi
if [ -f .env ]; then
load_env_file .env
fi
# Profile-specific env should win over repo defaults, but .env.local remains the
# highest-precedence operator override for ad hoc experiments.
if [ -n "$PROFILE" ] && [ -f ".env.$PROFILE" ]; then
load_env_file ".env.$PROFILE"
fi
# Named profiles (mainnet-cw, bsc, …) must not inherit destination overrides from .env.local
# unless explicitly allowed — mixing caused mainnet router addresses on Avalanche RPC.
if [ "$SKIP_ENV_LOCAL" != "1" ] && [ -f .env.local ]; then
if [ -n "$PROFILE" ] && [ "${RELAY_ALLOW_ENV_LOCAL:-0}" != "1" ]; then
echo "Note: skipping .env.local for profile=$PROFILE (set RELAY_ALLOW_ENV_LOCAL=1 to override)"
else
load_env_file .env.local
fi
fi
if [ -n "$PROFILE" ]; then
export RELAY_PROFILE="$PROFILE"
fi
# Ensure PRIVATE_KEY is exported
if [ -n "$PRIVATE_KEY" ]; then
export PRIVATE_KEY
if { [ "$PROFILE" = "mainnet-link-138" ] || [ -z "$PROFILE" ]; } && [ -n "${CCIP_MAINNET_LINK138_RELAYER_PRIVATE_KEY:-}" ]; then
: # dedicated relayer set below
else
export RELAYER_PRIVATE_KEY="$PRIVATE_KEY"
fi
fi
# Dedicated relayer for mainnet-link-138 and default WETH lane (wins over deployer PRIVATE_KEY).
if { [ "$PROFILE" = "mainnet-link-138" ] || [ -z "$PROFILE" ]; } && [ -n "${CCIP_MAINNET_LINK138_RELAYER_PRIVATE_KEY:-}" ]; then
export RELAYER_PRIVATE_KEY="$CCIP_MAINNET_LINK138_RELAYER_PRIVATE_KEY"
if [ -n "${CCIP_MAINNET_LINK138_RELAYER_ADDRESS:-}" ]; then
export RELAYER_ADDRESS="$CCIP_MAINNET_LINK138_RELAYER_ADDRESS"
fi
fi
# Check if npm is available
if ! command -v npm > /dev/null 2>&1; then
echo "Error: npm is not found. Please install Node.js and npm first."
echo "Install with: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs"
exit 1
fi
# Start service
npm start