fix(ci): split agentic node shard by runtime shape

This commit is contained in:
Vincent Koc
2026-04-14 23:22:08 +01:00
parent 2d26929ff1
commit 58d0c179d7
2 changed files with 88 additions and 5 deletions

View File

@@ -7,11 +7,38 @@ const EXCLUDED_FULL_SUITE_SHARDS = new Set([
]);
const EXCLUDED_PROJECT_CONFIGS = new Set(["test/vitest/vitest.channels.config.ts"]);
const DIST_DEPENDENT_NODE_SHARD_NAMES = new Set([
"core-support-boundary",
"core-runtime",
"agentic",
const SPLIT_NODE_SHARDS = new Map([
[
"agentic",
[
{
shardName: "agentic-control-plane",
configs: [
"test/vitest/vitest.gateway-core.config.ts",
"test/vitest/vitest.gateway-client.config.ts",
"test/vitest/vitest.gateway-methods.config.ts",
"test/vitest/vitest.gateway-server.config.ts",
"test/vitest/vitest.cli.config.ts",
"test/vitest/vitest.commands-light.config.ts",
"test/vitest/vitest.commands.config.ts",
"test/vitest/vitest.daemon.config.ts",
],
requiresDist: false,
},
{
shardName: "agentic-agents-plugins",
configs: [
"test/vitest/vitest.agents.config.ts",
"test/vitest/vitest.plugin-sdk-light.config.ts",
"test/vitest/vitest.plugin-sdk.config.ts",
"test/vitest/vitest.plugins.config.ts",
],
requiresDist: true,
},
],
],
]);
const DIST_DEPENDENT_NODE_SHARD_NAMES = new Set(["core-support-boundary", "core-runtime"]);
function formatNodeTestShardCheckName(shardName) {
const normalizedShardName = shardName.startsWith("core-unit-")
@@ -31,6 +58,25 @@ export function createNodeTestShards() {
return [];
}
const splitShards = SPLIT_NODE_SHARDS.get(shard.name);
if (splitShards) {
return splitShards.flatMap((splitShard) => {
const splitConfigs = splitShard.configs.filter((config) => configs.includes(config));
if (splitConfigs.length === 0) {
return [];
}
return [
{
checkName: formatNodeTestShardCheckName(splitShard.shardName),
shardName: splitShard.shardName,
configs: splitConfigs,
requiresDist: splitShard.requiresDist,
},
];
});
}
return [
{
checkName: formatNodeTestShardCheckName(shard.name),

View File

@@ -30,6 +30,43 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => {
.filter((shard) => shard.requiresDist)
.map((shard) => shard.shardName);
expect(requiresDistShardNames).toEqual(["core-support-boundary", "core-runtime", "agentic"]);
expect(requiresDistShardNames).toEqual([
"core-support-boundary",
"core-runtime",
"agentic-agents-plugins",
]);
});
it("splits the agentic lane into control-plane and agent/plugin shards", () => {
const shards = createNodeTestShards();
const controlPlaneShard = shards.find((shard) => shard.shardName === "agentic-control-plane");
const agentPluginShard = shards.find((shard) => shard.shardName === "agentic-agents-plugins");
expect(controlPlaneShard).toEqual({
checkName: "checks-node-agentic-control-plane",
shardName: "agentic-control-plane",
configs: [
"test/vitest/vitest.gateway-core.config.ts",
"test/vitest/vitest.gateway-client.config.ts",
"test/vitest/vitest.gateway-methods.config.ts",
"test/vitest/vitest.gateway-server.config.ts",
"test/vitest/vitest.cli.config.ts",
"test/vitest/vitest.commands-light.config.ts",
"test/vitest/vitest.commands.config.ts",
"test/vitest/vitest.daemon.config.ts",
],
requiresDist: false,
});
expect(agentPluginShard).toEqual({
checkName: "checks-node-agentic-agents-plugins",
shardName: "agentic-agents-plugins",
configs: [
"test/vitest/vitest.agents.config.ts",
"test/vitest/vitest.plugin-sdk-light.config.ts",
"test/vitest/vitest.plugin-sdk.config.ts",
"test/vitest/vitest.plugins.config.ts",
],
requiresDist: true,
});
});
});