diff --git a/.github/workflows/ci-bun.yml b/.github/workflows/ci-bun.yml deleted file mode 100644 index 27999565279..00000000000 --- a/.github/workflows/ci-bun.yml +++ /dev/null @@ -1,110 +0,0 @@ -name: CI Bun - -on: - push: - branches: [main] - -concurrency: - group: ci-bun-push-${{ github.run_id }} - cancel-in-progress: false - -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" - -jobs: - preflight: - runs-on: blacksmith-16vcpu-ubuntu-2404 - timeout-minutes: 20 - outputs: - run_bun_checks: ${{ steps.manifest.outputs.run_bun_checks }} - bun_checks_matrix: ${{ steps.manifest.outputs.bun_checks_matrix }} - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - submodules: false - - - name: Setup Node environment - uses: ./.github/actions/setup-node-env - with: - install-bun: "false" - install-deps: "false" - use-sticky-disk: "false" - - - name: Build Bun CI manifest - id: manifest - env: - OPENCLAW_CI_DOCS_ONLY: "false" - OPENCLAW_CI_DOCS_CHANGED: "false" - OPENCLAW_CI_RUN_NODE: "true" - OPENCLAW_CI_RUN_MACOS: "false" - OPENCLAW_CI_RUN_ANDROID: "false" - OPENCLAW_CI_RUN_WINDOWS: "false" - OPENCLAW_CI_RUN_SKILLS_PYTHON: "false" - OPENCLAW_CI_HAS_CHANGED_EXTENSIONS: "false" - OPENCLAW_CI_CHANGED_EXTENSIONS_MATRIX: '{"include":[]}' - run: node scripts/ci-write-manifest-outputs.mjs --workflow ci-bun - - build-bun-artifacts: - needs: [preflight] - if: needs.preflight.outputs.run_bun_checks == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 - timeout-minutes: 20 - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - submodules: false - - - name: Setup Node environment - uses: ./.github/actions/setup-node-env - with: - install-bun: "false" - use-sticky-disk: "false" - - - name: Build A2UI bundle - run: pnpm canvas:a2ui:bundle - - - name: Upload A2UI bundle artifact - uses: actions/upload-artifact@v7 - with: - name: canvas-a2ui-bundle - path: src/canvas-host/a2ui/ - include-hidden-files: true - retention-days: 1 - - bun-checks: - name: ${{ matrix.check_name }} - needs: [preflight, build-bun-artifacts] - if: needs.preflight.outputs.run_bun_checks == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 - timeout-minutes: 60 - strategy: - fail-fast: false - matrix: ${{ fromJson(needs.preflight.outputs.bun_checks_matrix) }} - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - submodules: false - - - name: Setup Node environment - uses: ./.github/actions/setup-node-env - with: - install-bun: "true" - use-sticky-disk: "false" - - - name: Download A2UI bundle artifact - uses: actions/download-artifact@v8 - with: - name: canvas-a2ui-bundle - path: src/canvas-host/a2ui/ - - - name: Run Bun test shard - env: - SHARD_COUNT: ${{ matrix.shard_count }} - SHARD_INDEX: ${{ matrix.shard_index }} - shell: bash - run: | - set -euo pipefail - OPENCLAW_TEST_ISOLATE=1 bunx vitest run --config vitest.unit.config.ts --shard "$SHARD_INDEX/$SHARD_COUNT" diff --git a/scripts/ci-write-manifest-outputs.mjs b/scripts/ci-write-manifest-outputs.mjs index 16754211feb..428ea8194bc 100644 --- a/scripts/ci-write-manifest-outputs.mjs +++ b/scripts/ci-write-manifest-outputs.mjs @@ -1,7 +1,7 @@ import { appendFileSync } from "node:fs"; import { buildCIExecutionManifest } from "./test-planner/planner.mjs"; -const WORKFLOWS = new Set(["ci", "install-smoke", "ci-bun"]); +const WORKFLOWS = new Set(["ci", "install-smoke"]); const parseArgs = (argv) => { const parsed = { @@ -13,7 +13,7 @@ const parseArgs = (argv) => { const nextValue = argv[index + 1] ?? ""; if (!WORKFLOWS.has(nextValue)) { throw new Error( - `Unsupported --workflow value "${String(nextValue || "")}". Supported values: ci, install-smoke, ci-bun.`, + `Unsupported --workflow value "${String(nextValue || "")}". Supported values: ci, install-smoke.`, ); } parsed.workflow = nextValue; @@ -69,7 +69,4 @@ if (workflow === "ci") { } else if (workflow === "install-smoke") { writeOutput("docs_only", String(manifest.scope.docsOnly)); writeOutput("run_install_smoke", String(manifest.jobs.installSmoke.enabled)); -} else if (workflow === "ci-bun") { - writeOutput("run_bun_checks", String(manifest.jobs.bunChecks.enabled)); - writeOutput("bun_checks_matrix", JSON.stringify(manifest.jobs.bunChecks.matrix)); } diff --git a/scripts/test-planner/planner.mjs b/scripts/test-planner/planner.mjs index 9ab7c61eea4..c5954bf8f6e 100644 --- a/scripts/test-planner/planner.mjs +++ b/scripts/test-planner/planner.mjs @@ -1319,7 +1319,6 @@ export function buildCIExecutionManifest(scopeInput = {}, options = {}) { minShards: 1, maxShards: 9, }); - const bunShardCount = windowsShardCount; const extensionFastShardCount = resolveDynamicShardCount({ estimatedDurationMs: sumKnownManifestDurationsMs(context.extensionTimingManifest), fileCount: extensionCandidateFiles.length, @@ -1424,13 +1423,6 @@ export function buildCIExecutionManifest(scopeInput = {}, options = {}) { }, ] : []; - const bunChecksInclude = createShardMatrixEntries({ - checkNamePrefix: "bun-checks", - runtime: "bun", - task: "test", - command: "bunx vitest run --config vitest.unit.config.ts", - shardCount: bunShardCount, - }); const extensionFastInclude = extensionFastEligible ? scope.changedExtensionsMatrix.include.map((entry) => ({ check_name: `extension-fast-${entry.extension}`, @@ -1458,7 +1450,6 @@ export function buildCIExecutionManifest(scopeInput = {}, options = {}) { macosNode: { enabled: macosNodeInclude.length > 0, matrix: { include: macosNodeInclude } }, macosSwift: { enabled: macosEligible }, android: { enabled: androidInclude.length > 0, matrix: { include: androidInclude } }, - bunChecks: { enabled: bunChecksInclude.length > 0, matrix: { include: bunChecksInclude } }, installSmoke: { enabled: !scope.docsOnly && scope.runChangedSmoke }, }; @@ -1471,7 +1462,6 @@ export function buildCIExecutionManifest(scopeInput = {}, options = {}) { extensionFast: extensionFastShardCount, windows: windowsShardCount, macosNode: macosNodeShardCount, - bun: bunShardCount, }, jobs, requiredCheckNames: [ @@ -1482,7 +1472,6 @@ export function buildCIExecutionManifest(scopeInput = {}, options = {}) { ...(macosEligible ? ["macos-swift"] : []), ...androidInclude.map((entry) => entry.check_name), ...extensionFastInclude.map((entry) => entry.check_name), - ...bunChecksInclude.map((entry) => entry.check_name), "check", "check-additional", "build-smoke", diff --git a/test/scripts/test-parallel.test.ts b/test/scripts/test-parallel.test.ts index ac9762752f3..dae347b6eb6 100644 --- a/test/scripts/test-parallel.test.ts +++ b/test/scripts/test-parallel.test.ts @@ -466,16 +466,6 @@ describe("scripts/test-parallel lane planning", () => { expect(outputs).not.toContain("run_checks="); }); - it("writes bun outputs in ci-bun mode", () => { - const outputs = runManifestOutputWriter("ci-bun", { - OPENCLAW_CI_DOCS_ONLY: "false", - OPENCLAW_CI_RUN_NODE: "true", - }); - expect(outputs).toContain("run_bun_checks=true"); - expect(outputs).toContain("bun_checks_matrix="); - expect(outputs).not.toContain("run_install_smoke="); - }); - it("passes through vitest --mode values that are not wrapper runtime overrides", () => { const output = runPlannerPlan( ["--plan", "--mode", "development", "src/infra/outbound/deliver.test.ts"], diff --git a/test/scripts/test-planner.test.ts b/test/scripts/test-planner.test.ts index f3cd1ed0b9b..2d5b2e26405 100644 --- a/test/scripts/test-planner.test.ts +++ b/test/scripts/test-planner.test.ts @@ -656,10 +656,8 @@ describe("test planner", () => { expect(manifest.shardCounts.extensionFast).toBeLessThanOrEqual(5); expect(manifest.shardCounts.windows).toBe(6); expect(manifest.shardCounts.macosNode).toBe(9); - expect(manifest.shardCounts.bun).toBe(6); expect(manifest.jobs.checks.matrix.include).toHaveLength(8); expect(manifest.jobs.checksWindows.matrix.include).toHaveLength(6); - expect(manifest.jobs.bunChecks.matrix.include).toHaveLength(6); expect(manifest.jobs.macosNode.matrix.include).toHaveLength(9); expect(manifest.jobs.checksFast.matrix.include).toHaveLength( manifest.shardCounts.extensionFast + 1,