From 03cf97a33e01746695e52c47eb41d676cd5ed158 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 22 Apr 2026 17:49:06 +0100 Subject: [PATCH] ci: consolidate short test workers --- .github/workflows/ci.yml | 14 +++++--------- docs/ci.md | 2 +- scripts/lib/ci-node-test-plan.mjs | 2 +- test/scripts/ci-node-test-plan.test.ts | 6 ------ 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31d62caa902..20285e1ac52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1604,10 +1604,8 @@ jobs: group: extension-channels - check_name: check-additional-extension-bundled group: extension-bundled - - check_name: check-additional-extension-package-boundary-compile - group: extension-package-boundary-compile - - check_name: check-additional-extension-package-boundary-canary - group: extension-package-boundary-canary + - check_name: check-additional-extension-package-boundary + group: extension-package-boundary - check_name: check-additional-runtime-topology-gateway group: runtime-topology-gateway - check_name: check-additional-runtime-topology-architecture @@ -1668,7 +1666,7 @@ jobs: - name: Cache extension package boundary artifacts id: extension-package-boundary-cache - if: matrix.group == 'extension-package-boundary-compile' + if: matrix.group == 'extension-package-boundary' uses: actions/cache@v5 with: path: | @@ -1681,7 +1679,7 @@ jobs: ${{ runner.os }}-extension-package-boundary-v1- - name: Preserve extension package boundary cache hit - if: matrix.group == 'extension-package-boundary-compile' && steps.extension-package-boundary-cache.outputs.cache-hit == 'true' + if: matrix.group == 'extension-package-boundary' && steps.extension-package-boundary-cache.outputs.cache-hit == 'true' shell: bash run: | set -euo pipefail @@ -1757,10 +1755,8 @@ jobs: extension-bundled) run_check "lint:extensions:bundled" pnpm run lint:extensions:bundled ;; - extension-package-boundary-compile) + extension-package-boundary) run_check "test:extensions:package-boundary:compile" pnpm run test:extensions:package-boundary:compile - ;; - extension-package-boundary-canary) run_check "test:extensions:package-boundary:canary" pnpm run test:extensions:package-boundary:canary ;; runtime-topology-gateway) diff --git a/docs/ci.md b/docs/ci.md index 2608c783304..081cbaf3f67 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -51,7 +51,7 @@ Local changed-lane logic lives in `scripts/changed-lanes.mjs` and is executed by On pushes, the `checks` matrix adds the push-only `compat-node22` lane. On pull requests, that lane is skipped and the matrix stays focused on the normal test/channel lanes. -The slowest Node test families are split or balanced so each job stays small: channel contracts split registry and core coverage into eight weighted shards each, auto-reply reply command tests split into four include-pattern shards, the other large auto-reply reply prefix groups split into two shards each, and agentic gateway/plugin configs are spread across the existing source-only agentic Node jobs instead of waiting on built artifacts. `check-additional` also separates package-boundary compile/canary work from runtime topology gateway/architecture work. +The slowest Node test families are split or balanced so each job stays small: channel contracts split registry and core coverage into eight weighted shards each, auto-reply reply tests split by prefix group, and agentic gateway/plugin configs are spread across the existing source-only agentic Node jobs instead of waiting on built artifacts. `check-additional` keeps package-boundary compile/canary work together and separates it from runtime topology gateway/architecture work. GitHub may mark superseded jobs as `cancelled` when a newer push lands on the same PR or `main` ref. Treat that as CI noise unless the newest run for the same ref is also failing. Aggregate shard checks use `!cancelled() && always()` so they still report normal shard failures but do not queue after the whole workflow has already been superseded. The CI concurrency key is versioned (`CI-v2-*`) so a GitHub-side zombie in an old queue group cannot indefinitely block newer main runs. diff --git a/scripts/lib/ci-node-test-plan.mjs b/scripts/lib/ci-node-test-plan.mjs index d58f98716d5..a7f4b7afa55 100644 --- a/scripts/lib/ci-node-test-plan.mjs +++ b/scripts/lib/ci-node-test-plan.mjs @@ -67,7 +67,7 @@ function createAutoReplyReplySplitShards() { const shardCounts = { "auto-reply-reply-agent-runner": 1, - "auto-reply-reply-commands": 2, + "auto-reply-reply-commands": 1, "auto-reply-reply-dispatch": 1, "auto-reply-reply-state-routing": 1, }; diff --git a/test/scripts/ci-node-test-plan.test.ts b/test/scripts/ci-node-test-plan.test.ts index 783ecaaf698..0a1a32e9148 100644 --- a/test/scripts/ci-node-test-plan.test.ts +++ b/test/scripts/ci-node-test-plan.test.ts @@ -192,12 +192,6 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => { requiresDist: false, shardName: "auto-reply-reply-commands-a", }, - { - checkName: "checks-node-auto-reply-reply-commands-b", - configs: ["test/vitest/vitest.auto-reply-reply.config.ts"], - requiresDist: false, - shardName: "auto-reply-reply-commands-b", - }, { checkName: "checks-node-auto-reply-reply-dispatch-a", configs: ["test/vitest/vitest.auto-reply-reply.config.ts"],