diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1407e6cd2ef..b355801b218 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1121,10 +1121,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight] if: needs.preflight.outputs.run_checks_node_core_nondist == 'true' - # Keep core shards on GitHub-hosted runners. The Blacksmith pool is already - # occupied by build and extension shards; queueing these shards there hides - # actual test-speed improvements behind runner wait time. - runs-on: ubuntu-24.04 + runs-on: ${{ github.repository == 'openclaw/openclaw' && (matrix.runner || 'ubuntu-24.04') || 'ubuntu-24.04' }} timeout-minutes: 60 strategy: fail-fast: false diff --git a/scripts/lib/ci-node-test-plan.mjs b/scripts/lib/ci-node-test-plan.mjs index cafb880253d..e943302141b 100644 --- a/scripts/lib/ci-node-test-plan.mjs +++ b/scripts/lib/ci-node-test-plan.mjs @@ -131,6 +131,7 @@ const SPLIT_NODE_SHARDS = new Map([ "test/vitest/vitest.runtime-config.config.ts", ], requiresDist: false, + runner: "blacksmith-4vcpu-ubuntu-2404", }, { shardName: "core-runtime-media-ui", @@ -177,6 +178,7 @@ const SPLIT_NODE_SHARDS = new Map([ shardName: "agentic-control-plane", configs: ["test/vitest/vitest.gateway-server.config.ts"], requiresDist: false, + runner: "blacksmith-4vcpu-ubuntu-2404", }, { shardName: "agentic-commands", @@ -248,6 +250,7 @@ export function createNodeTestShards() { shardName: splitShard.shardName, configs: splitConfigs, ...(splitShard.includePatterns ? { includePatterns: splitShard.includePatterns } : {}), + ...(splitShard.runner ? { runner: splitShard.runner } : {}), requiresDist: splitShard.requiresDist, }, ];