From f1d5eca2c09792b3539aae2c44ce3c7379f2ea7e Mon Sep 17 00:00:00 2001 From: Kpa-clawbot Date: Sun, 29 Mar 2026 17:39:08 +0000 Subject: [PATCH 1/4] =?UTF-8?q?ci:=20restructure=20pipeline=20=E2=80=94=20?= =?UTF-8?q?sequential=20fail-fast=20with=20fixture=20DB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructures the entire CI/CD pipeline: PR pipeline (pull_request to master): 1. Go unit tests — run first, fail-fast 2. Playwright E2E — runs ONLY if Go tests pass, uses Go server with real data fixture DB (test-fixtures/e2e-fixture.db), fail-fast on first failure, with frontend coverage collection 3. Docker build — runs ONLY if both above pass, verify only Master pipeline (push to master): - Same chain + deploy to staging + badge publishing Removed: - ALL Node.js server-side unit tests (deprecated JS server) - npm ci / npm run test steps - JS server coverage collection (COVERAGE=1) - Detect changed files logic — just run everything - Skip if docs-only change logic — just run everything - Cancel-workflow-on-failure API hacks Added: - Real data fixture DB captured from staging (200 nodes, 31 observers, 500 packets) for deterministic E2E tests - scripts/capture-fixture.sh to refresh the fixture from staging - .gitignore exception for the fixture DB --- .github/workflows/deploy.yml | 794 ++++++++++++++--------------------- .gitignore | 1 + scripts/capture-fixture.sh | 142 +++++++ test-fixtures/e2e-fixture.db | Bin 0 -> 409600 bytes 4 files changed, 463 insertions(+), 474 deletions(-) create mode 100755 scripts/capture-fixture.sh create mode 100644 test-fixtures/e2e-fixture.db diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ad850d82..51ddd92a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,474 +1,320 @@ -name: Deploy - -on: - push: - branches: [master] - paths-ignore: - - '**.md' - - 'LICENSE' - - '.gitignore' - - 'docs/**' - pull_request: - branches: [master] - -concurrency: - group: deploy-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - -# Pipeline: -# node-test (frontend tests) ──┐ -# go-test ├──→ build → deploy → publish -# └─ (both wait) -# -# Proto validation flow: -# 1. go-test job: verify .proto files compile (syntax check) -# 2. deploy job: capture fresh fixtures from prod, validate protos match actual API responses - -jobs: - # ─────────────────────────────────────────────────────────────── - # 1. Go Build & Test — compiles + tests Go modules, coverage badges - # ─────────────────────────────────────────────────────────────── - go-test: - name: "✅ Go Build & Test" - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: Skip if docs-only change - id: docs-check - run: | - if [ "${{ github.event_name }}" = "pull_request" ]; then - CHANGED=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) - NON_DOCS=$(echo "$CHANGED" | grep -cvE '\.(md)$|^LICENSE$|^\.gitignore$|^docs/' || true) - if [ "$NON_DOCS" -eq 0 ]; then - echo "docs_only=true" >> $GITHUB_OUTPUT - echo "📄 Docs-only PR — skipping heavy CI" - fi - fi - - - name: Set up Go 1.22 - if: steps.docs-check.outputs.docs_only != 'true' - uses: actions/setup-go@v6 - with: - go-version: '1.22' - cache-dependency-path: | - cmd/server/go.sum - cmd/ingestor/go.sum - - - name: Build and test Go server (with coverage) - if: steps.docs-check.outputs.docs_only != 'true' - run: | - set -e -o pipefail - cd cmd/server - go build . - go test -coverprofile=server-coverage.out ./... 2>&1 | tee server-test.log - echo "--- Go Server Coverage ---" - go tool cover -func=server-coverage.out | tail -1 - - - name: Build and test Go ingestor (with coverage) - if: steps.docs-check.outputs.docs_only != 'true' - run: | - set -e -o pipefail - cd cmd/ingestor - go build . - go test -coverprofile=ingestor-coverage.out ./... 2>&1 | tee ingestor-test.log - echo "--- Go Ingestor Coverage ---" - go tool cover -func=ingestor-coverage.out | tail -1 - - - name: Verify proto syntax (all .proto files compile) - if: steps.docs-check.outputs.docs_only != 'true' - run: | - set -e - echo "Installing protoc..." - sudo apt-get update -qq - sudo apt-get install -y protobuf-compiler - - echo "Checking proto syntax..." - for proto in proto/*.proto; do - echo " ✓ $(basename "$proto")" - protoc --proto_path=proto --descriptor_set_out=/dev/null "$proto" - done - echo "✅ All .proto files are syntactically valid" - - - name: Generate Go coverage badges - if: always() && steps.docs-check.outputs.docs_only != 'true' - run: | - mkdir -p .badges - - # Parse server coverage - SERVER_COV="0" - if [ -f cmd/server/server-coverage.out ]; then - SERVER_COV=$(cd cmd/server && go tool cover -func=server-coverage.out | tail -1 | grep -oP '[\d.]+(?=%)') - fi - SERVER_COLOR="red" - if [ "$(echo "$SERVER_COV >= 80" | bc -l 2>/dev/null)" = "1" ]; then - SERVER_COLOR="green" - elif [ "$(echo "$SERVER_COV >= 60" | bc -l 2>/dev/null)" = "1" ]; then - SERVER_COLOR="yellow" - fi - echo "{\"schemaVersion\":1,\"label\":\"go server coverage\",\"message\":\"${SERVER_COV}%\",\"color\":\"${SERVER_COLOR}\"}" > .badges/go-server-coverage.json - echo "Go server coverage: ${SERVER_COV}% (${SERVER_COLOR})" - - # Parse ingestor coverage - INGESTOR_COV="0" - if [ -f cmd/ingestor/ingestor-coverage.out ]; then - INGESTOR_COV=$(cd cmd/ingestor && go tool cover -func=ingestor-coverage.out | tail -1 | grep -oP '[\d.]+(?=%)') - fi - INGESTOR_COLOR="red" - if [ "$(echo "$INGESTOR_COV >= 80" | bc -l 2>/dev/null)" = "1" ]; then - INGESTOR_COLOR="green" - elif [ "$(echo "$INGESTOR_COV >= 60" | bc -l 2>/dev/null)" = "1" ]; then - INGESTOR_COLOR="yellow" - fi - echo "{\"schemaVersion\":1,\"label\":\"go ingestor coverage\",\"message\":\"${INGESTOR_COV}%\",\"color\":\"${INGESTOR_COLOR}\"}" > .badges/go-ingestor-coverage.json - echo "Go ingestor coverage: ${INGESTOR_COV}% (${INGESTOR_COLOR})" - - echo "## Go Coverage" >> $GITHUB_STEP_SUMMARY - echo "| Module | Coverage |" >> $GITHUB_STEP_SUMMARY - echo "|--------|----------|" >> $GITHUB_STEP_SUMMARY - echo "| Server | ${SERVER_COV}% |" >> $GITHUB_STEP_SUMMARY - echo "| Ingestor | ${INGESTOR_COV}% |" >> $GITHUB_STEP_SUMMARY - - - name: Cancel workflow on failure - if: failure() - run: | - curl -s -X POST \ - -H "Authorization: Bearer ${{ github.token }}" \ - "https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/cancel" - - - name: Upload Go coverage badges - if: always() - uses: actions/upload-artifact@v5 - with: - name: go-badges - path: .badges/go-*.json - retention-days: 1 - if-no-files-found: ignore - - # ─────────────────────────────────────────────────────────────── - # 2. Node.js Tests — backend unit tests + Playwright E2E, coverage - # ─────────────────────────────────────────────────────────────── - node-test: - name: "🧪 Node.js Tests" - if: false # TEMPORARILY DISABLED — CI restructure in progress - runs-on: [self-hosted, Linux] - defaults: - run: - shell: bash - steps: - - name: Checkout code - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: Skip if docs-only change - id: docs-check - run: | - if [ "${{ github.event_name }}" = "pull_request" ]; then - CHANGED=$(git diff --name-only origin/${{ github.base_ref }}...HEAD) - NON_DOCS=$(echo "$CHANGED" | grep -cvE '\.(md)$|^LICENSE$|^\.gitignore$|^docs/' || true) - if [ "$NON_DOCS" -eq 0 ]; then - echo "docs_only=true" >> $GITHUB_OUTPUT - echo "📄 Docs-only PR — skipping heavy CI" - fi - fi - - - name: Set up Node.js 22 - if: steps.docs-check.outputs.docs_only != 'true' - uses: actions/setup-node@v5 - with: - node-version: '22' - - - name: Set up Go 1.22 - if: steps.docs-check.outputs.docs_only != 'true' - uses: actions/setup-go@v6 - with: - go-version: '1.22' - cache-dependency-path: cmd/server/go.sum - - - name: Build Go server for E2E tests - if: steps.docs-check.outputs.docs_only != 'true' - run: | - cd cmd/server - go build -o ../../corescope-server . - echo "Go server built successfully" - - - name: Install npm dependencies - if: steps.docs-check.outputs.docs_only != 'true' - run: npm ci --production=false - - - name: Detect changed files - if: steps.docs-check.outputs.docs_only != 'true' - id: changes - run: | - BACKEND=$(git diff --name-only HEAD~1 | grep -cE '^(server|db|decoder|packet-store|server-helpers|iata-coords)\.js$' || true) - FRONTEND=$(git diff --name-only HEAD~1 | grep -cE '^public/' || true) - TESTS=$(git diff --name-only HEAD~1 | grep -cE '^test-|^tools/' || true) - CI=$(git diff --name-only HEAD~1 | grep -cE '\.github/|package\.json|test-all\.sh|scripts/' || true) - # If CI/test infra changed, run everything - if [ "$CI" -gt 0 ]; then BACKEND=1; FRONTEND=1; fi - # If test files changed, run everything - if [ "$TESTS" -gt 0 ]; then BACKEND=1; FRONTEND=1; fi - echo "backend=$([[ $BACKEND -gt 0 ]] && echo true || echo false)" >> $GITHUB_OUTPUT - echo "frontend=$([[ $FRONTEND -gt 0 ]] && echo true || echo false)" >> $GITHUB_OUTPUT - echo "Changes: backend=$BACKEND frontend=$FRONTEND tests=$TESTS ci=$CI" - - - name: Run backend tests with coverage - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.backend == 'true' - run: | - npx c8 --reporter=text-summary --reporter=text sh test-all.sh 2>&1 | tee test-output.txt - - TOTAL_PASS=$(grep -oP '\d+(?= passed)' test-output.txt | awk '{s+=$1} END {print s}') - TOTAL_FAIL=$(grep -oP '\d+(?= failed)' test-output.txt | awk '{s+=$1} END {print s}') - BE_COVERAGE=$(grep 'Statements' test-output.txt | tail -1 | grep -oP '[\d.]+(?=%)') - - mkdir -p .badges - BE_COLOR="red" - [ "$(echo "$BE_COVERAGE > 60" | bc -l 2>/dev/null)" = "1" ] && BE_COLOR="yellow" - [ "$(echo "$BE_COVERAGE > 80" | bc -l 2>/dev/null)" = "1" ] && BE_COLOR="brightgreen" - echo "{\"schemaVersion\":1,\"label\":\"backend tests\",\"message\":\"${TOTAL_PASS} passed\",\"color\":\"brightgreen\"}" > .badges/backend-tests.json - echo "{\"schemaVersion\":1,\"label\":\"backend coverage\",\"message\":\"${BE_COVERAGE}%\",\"color\":\"${BE_COLOR}\"}" > .badges/backend-coverage.json - - echo "## Backend: ${TOTAL_PASS} tests, ${BE_COVERAGE}% coverage" >> $GITHUB_STEP_SUMMARY - - - name: Run backend tests (quick, no coverage) - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.backend == 'false' - run: npm run test:unit - - - name: Install Playwright browser - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'true' - run: | - # Install chromium (skips download if already cached on self-hosted runner) - npx playwright install chromium 2>/dev/null || true - # Install system deps only if missing (apt-get is slow) - npx playwright install-deps chromium 2>/dev/null || true - - - name: Instrument frontend JS for coverage - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'true' - run: sh scripts/instrument-frontend.sh - - - name: Start instrumented test server on port 13581 - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'true' - run: | - # Kill any stale server on 13581 - fuser -k 13581/tcp 2>/dev/null || true - sleep 2 - ./corescope-server -port 13581 -public public-instrumented & - echo $! > .server.pid - echo "Server PID: $(cat .server.pid)" - # Health-check poll loop (up to 30s) - for i in $(seq 1 30); do - if curl -sf http://localhost:13581/api/stats > /dev/null 2>&1; then - echo "Server ready after ${i}s" - break - fi - if [ "$i" -eq 30 ]; then - echo "Server failed to start within 30s" - echo "Last few lines from server logs:" - ps aux | grep "corescope-server" || echo "No server process found" - exit 1 - fi - sleep 1 - done - - - name: Run Playwright E2E + coverage collection concurrently - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'true' - run: | - # Run E2E tests and coverage collection in parallel — both use the same server - BASE_URL=http://localhost:13581 node test-e2e-playwright.js 2>&1 | tee e2e-output.txt & - E2E_PID=$! - BASE_URL=http://localhost:13581 node scripts/collect-frontend-coverage.js 2>&1 | tee fe-coverage-output.txt & - COV_PID=$! - - # Wait for both — E2E must pass, coverage is best-effort - E2E_EXIT=0 - wait $E2E_PID || E2E_EXIT=$? - wait $COV_PID || true - - # Fail if E2E failed - [ $E2E_EXIT -ne 0 ] && exit $E2E_EXIT - true - - - name: Generate frontend coverage badges - if: always() && steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'true' - run: | - E2E_PASS=$(grep -oP '[0-9]+(?=/)' e2e-output.txt | tail -1) - - mkdir -p .badges - # Merge E2E + coverage collector data if both exist - if [ -f .nyc_output/frontend-coverage.json ] || [ -f .nyc_output/e2e-coverage.json ]; then - npx nyc report --reporter=text-summary --reporter=text 2>&1 | tee fe-report.txt - FE_COVERAGE=$(grep 'Statements' fe-report.txt | head -1 | grep -oP '[\d.]+(?=%)' || echo "0") - FE_COVERAGE=${FE_COVERAGE:-0} - FE_COLOR="red" - [ "$(echo "$FE_COVERAGE > 50" | bc -l 2>/dev/null)" = "1" ] && FE_COLOR="yellow" - [ "$(echo "$FE_COVERAGE > 80" | bc -l 2>/dev/null)" = "1" ] && FE_COLOR="brightgreen" - echo "{\"schemaVersion\":1,\"label\":\"frontend coverage\",\"message\":\"${FE_COVERAGE}%\",\"color\":\"${FE_COLOR}\"}" > .badges/frontend-coverage.json - echo "## Frontend: ${FE_COVERAGE}% coverage" >> $GITHUB_STEP_SUMMARY - fi - echo "{\"schemaVersion\":1,\"label\":\"frontend tests\",\"message\":\"${E2E_PASS:-0} E2E passed\",\"color\":\"brightgreen\"}" > .badges/frontend-tests.json - - - name: Stop test server - if: always() && steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'true' - run: | - if [ -f .server.pid ]; then - kill $(cat .server.pid) 2>/dev/null || true - rm -f .server.pid - echo "Server stopped" - fi - - - name: Run frontend E2E (quick, no coverage) - if: steps.docs-check.outputs.docs_only != 'true' && steps.changes.outputs.frontend == 'false' - run: | - fuser -k 13581/tcp 2>/dev/null || true - ./corescope-server -port 13581 -public public & - SERVER_PID=$! - # Wait for server to be ready (up to 15s) - for i in $(seq 1 15); do - curl -sf http://localhost:13581/api/stats > /dev/null 2>&1 && break - sleep 1 - done - BASE_URL=http://localhost:13581 node test-e2e-playwright.js || true - kill $SERVER_PID 2>/dev/null || true - - - name: Cancel workflow on failure - if: failure() - run: | - curl -s -X POST \ - -H "Authorization: Bearer ${{ github.token }}" \ - "https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/cancel" - - - name: Upload Node.js test badges - if: always() - uses: actions/upload-artifact@v5 - with: - name: node-badges - path: .badges/ - retention-days: 1 - if-no-files-found: ignore - - # ─────────────────────────────────────────────────────────────── - # 3. Build Docker Image - # ─────────────────────────────────────────────────────────────── - build: - name: "🏗️ Build Docker Image" - if: github.event_name == 'push' - needs: [go-test, node-test] - runs-on: [self-hosted, Linux] - steps: - - name: Checkout code - uses: actions/checkout@v5 - - - name: Set up Node.js 22 - uses: actions/setup-node@v5 - with: - node-version: '22' - - - name: Build Go Docker image - run: | - echo "${GITHUB_SHA::7}" > .git-commit - APP_VERSION=$(node -p "require('./package.json').version") \ - GIT_COMMIT="${GITHUB_SHA::7}" \ - docker compose --profile staging-go build staging-go - echo "Built Go staging image" - - # ─────────────────────────────────────────────────────────────── - # 4. Deploy Staging — start on port 82, healthcheck, smoke test - # ─────────────────────────────────────────────────────────────── - deploy: - name: "🚀 Deploy Staging" - if: github.event_name == 'push' - needs: [build] - runs-on: [self-hosted, Linux] - steps: - - name: Checkout code - uses: actions/checkout@v5 - - - name: Start staging on port 82 - run: | - # Force remove stale containers - docker rm -f corescope-staging-go 2>/dev/null || true - # Clean up stale ports - fuser -k 82/tcp 2>/dev/null || true - docker compose --profile staging-go up -d staging-go - - - name: Healthcheck staging container - run: | - for i in $(seq 1 120); do - HEALTH=$(docker inspect corescope-staging-go --format '{{.State.Health.Status}}' 2>/dev/null || echo "starting") - if [ "$HEALTH" = "healthy" ]; then - echo "Staging healthy after ${i}s" - break - fi - if [ "$i" -eq 120 ]; then - echo "Staging failed health check after 120s" - docker logs corescope-staging-go --tail 50 - exit 1 - fi - sleep 1 - done - - - name: Smoke test staging API - run: | - if curl -sf http://localhost:82/api/stats | grep -q engine; then - echo "Staging verified — engine field present ✅" - else - echo "Staging /api/stats did not return engine field" - exit 1 - fi - - # ─────────────────────────────────────────────────────────────── - # 5. Publish Badges & Summary - # ─────────────────────────────────────────────────────────────── - publish: - name: "📝 Publish Badges & Summary" - if: github.event_name == 'push' - needs: [deploy] - runs-on: [self-hosted, Linux] - steps: - - name: Checkout code - uses: actions/checkout@v5 - - - name: Download Go coverage badges - continue-on-error: true - uses: actions/download-artifact@v5 - with: - name: go-badges - path: .badges/ - - - name: Download Node.js test badges - continue-on-error: true - uses: actions/download-artifact@v5 - with: - name: node-badges - path: .badges/ - - - name: Publish coverage badges to repo - continue-on-error: true - run: | - git config user.name "github-actions" - git config user.email "actions@github.com" - git remote set-url origin https://x-access-token:${{ github.token }}@github.com/${{ github.repository }}.git - git add .badges/ -f - git diff --cached --quiet || (git commit -m "ci: update test badges [skip ci]" && git push) || echo "Badge push failed" - - - name: Post deployment summary - run: | - echo "## Staging Deployed ✓" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Commit:** \`$(git rev-parse --short HEAD)\` — $(git log -1 --format=%s)" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Staging:** http://:82" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "To promote to production:" >> $GITHUB_STEP_SUMMARY - echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY - echo "ssh deploy@\$VM_HOST" >> $GITHUB_STEP_SUMMARY - echo "cd /opt/corescope-deploy" >> $GITHUB_STEP_SUMMARY - echo "./manage.sh promote" >> $GITHUB_STEP_SUMMARY - echo "\`\`\`" >> $GITHUB_STEP_SUMMARY +name: CI/CD Pipeline + +on: + push: + branches: [master] + pull_request: + branches: [master] + +concurrency: + group: ci-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + +# Pipeline (sequential, fail-fast): +# go-test → e2e-test → build → deploy → publish +# PRs stop after build. Master continues to deploy + publish. + +jobs: + # ─────────────────────────────────────────────────────────────── + # 1. Go Build & Test + # ─────────────────────────────────────────────────────────────── + go-test: + name: "✅ Go Build & Test" + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - name: Set up Go 1.22 + uses: actions/setup-go@v6 + with: + go-version: '1.22' + cache-dependency-path: | + cmd/server/go.sum + cmd/ingestor/go.sum + + - name: Build and test Go server (with coverage) + run: | + set -e -o pipefail + cd cmd/server + go build . + go test -coverprofile=server-coverage.out ./... 2>&1 | tee server-test.log + echo "--- Go Server Coverage ---" + go tool cover -func=server-coverage.out | tail -1 + + - name: Build and test Go ingestor (with coverage) + run: | + set -e -o pipefail + cd cmd/ingestor + go build . + go test -coverprofile=ingestor-coverage.out ./... 2>&1 | tee ingestor-test.log + echo "--- Go Ingestor Coverage ---" + go tool cover -func=ingestor-coverage.out | tail -1 + + - name: Verify proto syntax + run: | + set -e + sudo apt-get update -qq + sudo apt-get install -y protobuf-compiler + for proto in proto/*.proto; do + echo " ✓ $(basename "$proto")" + protoc --proto_path=proto --descriptor_set_out=/dev/null "$proto" + done + echo "✅ All .proto files are syntactically valid" + + - name: Generate Go coverage badges + if: always() + run: | + mkdir -p .badges + + SERVER_COV="0" + if [ -f cmd/server/server-coverage.out ]; then + SERVER_COV=$(cd cmd/server && go tool cover -func=server-coverage.out | tail -1 | grep -oP '[\d.]+(?=%)') + fi + SERVER_COLOR="red" + if [ "$(echo "$SERVER_COV >= 80" | bc -l 2>/dev/null)" = "1" ]; then SERVER_COLOR="green" + elif [ "$(echo "$SERVER_COV >= 60" | bc -l 2>/dev/null)" = "1" ]; then SERVER_COLOR="yellow"; fi + echo "{\"schemaVersion\":1,\"label\":\"go server coverage\",\"message\":\"${SERVER_COV}%\",\"color\":\"${SERVER_COLOR}\"}" > .badges/go-server-coverage.json + + INGESTOR_COV="0" + if [ -f cmd/ingestor/ingestor-coverage.out ]; then + INGESTOR_COV=$(cd cmd/ingestor && go tool cover -func=ingestor-coverage.out | tail -1 | grep -oP '[\d.]+(?=%)') + fi + INGESTOR_COLOR="red" + if [ "$(echo "$INGESTOR_COV >= 80" | bc -l 2>/dev/null)" = "1" ]; then INGESTOR_COLOR="green" + elif [ "$(echo "$INGESTOR_COV >= 60" | bc -l 2>/dev/null)" = "1" ]; then INGESTOR_COLOR="yellow"; fi + echo "{\"schemaVersion\":1,\"label\":\"go ingestor coverage\",\"message\":\"${INGESTOR_COV}%\",\"color\":\"${INGESTOR_COLOR}\"}" > .badges/go-ingestor-coverage.json + + echo "## Go Coverage" >> $GITHUB_STEP_SUMMARY + echo "| Module | Coverage |" >> $GITHUB_STEP_SUMMARY + echo "|--------|----------|" >> $GITHUB_STEP_SUMMARY + echo "| Server | ${SERVER_COV}% |" >> $GITHUB_STEP_SUMMARY + echo "| Ingestor | ${INGESTOR_COV}% |" >> $GITHUB_STEP_SUMMARY + + - name: Upload Go coverage badges + if: always() + uses: actions/upload-artifact@v5 + with: + name: go-badges + path: .badges/go-*.json + retention-days: 1 + if-no-files-found: ignore + + # ─────────────────────────────────────────────────────────────── + # 2. Playwright E2E Tests (against Go server with fixture DB) + # ─────────────────────────────────────────────────────────────── + e2e-test: + name: "🎭 Playwright E2E Tests" + needs: [go-test] + runs-on: [self-hosted, Linux] + defaults: + run: + shell: bash + steps: + - name: Checkout code + uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - name: Set up Node.js 22 + uses: actions/setup-node@v5 + with: + node-version: '22' + + - name: Set up Go 1.22 + uses: actions/setup-go@v6 + with: + go-version: '1.22' + cache-dependency-path: cmd/server/go.sum + + - name: Build Go server + run: | + cd cmd/server + go build -o ../../corescope-server . + echo "Go server built successfully" + + - name: Install npm dependencies + run: npm ci --production=false + + - name: Install Playwright browser + run: | + npx playwright install chromium 2>/dev/null || true + npx playwright install-deps chromium 2>/dev/null || true + + - name: Instrument frontend JS for coverage + run: sh scripts/instrument-frontend.sh + + - name: Start Go server with fixture DB + run: | + fuser -k 13581/tcp 2>/dev/null || true + sleep 1 + ./corescope-server -port 13581 -db test-fixtures/e2e-fixture.db -public public-instrumented & + echo $! > .server.pid + for i in $(seq 1 30); do + if curl -sf http://localhost:13581/api/stats > /dev/null 2>&1; then + echo "Server ready after ${i}s" + break + fi + if [ "$i" -eq 30 ]; then + echo "Server failed to start within 30s" + exit 1 + fi + sleep 1 + done + + - name: Run Playwright E2E tests (fail-fast) + run: | + BASE_URL=http://localhost:13581 node test-e2e-playwright.js 2>&1 | tee e2e-output.txt + + - name: Collect frontend coverage + if: always() + run: | + BASE_URL=http://localhost:13581 node scripts/collect-frontend-coverage.js 2>&1 | tee fe-coverage-output.txt || true + + - name: Generate frontend coverage badges + if: always() + run: | + E2E_PASS=$(grep -oP '[0-9]+(?=/)' e2e-output.txt | tail -1 || echo "0") + + mkdir -p .badges + if [ -f .nyc_output/frontend-coverage.json ] || [ -f .nyc_output/e2e-coverage.json ]; then + npx nyc report --reporter=text-summary --reporter=text 2>&1 | tee fe-report.txt + FE_COVERAGE=$(grep 'Statements' fe-report.txt | head -1 | grep -oP '[\d.]+(?=%)' || echo "0") + FE_COVERAGE=${FE_COVERAGE:-0} + FE_COLOR="red" + [ "$(echo "$FE_COVERAGE > 50" | bc -l 2>/dev/null)" = "1" ] && FE_COLOR="yellow" + [ "$(echo "$FE_COVERAGE > 80" | bc -l 2>/dev/null)" = "1" ] && FE_COLOR="brightgreen" + echo "{\"schemaVersion\":1,\"label\":\"frontend coverage\",\"message\":\"${FE_COVERAGE}%\",\"color\":\"${FE_COLOR}\"}" > .badges/frontend-coverage.json + echo "## Frontend: ${FE_COVERAGE}% coverage" >> $GITHUB_STEP_SUMMARY + fi + echo "{\"schemaVersion\":1,\"label\":\"e2e tests\",\"message\":\"${E2E_PASS:-0} passed\",\"color\":\"brightgreen\"}" > .badges/e2e-tests.json + + - name: Stop test server + if: always() + run: | + if [ -f .server.pid ]; then + kill $(cat .server.pid) 2>/dev/null || true + rm -f .server.pid + fi + + - name: Upload E2E badges + if: always() + uses: actions/upload-artifact@v5 + with: + name: e2e-badges + path: .badges/ + retention-days: 1 + if-no-files-found: ignore + + # ─────────────────────────────────────────────────────────────── + # 3. Build Docker Image + # ─────────────────────────────────────────────────────────────── + build: + name: "🏗️ Build Docker Image" + needs: [e2e-test] + runs-on: [self-hosted, Linux] + steps: + - name: Checkout code + uses: actions/checkout@v5 + + - name: Set up Node.js 22 + uses: actions/setup-node@v5 + with: + node-version: '22' + + - name: Build Go Docker image + run: | + echo "${GITHUB_SHA::7}" > .git-commit + APP_VERSION=$(node -p "require('./package.json').version") \ + GIT_COMMIT="${GITHUB_SHA::7}" \ + docker compose --profile staging-go build staging-go + echo "Built Go staging image ✅" + + # ─────────────────────────────────────────────────────────────── + # 4. Deploy Staging (master only) + # ─────────────────────────────────────────────────────────────── + deploy: + name: "🚀 Deploy Staging" + if: github.event_name == 'push' + needs: [build] + runs-on: [self-hosted, Linux] + steps: + - name: Checkout code + uses: actions/checkout@v5 + + - name: Start staging on port 82 + run: | + docker rm -f corescope-staging-go 2>/dev/null || true + fuser -k 82/tcp 2>/dev/null || true + docker compose --profile staging-go up -d staging-go + + - name: Healthcheck staging container + run: | + for i in $(seq 1 120); do + HEALTH=$(docker inspect corescope-staging-go --format '{{.State.Health.Status}}' 2>/dev/null || echo "starting") + if [ "$HEALTH" = "healthy" ]; then + echo "Staging healthy after ${i}s" + break + fi + if [ "$i" -eq 120 ]; then + echo "Staging failed health check after 120s" + docker logs corescope-staging-go --tail 50 + exit 1 + fi + sleep 1 + done + + - name: Smoke test staging API + run: | + if curl -sf http://localhost:82/api/stats | grep -q engine; then + echo "Staging verified — engine field present ✅" + else + echo "Staging /api/stats did not return engine field" + exit 1 + fi + + # ─────────────────────────────────────────────────────────────── + # 5. Publish Badges & Summary (master only) + # ─────────────────────────────────────────────────────────────── + publish: + name: "📝 Publish Badges & Summary" + if: github.event_name == 'push' + needs: [deploy] + runs-on: [self-hosted, Linux] + steps: + - name: Checkout code + uses: actions/checkout@v5 + + - name: Download Go coverage badges + continue-on-error: true + uses: actions/download-artifact@v5 + with: + name: go-badges + path: .badges/ + + - name: Download E2E badges + continue-on-error: true + uses: actions/download-artifact@v5 + with: + name: e2e-badges + path: .badges/ + + - name: Publish coverage badges to repo + continue-on-error: true + run: | + git config user.name "github-actions" + git config user.email "actions@github.com" + git remote set-url origin https://x-access-token:${{ github.token }}@github.com/${{ github.repository }}.git + git add .badges/ -f + git diff --cached --quiet || (git commit -m "ci: update test badges [skip ci]" && git push) || echo "Badge push failed" + + - name: Post deployment summary + run: | + echo "## Staging Deployed ✓" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Commit:** \`$(git rev-parse --short HEAD)\` — $(git log -1 --format=%s)" >> $GITHUB_STEP_SUMMARY diff --git a/.gitignore b/.gitignore index 66261f71..2a035606 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ reps.txt cmd/server/server.exe cmd/ingestor/ingestor.exe # CI trigger +!test-fixtures/e2e-fixture.db diff --git a/scripts/capture-fixture.sh b/scripts/capture-fixture.sh new file mode 100755 index 00000000..c491d248 --- /dev/null +++ b/scripts/capture-fixture.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# Capture a fixture DB from staging for E2E tests +# Usage: ./scripts/capture-fixture.sh [source_url] +# +# Downloads nodes, observers, and recent packets from the staging API +# and creates a SQLite database suitable for E2E testing. + +set -e + +SOURCE_URL="${1:-https://analyzer.00id.net}" +DB_PATH="test-fixtures/e2e-fixture.db" + +echo "Capturing fixture from $SOURCE_URL..." + +mkdir -p test-fixtures +rm -f "$DB_PATH" + +# Create schema +sqlite3 "$DB_PATH" <<'SQL' +CREATE TABLE nodes ( + public_key TEXT PRIMARY KEY, + name TEXT, + role TEXT, + lat REAL, + lon REAL, + last_seen TEXT, + first_seen TEXT, + advert_count INTEGER DEFAULT 0, + battery_mv INTEGER, + temperature_c REAL +); + +CREATE TABLE observers ( + id TEXT PRIMARY KEY, + name TEXT, + iata TEXT, + last_seen TEXT, + first_seen TEXT, + packet_count INTEGER DEFAULT 0, + model TEXT, + firmware TEXT, + client_version TEXT, + radio TEXT, + battery_mv INTEGER, + uptime_secs INTEGER, + noise_floor REAL +); + +CREATE TABLE transmissions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + raw_hex TEXT NOT NULL, + hash TEXT NOT NULL UNIQUE, + first_seen TEXT NOT NULL, + route_type INTEGER, + payload_type INTEGER, + payload_version INTEGER, + decoded_json TEXT, + created_at TEXT DEFAULT (datetime('now')) +); + +CREATE TABLE observations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + transmission_id INTEGER NOT NULL REFERENCES transmissions(id), + observer_idx INTEGER, + direction TEXT, + snr REAL, + rssi REAL, + score INTEGER, + path_json TEXT, + timestamp INTEGER NOT NULL +); +SQL + +# Fetch nodes +echo "Fetching nodes..." +curl -sf "$SOURCE_URL/api/nodes?limit=200" | python3 -c " +import json, sys, sqlite3 +data = json.load(sys.stdin) +nodes = data.get('nodes', data) if isinstance(data, dict) else data +db = sqlite3.connect('$DB_PATH') +for n in nodes[:200]: + db.execute('INSERT OR IGNORE INTO nodes VALUES (?,?,?,?,?,?,?,?,?,?)', + (n.get('public_key',''), n.get('name',''), n.get('role',''), + n.get('lat'), n.get('lon'), n.get('last_seen',''), n.get('first_seen',''), + n.get('advert_count',0), n.get('battery_mv'), n.get('temperature_c'))) +db.commit() +print(f' Inserted {min(len(nodes), 200)} nodes') +db.close() +" + +# Fetch observers +echo "Fetching observers..." +curl -sf "$SOURCE_URL/api/observers" | python3 -c " +import json, sys, sqlite3 +data = json.load(sys.stdin) +observers = data.get('observers', data) if isinstance(data, dict) else data +db = sqlite3.connect('$DB_PATH') +for o in observers: + db.execute('INSERT OR IGNORE INTO observers VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)', + (o.get('id',''), o.get('name',''), o.get('iata',''), + o.get('last_seen',''), o.get('first_seen',''), + o.get('packet_count',0), o.get('model',''), o.get('firmware',''), + o.get('client_version',''), o.get('radio',''), + o.get('battery_mv'), o.get('uptime_secs'), o.get('noise_floor'))) +db.commit() +print(f' Inserted {len(observers)} observers') +db.close() +" + +# Fetch recent packets +echo "Fetching recent packets..." +curl -sf "$SOURCE_URL/api/packets?limit=500" | python3 -c " +import json, sys, sqlite3 +data = json.load(sys.stdin) +packets = data.get('packets', data) if isinstance(data, dict) else data +db = sqlite3.connect('$DB_PATH') +for p in packets: + try: + cur = db.execute('INSERT OR IGNORE INTO transmissions (raw_hex, hash, first_seen, route_type, payload_type, payload_version, decoded_json) VALUES (?,?,?,?,?,?,?)', + (p.get('raw_hex',''), p.get('hash',''), p.get('first_seen',''), + p.get('route_type'), p.get('payload_type'), p.get('payload_version'), + p.get('decoded_json'))) + tid = cur.lastrowid + if tid and p.get('observer_id'): + db.execute('INSERT INTO observations (transmission_id, observer_idx, direction, snr, rssi, score, path_json, timestamp) VALUES (?,?,?,?,?,?,?,?)', + (tid, p.get('observer_id'), p.get('direction'), + p.get('snr'), p.get('rssi'), None, + p.get('path_json'), + int(p.get('timestamp','0')) if p.get('timestamp','').isdigit() else 0)) + except Exception as e: + pass # Skip duplicates +db.commit() +print(f' Inserted {len(packets)} transmissions') +db.close() +" + +SIZE=$(du -h "$DB_PATH" | cut -f1) +echo "✅ Fixture DB created: $DB_PATH ($SIZE)" +echo " Nodes: $(sqlite3 "$DB_PATH" 'SELECT COUNT(*) FROM nodes')" +echo " Observers: $(sqlite3 "$DB_PATH" 'SELECT COUNT(*) FROM observers')" +echo " Transmissions: $(sqlite3 "$DB_PATH" 'SELECT COUNT(*) FROM transmissions')" +echo " Observations: $(sqlite3 "$DB_PATH" 'SELECT COUNT(*) FROM observations')" diff --git a/test-fixtures/e2e-fixture.db b/test-fixtures/e2e-fixture.db new file mode 100644 index 0000000000000000000000000000000000000000..3a8ad83ea067ec091917f16481a3c402f77050af GIT binary patch literal 409600 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 Date: Sun, 29 Mar 2026 17:44:07 +0000 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20fail-fast=20in=20Playwright=20test?= =?UTF-8?q?=20runner=20=E2=80=94=20exit=20immediately=20on=20first=20failu?= =?UTF-8?q?re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The test() helper was catching errors and collecting them into results[], only checking for failures after all tests completed. This meant the runner kept going through remaining tests even after a failure, wasting CI time and obscuring the root cause. Now process.exit(1) is called immediately when a test fails, giving true fail-fast behavior. --- test-e2e-playwright.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test-e2e-playwright.js b/test-e2e-playwright.js index dc5529eb..c53c4d3d 100644 --- a/test-e2e-playwright.js +++ b/test-e2e-playwright.js @@ -17,6 +17,8 @@ async function test(name, fn) { } catch (err) { results.push({ name, pass: false, error: err.message }); console.log(` \u274c ${name}: ${err.message}`); + console.log(`\nFail-fast: stopping after first failure.`); + process.exit(1); } } From 2c857cccf6e3ac94b601cd6e6027cafc1b7f30ea Mon Sep 17 00:00:00 2001 From: Kpa-clawbot Date: Sun, 29 Mar 2026 17:45:18 +0000 Subject: [PATCH 3/4] =?UTF-8?q?ci:=20remove=20if:always()=20=E2=80=94=20fa?= =?UTF-8?q?il=20fast=20on=20any=20step=20failure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 51ddd92a..537c4afc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -68,7 +68,7 @@ jobs: echo "✅ All .proto files are syntactically valid" - name: Generate Go coverage badges - if: always() + if: success() run: | mkdir -p .badges @@ -97,7 +97,7 @@ jobs: echo "| Ingestor | ${INGESTOR_COV}% |" >> $GITHUB_STEP_SUMMARY - name: Upload Go coverage badges - if: always() + if: success() uses: actions/upload-artifact@v5 with: name: go-badges @@ -172,12 +172,12 @@ jobs: BASE_URL=http://localhost:13581 node test-e2e-playwright.js 2>&1 | tee e2e-output.txt - name: Collect frontend coverage - if: always() + if: success() run: | BASE_URL=http://localhost:13581 node scripts/collect-frontend-coverage.js 2>&1 | tee fe-coverage-output.txt || true - name: Generate frontend coverage badges - if: always() + if: success() run: | E2E_PASS=$(grep -oP '[0-9]+(?=/)' e2e-output.txt | tail -1 || echo "0") @@ -195,7 +195,7 @@ jobs: echo "{\"schemaVersion\":1,\"label\":\"e2e tests\",\"message\":\"${E2E_PASS:-0} passed\",\"color\":\"brightgreen\"}" > .badges/e2e-tests.json - name: Stop test server - if: always() + if: success() run: | if [ -f .server.pid ]; then kill $(cat .server.pid) 2>/dev/null || true @@ -203,7 +203,7 @@ jobs: fi - name: Upload E2E badges - if: always() + if: success() uses: actions/upload-artifact@v5 with: name: e2e-badges From 8366790a2c5eea5711d004305c7a09da055e2b0a Mon Sep 17 00:00:00 2001 From: Kpa-clawbot Date: Sun, 29 Mar 2026 18:30:50 +0000 Subject: [PATCH 4/4] ci: disable coverage collector, use E2E window.__coverage__ instead The collector script takes 8+ min navigating every page for coverage. E2E tests already extract window.__coverage__ to .nyc_output/e2e-coverage.json. This cuts pipeline from ~11 min to ~2-3 min. --- .github/workflows/deploy.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a4f4b520..253fba70 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -171,10 +171,12 @@ jobs: run: | BASE_URL=http://localhost:13581 node test-e2e-playwright.js 2>&1 | tee e2e-output.txt - - name: Collect frontend coverage - if: success() - run: | - BASE_URL=http://localhost:13581 node scripts/collect-frontend-coverage.js 2>&1 | tee fe-coverage-output.txt || true + # DISABLED: Coverage collector takes 8+ min. E2E tests extract window.__coverage__ directly. + # Re-enable when collector is optimized or if E2E coverage numbers are insufficient. + # - name: Collect frontend coverage + # if: success() + # run: | + # BASE_URL=http://localhost:13581 node scripts/collect-frontend-coverage.js 2>&1 | tee fe-coverage-output.txt || true - name: Generate frontend coverage badges if: success()