Skip to content

Merge pull request #3 from smouj/claude/enterprise-ai-gateway-platfor… #25

Merge pull request #3 from smouj/claude/enterprise-ai-gateway-platfor…

Merge pull request #3 from smouj/claude/enterprise-ai-gateway-platfor… #25

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [main, master, 'claude/**']
pull_request:
branches: [main, master]
env:
NODE_VERSION: '22'
PNPM_VERSION: '10'
jobs:
# TypeScript Type Check
type-check:
name: TypeScript Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @peanut/shared-types build
- run: pnpm --filter @peanut/gateway type-check
- run: pnpm --filter @peanut/dashboard type-check
# Gateway Tests (Node.js)
test-gateway:
name: Gateway Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @peanut/shared-types build
- name: Run gateway tests with coverage
env:
DATA_DIR: /tmp/peanut-test
JWT_SECRET: test-secret-that-is-long-enough-for-jwt-signing
KILO_ENCRYPTION_KEY: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
NODE_ENV: test
run: pnpm --filter @peanut/gateway test:coverage
- uses: actions/upload-artifact@v4
if: always()
with:
name: gateway-coverage
path: services/gateway/coverage/
# Dashboard Tests (Next.js)
test-dashboard:
name: Dashboard Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @peanut/shared-types build
- run: pnpm --filter @peanut/dashboard test:coverage
- uses: actions/upload-artifact@v4
if: always()
with:
name: dashboard-coverage
path: apps/dashboard/coverage/
# Python Agent Tests (legacy)
test-python:
name: Python Agent Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
- run: python -m pip install --upgrade pip setuptools wheel
- run: python -m pip install -e ".[dev]" || python -m pip install -r requirements.txt
- run: python -m pip install -U pytest pytest-cov pytest-asyncio
- name: Run Python tests
run: python -m pytest tests/ -v --tb=short -q || true
# Build validation
build:
name: Build Check
runs-on: ubuntu-latest
needs: [type-check, test-gateway, test-dashboard]
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @peanut/shared-types build
- run: pnpm --filter @peanut/gateway build
# Docker image build validation
docker-build:
name: Docker Build Validation
runs-on: ubuntu-latest
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: docker/setup-buildx-action@v3
- name: Build gateway Docker image
uses: docker/build-push-action@v5
with:
context: .
file: services/gateway/Dockerfile
push: false
tags: peanut-gateway:ci
cache-from: type=gha
cache-to: type=gha,mode=max
# Security audit
security-audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v3
with:
version: ${{ env.PNPM_VERSION }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm audit --audit-level moderate || true