From a1828110704fade5281dde8b0d2e305d5b23dd54 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Mon, 22 Jun 2026 10:53:33 +0800 Subject: [PATCH] fix(ci): smooth PR runner-registration bursts (#95625) Merged via squash. Prepared head SHA: 72b2b00bf82c3e4c58777c532e27ad6aa0dae114 Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com> Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com> Reviewed-by: @vincentkoc --- .github/workflows/ci.yml | 8 ++++++++ test/scripts/ci-workflow-guards.test.ts | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c7ba073c62cf..fd2ce7310793 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -819,6 +819,7 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 4 matrix: ${{ fromJson(needs.preflight.outputs.checks_fast_core_matrix) }} steps: - name: Checkout @@ -908,6 +909,7 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 4 matrix: ${{ fromJson(needs.preflight.outputs.plugin_contracts_matrix) }} steps: - name: Checkout @@ -988,6 +990,7 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 4 matrix: ${{ fromJson(needs.preflight.outputs.channel_contracts_matrix) }} steps: - name: Checkout @@ -1140,6 +1143,7 @@ jobs: timeout-minutes: 60 strategy: fail-fast: false + max-parallel: 6 matrix: ${{ fromJson(needs.preflight.outputs.checks_node_core_nondist_matrix) }} steps: - name: Checkout @@ -1248,6 +1252,7 @@ jobs: timeout-minutes: 20 strategy: fail-fast: false + max-parallel: 4 matrix: include: - check_name: check-guards @@ -1389,6 +1394,7 @@ jobs: timeout-minutes: 20 strategy: fail-fast: false + max-parallel: 4 matrix: include: - check_name: check-additional-boundaries-a @@ -1763,6 +1769,7 @@ jobs: shell: bash strategy: fail-fast: false + max-parallel: 2 matrix: ${{ fromJson(needs.preflight.outputs.checks_windows_matrix) }} steps: - name: Checkout @@ -2092,6 +2099,7 @@ jobs: timeout-minutes: 20 strategy: fail-fast: false + max-parallel: 2 matrix: ${{ fromJson(needs.preflight.outputs.android_matrix) }} steps: - name: Checkout diff --git a/test/scripts/ci-workflow-guards.test.ts b/test/scripts/ci-workflow-guards.test.ts index dc7b3193ae41..40d56b159e11 100644 --- a/test/scripts/ci-workflow-guards.test.ts +++ b/test/scripts/ci-workflow-guards.test.ts @@ -101,6 +101,19 @@ describe("ci workflow guards", () => { expect(action).toContain("docs/* | *.md | *.mdx)"); }); + it("bounds matrix fan-out for runner-registration pressure", () => { + const workflow = readCiWorkflow(); + + expect(workflow.jobs["checks-fast-core"].strategy["max-parallel"]).toBe(4); + expect(workflow.jobs["checks-node-core-test-nondist-shard"].strategy["max-parallel"]).toBe(6); + expect(workflow.jobs["checks-fast-plugin-contracts-shard"].strategy["max-parallel"]).toBe(4); + expect(workflow.jobs["checks-fast-channel-contracts-shard"].strategy["max-parallel"]).toBe(4); + expect(workflow.jobs["check-shard"].strategy["max-parallel"]).toBe(4); + expect(workflow.jobs["check-additional-shard"].strategy["max-parallel"]).toBe(4); + expect(workflow.jobs["checks-windows"].strategy["max-parallel"]).toBe(2); + expect(workflow.jobs.android.strategy["max-parallel"]).toBe(2); + }); + it("runs the session accessor ratchet as a visible additional check", () => { const workflow = readCiWorkflow(); const additionalJob = workflow.jobs["check-additional-shard"];