name: CI on: push: branches: [main] pull_request: branches: [main] jobs: check: name: Typecheck, Lint, Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Cache bun dependencies uses: actions/cache@v4 with: path: ~/.bun/install/cache key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lock') }} restore-keys: | ${{ runner.os }}-bun- - name: Install dependencies run: bun install --frozen-lockfile - name: Typecheck run: bun run typecheck - name: Lint run: bun run lint - name: Test with coverage run: bun run test:coverage build: name: Build packages runs-on: ubuntu-latest needs: check steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies run: bun install --frozen-lockfile - name: Build run: bun run build audit: name: Security audit runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 with: bun-version: latest - name: Install dependencies run: bun install --frozen-lockfile - name: Audit run: bun audit || true # e2e: # name: E2E (Playwright) # runs-on: ubuntu-latest # # Enabled in Phase 3 when chess UI exists