ci.yml•3.52 kB
name: CI
on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]
jobs:
validate:
name: Validate and Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Ensure database and server dependencies
run: |
echo "Adding explicit pg dependencies"
pnpm add -D @types/pg@8.11.13 --filter @snakagent/database
pnpm add pg@8.14.1 --filter @snakagent/database
pnpm add -D @types/pg@8.11.13 --filter @snakagent/server
pnpm add pg@8.14.1 --filter @snakagent/server
- name: Install dependencies
run: pnpm install --force
- name: Build packages in order
run: |
pnpm --filter @snakagent/metrics build
pnpm --filter @snakagent/core build
pnpm --filter @snakagent/database build
pnpm --filter @snakagent/agents build
- name: Check TypeScript compilation (Server)
run: pnpm --filter @snakagent/server tsc --noEmit -p tsconfig.json
- name: Check TypeScript compilation (Agents)
run: pnpm --filter @snakagent/agents tsc --noEmit -p tsconfig.json
- name: Check TypeScript compilation (Metrics)
run: pnpm --filter @snakagent/metrics tsc --noEmit -p tsconfig.json
- name: Check TypeScript compilation (Frontend)
run: echo "Skipping TypeScript check for client during ESM migration"
- name: Check formatting with Prettier
run: |
pnpm prettier --check "packages/**/*.{ts,tsx}"
- name: Security audit
run: pnpm audit || true
build:
name: Build Check
runs-on: ubuntu-latest
needs: validate
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v3
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Ensure database and server dependencies
run: |
echo "Adding explicit pg dependencies"
pnpm add -D @types/pg@8.11.13 --filter @snakagent/database
pnpm add pg@8.14.1 --filter @snakagent/database
pnpm add -D @types/pg@8.11.13 --filter @snakagent/server
pnpm add pg@8.14.1 --filter @snakagent/server
- name: Install dependencies
run: pnpm install --force
- name: Build server
run: pnpm build