Skip to content

feat(marketing): add job board links, security promo, and agents.prot… #228

feat(marketing): add job board links, security promo, and agents.prot…

feat(marketing): add job board links, security promo, and agents.prot… #228

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
# ── SDK ────────────────────────────────────
sdk:
name: SDK (Jest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
working-directory: sdk
- run: npm run build
working-directory: sdk
- run: npm test
working-directory: sdk
# ── Contracts ──────────────────────────────
# All contract tests run in a single job because they have
# cross-contract WASM dependencies (agentfeed/valid/escrow
# load agentcore's WASM, agentescrow loads agentfeed's WASM).
contracts:
name: Contracts (all)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
# Install all contracts
- run: npm install
working-directory: contracts/agentcore
- run: npm install
working-directory: contracts/agentfeed
- run: npm install
working-directory: contracts/agentvalid
- run: npm install
working-directory: contracts/agentescrow
# Build in dependency order: core → feed → valid/escrow
- name: Build agentcore
run: npm run build
working-directory: contracts/agentcore
- name: Build agentfeed
run: npm run build
working-directory: contracts/agentfeed
- name: Build agentvalid
run: npm run build
working-directory: contracts/agentvalid
- name: Build agentescrow
run: npm run build
working-directory: contracts/agentescrow
# Test in dependency order
- name: Test agentcore (71 tests)
run: npm test
working-directory: contracts/agentcore
- name: Test agentfeed (16 tests)
run: npm test
working-directory: contracts/agentfeed
- name: Test agentvalid (15 tests)
run: npm test
working-directory: contracts/agentvalid
- name: Test agentescrow (23 tests)
run: npm test
working-directory: contracts/agentescrow
# ── OpenClaw Plugin ────────────────────────
openclaw:
name: OpenClaw (Vitest)
runs-on: ubuntu-latest
needs: sdk
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
# Build SDK first (openclaw depends on it)
- run: npm install && npm run build
working-directory: sdk
# Override SDK dep to use local build
- name: Link local SDK
run: |
npm install
npm rm @xpr-agents/sdk 2>/dev/null || true
npm install ../sdk
working-directory: openclaw
- run: npm run build
working-directory: openclaw
- run: npm test
working-directory: openclaw
# ── Indexer ────────────────────────────────
indexer:
name: Indexer (Vitest)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
working-directory: indexer
- run: npm run build
working-directory: indexer
- run: npm test
working-directory: indexer
# ── Frontend ───────────────────────────────
frontend:
name: Frontend (Next.js)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install
working-directory: frontend
- run: npm run build
working-directory: frontend
# ── Agent Runner ───────────────────────────
agent-runner:
name: Agent Runner (Build)
runs-on: ubuntu-latest
needs: openclaw
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install && npm run build
working-directory: sdk
- name: Build openclaw with local SDK
run: |
npm install
npm rm @xpr-agents/sdk 2>/dev/null || true
npm install ../sdk
npm run build
working-directory: openclaw
- run: npm install && npm run build
working-directory: openclaw/starter/agent
# ── Docker Build ───────────────────────────
docker:
name: Docker (${{ matrix.service }})
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: [sdk, contracts, openclaw, indexer, frontend]
strategy:
fail-fast: false
matrix:
include:
- service: indexer
context: ./indexer
dockerfile: indexer/Dockerfile
- service: agent
context: ./openclaw/starter/agent
dockerfile: openclaw/starter/agent/Dockerfile
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v5
with:
context: ${{ matrix.context }}
file: ${{ matrix.dockerfile }}
push: false
cache-from: type=gha
cache-to: type=gha,mode=max