name: CI on: pull_request: push: branches: [main] permissions: contents: read concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: # Keep commands serial within each job: fixtures restart Workers and mutate state. core-control: runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version-file: .node-version cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm typecheck - run: pnpm test:config - run: pnpm test:providers - run: pnpm build:release # Catalog tests rewrite dist/catalog; finish before building its consumers. - run: pnpm test:catalog - run: pnpm test:worker - run: pnpm test:deployment - run: pnpm test:deployment-network - run: pnpm test:runtime - run: pnpm test:diagnostics - run: pnpm test:think - run: pnpm test:activities - run: pnpm test:memory - run: pnpm test:tasks - run: pnpm exec playwright install --with-deps chromium - run: pnpm build:control-plane - run: pnpm test:oauth - run: pnpm test:ownership - run: pnpm test:orchestrator - run: pnpm test:installation-status - run: pnpm test:updates - run: pnpm test:upgrade-state - run: pnpm test:bridge - run: pnpm test:domains execution: runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version-file: .node-version cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm build:release - run: pnpm test:execution browser: runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version-file: .node-version cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm build:release - run: pnpm exec playwright install --with-deps chromium - run: pnpm test:browser - run: pnpm test:settings - run: pnpm test:app-shell - run: pnpm test:tasks-ui - run: pnpm test:schedule-action - run: pnpm test:chat-ui sandbox: runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version-file: .node-version cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm build:release - run: pnpm exec playwright install --with-deps chromium - run: pnpm build:control-plane - run: docker info - run: pnpm test:web - run: pnpm test:shell - run: pnpm test:golden-path # Preserve the required check name and reject failed, cancelled or skipped jobs. check: if: ${{ always() }} needs: [core-control, execution, browser, sandbox] runs-on: blacksmith-2vcpu-ubuntu-2404 steps: - name: Require every test job to pass env: JOB_RESULTS: ${{ toJSON(needs.*.result) }} run: jq --exit-status 'length == 4 and all(. == "success")' <<< "$JOB_RESULTS"