# ClawX CI Workflow # Runs on pull requests (main/develop) name: Check and Build on: pull_request: branches: - main jobs: check: runs-on: ubuntu-latest env: ELECTRON_SKIP_BINARY_DOWNLOAD: '1' steps: - name: Checkout code uses: actions/checkout@v6 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'pnpm' - name: Prefer HTTPS for public GitHub git dependencies run: | git config --global "url.https://github.com/.insteadOf" "git@github.com:" git config --global --add "url.https://github.com/.insteadOf" "ssh://git@github.com/" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Generate extension bridge run: pnpm run ext:bridge - name: Run linter run: pnpm run lint - name: Run typecheck run: pnpm run typecheck - name: Run tests run: pnpm run test - name: Run harness checks run: pnpm run harness:ci - name: Upload harness artifacts if: always() uses: actions/upload-artifact@v4 with: name: harness-artifacts path: artifacts/harness if-no-files-found: warn retention-days: 7 build: runs-on: windows-latest env: ELECTRON_SKIP_BINARY_DOWNLOAD: '1' steps: - name: Checkout code uses: actions/checkout@v6 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v6 with: node-version: '24' cache: 'pnpm' - name: Prefer HTTPS for public GitHub git dependencies run: | git config --global "url.https://github.com/.insteadOf" "git@github.com:" git config --global --add "url.https://github.com/.insteadOf" "ssh://git@github.com/" - name: Install dependencies run: pnpm install --frozen-lockfile - name: Generate extension bridge run: pnpm run ext:bridge - name: Build run: pnpm run build:vite