This repository was archived by the owner on May 5, 2026. It is now read-only.
CI #3800
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |