feat: prepare Claude and Codex plugins for the OpenAI directory #1407
Workflow file for this run
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] | |
| paths-ignore: | |
| - "docs/**" | |
| - "*.md" | |
| - "LICENSE" | |
| push: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: Lint & Format | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 | |
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| # Generates gitignored worker-configuration.d.ts for api, mcp, and web. | |
| # Type-aware oxlint needs these (Env, ExportedHandler, bindings). | |
| - name: Generate Wrangler types | |
| run: pnpm types | |
| # apps/mcp imports @buildinternet/uploads from its built dist; type-aware | |
| # oxlint needs the package built to resolve those modules. | |
| - name: Build workspace packages | |
| run: pnpm --filter @buildinternet/uploads run build | |
| # tsc --noEmit across every workspace. Type-aware oxlint below is not a | |
| # substitute — it doesn't run the compiler. CONTRIBUTING.md documents | |
| # this as part of the CI gate. | |
| - name: Typecheck | |
| run: pnpm typecheck | |
| - name: Oxlint | |
| run: pnpm lint | |
| - name: Oxfmt | |
| run: pnpm format:check | |
| # Two ways a changeset can break the Release workflow after merge, both | |
| # rejected here: naming a package outside the workspace (hard failure), and | |
| # naming an ignored package, which yields an empty version PR and silently | |
| # blocks the npm publish. Static by design — `changeset status` covers only | |
| # the first and needs git history this shallow checkout does not have. | |
| - name: Changeset lint | |
| run: pnpm changeset:lint | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| - uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9 | |
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 | |
| with: | |
| node-version-file: .nvmrc | |
| cache: pnpm | |
| - run: pnpm install --frozen-lockfile | |
| - name: Generate Wrangler types | |
| run: pnpm types | |
| # Single-process Vitest across every workspace project (see vitest.projects.ts). | |
| # The root `pretest` builds @buildinternet/uploads first — apps/mcp imports | |
| # it from dist. Replaces the former serial `pnpm --filter … test` chain and | |
| # adds apps/web, packages/email, and packages/errors to CI coverage. | |
| - name: Run tests | |
| run: pnpm test | |
| - name: Verify npm package | |
| run: pnpm --filter @buildinternet/uploads run build && pnpm --filter @buildinternet/uploads run pack:check | |
| - name: Bundle remote MCP Worker | |
| run: pnpm --filter @uploads/mcp run bundle:check |