Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m3s
CI/CD Pipeline / Security Scanning (push) Successful in 2m18s
CI/CD Pipeline / Lint and Format (push) Failing after 34s
CI/CD Pipeline / Terraform Validation (push) Failing after 20s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 22s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 40s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 49s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 21s
Validation / validate-genesis (push) Successful in 25s
Validation / validate-terraform (push) Failing after 21s
Validation / validate-kubernetes (push) Failing after 8s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-security (push) Failing after 1m11s
Validation / validate-documentation (push) Failing after 14s
Verify Deployment / Verify Deployment (push) Failing after 45s
Ship AddressActivityRegistry V1/V2, ISO20022IntakeGateway, Chain138ParticipantSurface, checkpoint hub contracts, checkpoint-core package, aggregator/indexer/sdk services, relay profile guards, M00 diamond bridge facet, and OMNL compliance contracts. Co-authored-by: Cursor <cursoragent@cursor.com>
95 lines
3.0 KiB
Bash
Executable File
95 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Start relay service with proper environment loading
|
|
|
|
cd "$(dirname "$0")"
|
|
PROJECT_ROOT="$(cd ../.. && pwd)"
|
|
PROFILE="${1:-}"
|
|
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
|
|
export RELAYER_PRIVATE_KEY="$PRIVATE_KEY"
|
|
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
|