Skip to content

Add windows-2025 to product build/test matrix; move tool workflows to windows-latest#6086

Draft
guhetier wants to merge 1 commit into
mainfrom
guhetier/add-windows-2025-runners_copilot
Draft

Add windows-2025 to product build/test matrix; move tool workflows to windows-latest#6086
guhetier wants to merge 1 commit into
mainfrom
guhetier/add-windows-2025-runners_copilot

Conversation

@guhetier

Copy link
Copy Markdown
Collaborator

Adds windows-2025 alongside windows-2022 to the product code build and test matrices, and moves tool-only workflows to windows-latest so they no longer require periodic version bumps.

Supersedes #5325 (which had several bugs — see "Differences from #5325" below).

Approach

  • Product code (msquic library, drivers, dotnet bindings, tests of them) — build and test on a matrix that includes both windows-2022 and windows-2025.
  • Tools (non-shipped helpers — windbg ext, perf measurement infra, nuget packaging) — single windows-latest runner, no matrix.

Changes

Product matrices (added windows-2025):

  • build.ymlbuild-windows (WinUser/UWP). Required to keep test.yml happy: test.yml already consumes windows-2025 artifacts.
  • stress.ymlbuild-windows, stress, and recvfuzz jobs (full 2022 mirror).
  • dotnet-test.ymlbuild-windows (both TLS) and dotnet-test (quictls, mirroring the existing 2022 pattern).

Tools (moved to windows-latest):

  • plugins.ymlbuild_dbgext (windows-2022windows-latest). build_quictrace was already windows-latest.
  • wan-perf.ymlwan-perf and merge-data (windows-2022windows-latest). build-perf was already windows-latest.
  • build.ymlbuild-nuget (windows-2022windows-latest). Packaging step only — artifact name strings continue to reference windows-2022 because that's still in the build matrix.

Intentionally NOT changed

  • build-windows-kernel stays on windows-2022 only — GitHub's windows-2025 image does not yet have the WDK bits to build kernel drivers (test.yml line 58 explicitly notes this, and kernel test artifacts are hardcoded to -windows-2022-).
  • build-windows-official stays on windows-2022 — it's a single-target release build (-ForceOfficialRelease); OS-version compatibility is already covered by build-windows. Adding a matrix would double CI time for negligible gain.
  • code-coverage.yml unchanged — preserves coverage analysis consistency.
  • cargo.yml, netperf.yml, netperf-kernel-bvt.yml, check-clog.yml, check-dotnet.yml unchanged — already windows-latest.
  • test.yml, test-down-level.yml already had windows-2025 in their matrices (pre-existing).

Differences from #5325

  1. Drops the windows-2025 addition to build-windows-kernel in build.yml — that change would have failed because windows-2025 doesn't yet have WDK bits for driver builds.
  2. Fixes -Sanitize-SanitizeAddress typo in stress.yml 2025 entries. The original value didn't match the artifact name produced by build-reuse-win.yml, so the test jobs would not have been able to download the build output.
  3. Adds the missing windows-2025 openssl entry to dotnet-test.yml's test matrix — the original PR built it but never ran the test against it.
  4. Mirrors windows-2025 in stress.yml's recvfuzz job (original PR missed this — recvfuzz is a product test).
  5. Fixes a latent bug in stress.yml where the stress job's artifact download name hardcoded windows-2022. Without this fix, windows-2025 matrix entries would still pull windows-2022 binaries, defeating the purpose of running them. Now uses the same conditional pattern already used by recvfuzz (uses matrix.vec.os except for WinServerPrerelease, which intentionally tests windows-2022 binaries on the prerelease OS).
  6. Moves build-nuget and wan-perf.yml's merge-data job to windows-latest (original PR missed these tool runners).

Fixes #5242.

… windows-latest

Adds windows-2025 alongside windows-2022 in the product code matrices (build.yml WinUser, stress.yml build/stress/recvfuzz, dotnet-test.yml build/test). WinKernel is intentionally not extended because GitHub's windows-2025 image does not yet have the bits to build kernel drivers (see test.yml line 58).

Switches tool-only workflows (plugins build_dbgext, wan-perf jobs) to windows-latest so they don't require periodic version bumps.

Also fixes a latent bug in stress.yml where the spinquic test job hardcoded 'windows-2022' in its artifact download name, which would have prevented windows-2025 jobs from picking up the right binaries.

Fixes #5242.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@codecov

codecov Bot commented Jun 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.71%. Comparing base (bcdb8c8) to head (46a3a3b).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6086      +/-   ##
==========================================
- Coverage   86.11%   85.71%   -0.40%     
==========================================
  Files          60       60              
  Lines       18841    18841              
==========================================
- Hits        16225    16150      -75     
- Misses       2616     2691      +75     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add windows-2025 in github runners (build + tests)

1 participant