Skip to content
This repository was archived by the owner on May 5, 2026. It is now read-only.

CI

CI #3800

Workflow file for this run

name: CI
on:
pull_request:
branches: [ main ]
push:
branches: [ main ]
merge_group:
workflow_dispatch:
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Install Buf CLI
uses: bufbuild/buf-setup-action@v1
- name: Generate runner protobufs
run: pnpm proto:generate
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Approve necessary build scripts
run: pnpm approve-builds @prisma/client prisma esbuild @nestjs/core msw
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
- name: Type-check platform server
run: pnpm --filter @agyn/platform-server run typecheck
- name: Lint (recursive where available)
run: pnpm -r run lint
test-server:
name: Test Server
runs-on: ubuntu-latest
needs: [lint]
services:
postgres:
image: postgres:15
ports:
- '5432:5432'
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: agents_test
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Install Buf CLI
uses: bufbuild/buf-setup-action@v1
- name: Generate runner protobufs
run: pnpm proto:generate
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Approve necessary build scripts
run: pnpm approve-builds @prisma/client prisma esbuild @nestjs/core msw
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
- name: Apply platform-server migrations
env:
AGENTS_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/agents_test
run: pnpm --filter @agyn/platform-server exec prisma migrate deploy
- name: Prisma generate (platform-server)
run: pnpm --filter @agyn/platform-server run prisma:generate
- name: Run server tests
env:
AGENTS_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/agents_test
run: pnpm --filter @agyn/platform-server test
litellm-integration:
name: LiteLLM Integration
runs-on: ubuntu-latest
needs: [test-server]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Install Buf CLI
uses: bufbuild/buf-setup-action@v1
- name: Generate runner protobufs
run: pnpm proto:generate
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Approve necessary build scripts
run: pnpm approve-builds @prisma/client prisma esbuild @nestjs/core msw
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
- name: Start LiteLLM docker compose stack
run: docker compose -f packages/platform-server/test/litellm/docker-compose.yml up -d
- name: Run LiteLLM integration tests
env:
LITELLM_INTEGRATION: '1'
LITELLM_INTEGRATION_BASE_URL: 'http://127.0.0.1:4500'
LITELLM_INTEGRATION_MASTER_KEY: 'sk-litellm-integration-master'
LITELLM_INTEGRATION_CREDENTIAL: 'integration-credential'
run: pnpm --filter @agyn/platform-server run test:litellm
- name: LiteLLM logs (on failure)
if: failure()
run: docker compose -f packages/platform-server/test/litellm/docker-compose.yml logs --no-color
- name: Stop LiteLLM docker compose stack
if: always()
run: docker compose -f packages/platform-server/test/litellm/docker-compose.yml down -v
test-ui:
name: Test UI
runs-on: ubuntu-latest
needs: [lint]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Install Buf CLI
uses: bufbuild/buf-setup-action@v1
- name: Generate runner protobufs
run: pnpm proto:generate
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Approve necessary build scripts
run: pnpm approve-builds @prisma/client prisma esbuild @nestjs/core msw
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
- name: Run UI tests (@agyn/platform-ui)
run: pnpm --filter @agyn/platform-ui test
- name: Run UI socket e2e tests (@agyn/platform-ui)
env:
VITE_API_BASE_URL: 'http://localhost:3010'
run: pnpm --filter @agyn/platform-ui run test:e2e
- name: Type-check platform UI (@agyn/platform-ui)
run: pnpm --filter @agyn/platform-ui run typecheck
storybook-smoke:
name: Storybook Smoke Tests
runs-on: ubuntu-latest
needs: [lint]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Approve necessary build scripts
run: pnpm approve-builds @prisma/client prisma esbuild @nestjs/core msw
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
- name: Build Storybook (@agyn/platform-ui)
run: pnpm --filter @agyn/platform-ui run build-storybook
- name: Run Storybook smoke tests (@agyn/platform-ui)
env:
VITE_API_BASE_URL: 'http://localhost:4173/api'
PLAYWRIGHT_BROWSERS_PATH: ${{ runner.temp }}/.playwright
run: pnpm --filter @agyn/platform-ui run storybook:test
build-server:
name: Build Server
runs-on: ubuntu-latest
needs: [test-server]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
- name: Approve necessary build scripts
run: pnpm approve-builds @prisma/client esbuild msw
- name: Rebuild native dependencies
run: pnpm -r rebuild
- name: Prisma generate (platform-server)
run: pnpm --filter @agyn/platform-server run prisma:generate
# No explicit build script for server; perform type-check as build-equivalent
- name: Type-check server (noEmit)
run: pnpm --filter @agyn/platform-server exec tsc -p tsconfig.json --noEmit
build-ui:
name: Build UI
runs-on: ubuntu-latest
needs: [test-ui]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 10.5.0
run_install: false
- name: Get pnpm store directory
id: pnpm-store
shell: bash
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-store.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: '20'
- name: Setup Buf
uses: bufbuild/buf-setup-action@v1
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Generate protobufs
run: pnpm proto:generate
# Build all workspaces in topological order so library outputs exist
- name: Build UI workspace (topo order)
run: pnpm -r build