131 lines
3.4 KiB
Bash
Executable File
131 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Check external dependencies that cannot be satisfied by repo-only changes.
|
|
# Default: fail when any external blocker is unresolved.
|
|
# Use --advisory to always exit 0 while still printing blocker status.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
if [[ -f "$PROJECT_ROOT/scripts/lib/load-project-env.sh" ]]; then
|
|
# shellcheck disable=SC1091
|
|
source "$PROJECT_ROOT/scripts/lib/load-project-env.sh"
|
|
fi
|
|
|
|
ADVISORY=0
|
|
[[ "${1:-}" == "--advisory" ]] && ADVISORY=1
|
|
|
|
PASS_COUNT=0
|
|
FAIL_COUNT=0
|
|
|
|
log_ok() { printf '[OK] %s\n' "$1"; }
|
|
log_block() { printf '[BLOCKED] %s\n' "$1"; }
|
|
|
|
record_pass() {
|
|
PASS_COUNT=$((PASS_COUNT + 1))
|
|
log_ok "$1"
|
|
}
|
|
|
|
record_fail() {
|
|
FAIL_COUNT=$((FAIL_COUNT + 1))
|
|
log_block "$1"
|
|
}
|
|
|
|
http_ok() {
|
|
local url="$1"
|
|
curl -fsS -m 8 -o /dev/null "$url"
|
|
}
|
|
|
|
check_url_blocker() {
|
|
local blocker_id="$1"
|
|
local label="$2"
|
|
local url="${3:-}"
|
|
local hint="$4"
|
|
|
|
if [[ -z "$url" ]]; then
|
|
record_fail "$blocker_id $label: unresolved. $hint"
|
|
return 0
|
|
fi
|
|
|
|
if http_ok "$url"; then
|
|
record_pass "$blocker_id $label: reachable at $url"
|
|
else
|
|
record_fail "$blocker_id $label: configured but unreachable at $url"
|
|
fi
|
|
}
|
|
|
|
check_chain138_ci_rpc() {
|
|
local blocker_id="EXT-CHAIN138-CI-RPC"
|
|
local rpc="${CHAIN138_CI_RPC_URL:-${RPC_URL_138_PUBLIC:-${CHAIN138_PUBLIC_RPC_URL:-}}}"
|
|
|
|
if [[ -z "$rpc" ]]; then
|
|
record_fail "$blocker_id Chain 138 CI RPC: unresolved. Set CHAIN138_CI_RPC_URL (preferred) or RPC_URL_138_PUBLIC to a runner-reachable endpoint."
|
|
return 0
|
|
fi
|
|
|
|
if ! command -v cast >/dev/null 2>&1; then
|
|
record_fail "$blocker_id Chain 138 CI RPC: cast not available to verify $rpc"
|
|
return 0
|
|
fi
|
|
|
|
local block_number
|
|
block_number="$(cast block-number --rpc-url "$rpc" 2>/dev/null || true)"
|
|
if [[ -n "$block_number" ]]; then
|
|
record_pass "$blocker_id Chain 138 CI RPC: reachable at $rpc (block $block_number)"
|
|
else
|
|
record_fail "$blocker_id Chain 138 CI RPC: configured but unreachable at $rpc"
|
|
fi
|
|
}
|
|
|
|
echo "=== External Dependency Check ==="
|
|
echo ""
|
|
|
|
check_url_blocker \
|
|
"EXT-DBIS-CORE" \
|
|
"dbis_core deployment" \
|
|
"${DBIS_CORE_URL:-}" \
|
|
"Deploy dbis_core or set DBIS_CORE_URL to an existing reachable instance."
|
|
|
|
check_url_blocker \
|
|
"EXT-CC-PAYMENT-ADAPTERS" \
|
|
"cc-payment-adapters implementation" \
|
|
"${CC_PAYMENT_ADAPTERS_URL:-}" \
|
|
"Implement/host cc-payment-adapters and set CC_PAYMENT_ADAPTERS_URL."
|
|
|
|
check_url_blocker \
|
|
"EXT-CC-AUDIT-LEDGER" \
|
|
"cc-audit-ledger implementation" \
|
|
"${CC_AUDIT_LEDGER_URL:-}" \
|
|
"Implement/host cc-audit-ledger and set CC_AUDIT_LEDGER_URL."
|
|
|
|
check_url_blocker \
|
|
"EXT-CC-SHARED-EVENTS" \
|
|
"cc-shared-events implementation" \
|
|
"${CC_SHARED_EVENTS_URL:-}" \
|
|
"Implement/host cc-shared-events and set CC_SHARED_EVENTS_URL."
|
|
|
|
check_url_blocker \
|
|
"EXT-CC-SHARED-SCHEMAS" \
|
|
"cc-shared-schemas implementation" \
|
|
"${CC_SHARED_SCHEMAS_URL:-}" \
|
|
"Implement/host cc-shared-schemas and set CC_SHARED_SCHEMAS_URL."
|
|
|
|
check_url_blocker \
|
|
"EXT-FIN-GATEWAY" \
|
|
"FIN / Alliance Access gateway" \
|
|
"${FIN_GATEWAY_URL:-${ALLIANCE_ACCESS_URL:-}}" \
|
|
"Provision a real FIN / Alliance Access gateway and set FIN_GATEWAY_URL or ALLIANCE_ACCESS_URL."
|
|
|
|
check_chain138_ci_rpc
|
|
|
|
echo ""
|
|
echo "Resolved: $PASS_COUNT"
|
|
echo "Blocked: $FAIL_COUNT"
|
|
|
|
if (( FAIL_COUNT > 0 )) && (( ADVISORY == 0 )); then
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|