feat/ponder-lm-indexing (#142)
This commit is contained in:
parent
de3c8eef94
commit
31063379a8
107 changed files with 12517 additions and 367 deletions
|
|
@ -68,11 +68,42 @@ services:
|
|||
export START_BLOCK="$START_BLOCK"
|
||||
export KRAIKEN_ADDRESS="$KRAIKEN"
|
||||
export STAKE_ADDRESS="$STAKE"
|
||||
export LM_ADDRESS="${LIQUIDITY_MANAGER:-0x0000000000000000000000000000000000000000}"
|
||||
export PONDER_NETWORK=BASE_SEPOLIA_LOCAL_FORK
|
||||
export PONDER_RPC_URL_BASE_SEPOLIA_LOCAL_FORK="$PONDER_RPC_URL_1"
|
||||
export PONDER_RPC_URL_1="$PONDER_RPC_URL_1"
|
||||
|
||||
echo "=== Starting Ponder (pre-built image) ==="
|
||||
# Overlay kraiken-lib and ponder source from workspace
|
||||
# CI_WORKSPACE points to the repo checkout directory
|
||||
WS="${CI_WORKSPACE:-$(pwd)}"
|
||||
echo "=== Workspace: $WS ==="
|
||||
|
||||
echo "=== Overlaying kraiken-lib from workspace ==="
|
||||
if [ -d "$WS/kraiken-lib/dist" ]; then
|
||||
cp -r "$WS/kraiken-lib/dist/." /app/kraiken-lib/dist/
|
||||
cp -r "$WS/kraiken-lib/src/." /app/kraiken-lib/src/
|
||||
echo "kraiken-lib updated from workspace (src + dist)"
|
||||
elif [ -d "$WS/kraiken-lib/src" ]; then
|
||||
cp -r "$WS/kraiken-lib/src/." /app/kraiken-lib/src/
|
||||
echo "kraiken-lib/src updated (dist not available — may need rebuild)"
|
||||
else
|
||||
echo "WARNING: kraiken-lib not found at $WS/kraiken-lib"
|
||||
fi
|
||||
|
||||
echo "=== Overlaying ponder source from workspace ==="
|
||||
# Copy individual source files (not the directory itself) to avoid nested src/src/
|
||||
if [ -d "$WS/services/ponder/src" ]; then
|
||||
cp -r "$WS/services/ponder/src/." /app/services/ponder/src/
|
||||
echo "ponder/src files updated from workspace"
|
||||
fi
|
||||
for f in ponder.schema.ts ponder.config.ts; do
|
||||
if [ -f "$WS/services/ponder/$f" ]; then
|
||||
cp "$WS/services/ponder/$f" /app/services/ponder/"$f"
|
||||
echo "ponder/$f updated from workspace"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "=== Starting Ponder (pre-built image + workspace overlay) ==="
|
||||
cd /app/services/ponder
|
||||
{
|
||||
echo "DATABASE_URL=${DATABASE_URL}"
|
||||
|
|
@ -80,7 +111,9 @@ services:
|
|||
echo "DATABASE_SCHEMA=${DATABASE_SCHEMA}"
|
||||
echo "START_BLOCK=${START_BLOCK}"
|
||||
} > .env.local
|
||||
exec npm run dev
|
||||
# Use 'start' mode in CI — 'dev' mode watches for file changes and causes
|
||||
# a hot-restart loop when workspace overlay modifies source files
|
||||
exec npm run start
|
||||
|
||||
# Webapp - waits for contracts.env from bootstrap
|
||||
- name: webapp
|
||||
|
|
@ -119,16 +152,17 @@ services:
|
|||
export VITE_SWAP_ROUTER=0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4
|
||||
export VITE_BASE_PATH=/app/
|
||||
|
||||
# kraiken-lib/src MUST be baked into the pre-built image
|
||||
# (Woodpecker services don't have workspace access, so we can't copy from /woodpecker/src/)
|
||||
echo "=== Verifying kraiken-lib/src in pre-built image ==="
|
||||
if [ -d /app/kraiken-lib/src ]; then
|
||||
echo "kraiken-lib/src found in image"
|
||||
ls -la /app/kraiken-lib/
|
||||
# Overlay kraiken-lib from workspace (may be newer than baked-in image)
|
||||
WS="${CI_WORKSPACE:-$(pwd)}"
|
||||
echo "=== Overlaying kraiken-lib from workspace ==="
|
||||
if [ -d "$WS/kraiken-lib/dist" ]; then
|
||||
cp -r "$WS/kraiken-lib/dist/." /app/kraiken-lib/dist/
|
||||
cp -r "$WS/kraiken-lib/src/." /app/kraiken-lib/src/
|
||||
echo "kraiken-lib updated from workspace (src + dist)"
|
||||
elif [ -d /app/kraiken-lib/src ]; then
|
||||
echo "kraiken-lib/src found in image (using baked-in version)"
|
||||
else
|
||||
echo "ERROR: kraiken-lib/src not found in image!"
|
||||
echo "The webapp-ci image needs to be rebuilt. Run build-ci-images pipeline."
|
||||
echo "Services in Woodpecker don't have workspace access - kraiken-lib/src must be baked into the image."
|
||||
echo "ERROR: kraiken-lib/src not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -224,8 +258,33 @@ steps:
|
|||
set -eu
|
||||
apk add --no-cache curl bash
|
||||
|
||||
echo "=== Waiting for DNS resolution (Docker embedded DNS can be slow under load) ==="
|
||||
for svc in ponder webapp landing caddy; do
|
||||
for attempt in $(seq 1 60); do
|
||||
if getent hosts "$svc" >/dev/null 2>&1; then
|
||||
echo "[dns] $svc resolved after $attempt attempts"
|
||||
break
|
||||
fi
|
||||
echo "[dns] ($attempt/60) waiting for $svc DNS..."
|
||||
sleep 5
|
||||
done
|
||||
done
|
||||
|
||||
echo "=== Waiting for stack to be healthy (max 7 min) ==="
|
||||
bash scripts/wait-for-service.sh http://ponder:42069/ 420 ponder
|
||||
bash scripts/wait-for-service.sh http://ponder:42069/health 420 ponder
|
||||
|
||||
# Extra: wait for ponder GraphQL to actually serve data
|
||||
echo "=== Waiting for Ponder GraphQL to respond ==="
|
||||
for i in $(seq 1 60); do
|
||||
if curl -sf --max-time 3 -X POST http://ponder:42069/graphql \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"query":"{ statss(limit:1) { items { id } } }"}' > /dev/null 2>&1; then
|
||||
echo "[wait] Ponder GraphQL ready after $((i * 5))s"
|
||||
break
|
||||
fi
|
||||
echo "[wait] ($i/60) Ponder GraphQL not ready..."
|
||||
sleep 5
|
||||
done
|
||||
bash scripts/wait-for-service.sh http://webapp:5173/app/ 420 webapp
|
||||
bash scripts/wait-for-service.sh http://landing:5174/ 420 landing
|
||||
bash scripts/wait-for-service.sh http://caddy:8081/app/ 420 caddy
|
||||
|
|
@ -246,13 +305,22 @@ steps:
|
|||
commands:
|
||||
- |
|
||||
set -eux
|
||||
|
||||
echo "=== Checking system resources ==="
|
||||
free -h || true
|
||||
cat /proc/meminfo | grep -E 'MemTotal|MemAvail' || true
|
||||
|
||||
echo "=== Verifying Playwright browsers ==="
|
||||
npx playwright install --dry-run 2>&1 || true
|
||||
ls -la /ms-playwright/ 2>/dev/null || echo "No /ms-playwright directory"
|
||||
|
||||
echo "=== Installing test dependencies ==="
|
||||
npm config set fund false
|
||||
npm config set audit false
|
||||
npm ci --no-audit --no-fund
|
||||
|
||||
echo "=== Running E2E tests ==="
|
||||
npx playwright test --reporter=list
|
||||
echo "=== Running E2E tests (workers=1 to limit memory) ==="
|
||||
npx playwright test --reporter=list --workers=1
|
||||
|
||||
# Step 4: Collect artifacts
|
||||
- name: collect-artifacts
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue