Skip to content

ci(win): produce separate VS2019/VS2022/VS2026 developer distributives#6263

Merged
Fedr merged 4 commits into
masterfrom
ci/windows-three-vs-distributives
Jun 15, 2026
Merged

ci(win): produce separate VS2019/VS2022/VS2026 developer distributives#6263
Fedr merged 4 commits into
masterfrom
ci/windows-three-vs-distributives

Conversation

@Fedr

@Fedr Fedr commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

What

The Windows release currently ships a single developer archive,
MeshLibDist_<ver>.zip, built only from the VS2019 CMake build. This PR
produces three archives instead — one per Visual Studio toolchain — built under
the same circumstances (scheduled / full-ci / build-release-windows runs and
the by-tag "Windows Release by Tag" workflow):

  • MeshLibDistVS19_<ver>.zip — what was previously MeshLibDist_<ver>.zip (VS2019)
  • MeshLibDistVS22_<ver>.zip — VS2022
  • MeshLibDistVS26_<ver>.zip — VS2026

Changes

  • build-test-windows.yml — upload a developer archive per toolchain:
    VS2019/VS2022 from their CMake builds, VS2026 from its MSBuild build (which
    also produces the C#/.NET components). A new VS_TAG env (VS19/VS22/VS26)
    is woven into the MREDist_* / WindowsArchive_* names so the per-toolchain
    archives no longer collide. The compiler-independent C2 headers archive is
    still uploaded once (from VS2019) to avoid racing same-named uploads.
  • update-win-version.yml — one matrix leg per toolchain, each repackaging its
    archives into MeshLibDistVS{19,22,26}.zip using the matching vcpkg baseline
    and triplet. Adds a vs22_vcpkg_version input. The iterator-debug leg is
    unchanged.
  • build-test-distribute.yml / distro-release.yml — pass vs22_vcpkg_version
    and rename the per-VS archives to MeshLibDistVSxx_<ver>.zip. The
    iterator-debug archive keeps its historical
    MeshLibDist_<ver>-IteratorDebug.zip name.
  • windows-standard / windows-finalize-release matrices — add the VS2022
    CMake and VS2026 MSBuild Debug+Release legs so those paths also build all three
    archives (the full config already had them).
  • test-distribution.yml — smoke-test all three archives.
  • release_table.txt — link all three Windows archives in the published
    release notes.

Validation

Labeled full-ci to exercise the full Windows config (all three toolchains,
Debug+Release) end-to-end, with the non-Windows platforms disabled since they are
untouched. The resulting -pr-test draft release should contain
MeshLibDistVS19/VS22/VS26_<ver>.zip plus the unchanged iterator-debug archive.

Notes

  • Downstream consumers were checked: nothing else references the old
    MeshLibDist_<ver>.zip name.
  • On a plain push to master (minimal config) the broadened upload gate now also
    uploads one extra binary archive that is discarded unconsumed (same pattern as
    the pre-existing VS2019 push uploads); the per-VS distributives themselves are
    only repackaged on release runs. Happy to gate the upload on build-release-win
    instead if preferred.

Previously a single Windows developer archive (MeshLibDist_<ver>.zip) was
built only from the VS2019 CMake build. Build three archives instead, one per
Visual Studio toolchain, under the same circumstances (scheduled/full-ci/
build-release-windows runs and the by-tag Windows release workflow):

- MeshLibDistVS19_<ver>.zip  (was MeshLibDist_<ver>.zip, VS2019)
- MeshLibDistVS22_<ver>.zip  (VS2022)
- MeshLibDistVS26_<ver>.zip  (VS2026)

- build-test-windows.yml: upload a developer archive from every VS CMake build
  (not just VS2019); tag the MREDist/WindowsArchive names with VS19/VS22/VS26
  so they no longer collide. The compiler-independent C2 headers archive is
  still uploaded once (from VS2019) to avoid racing same-named uploads.
- update-win-version.yml: one matrix leg per toolchain, each repackaging its
  archives into MeshLibDistVS{19,22,26}.zip with the matching vcpkg baseline
  and triplet; new vs22_vcpkg_version input. The iterator-debug archive is
  unchanged.
- build-test-distribute.yml / distro-release.yml: pass vs22_vcpkg_version and
  rename per-VS archives to MeshLibDistVSxx_<ver>.zip (iterator-debug keeps its
  historical MeshLibDist_<ver>-IteratorDebug.zip name).
- windows-standard/finalize-release matrices: add the VS2022/VS2026 CMake
  Debug+Release legs so those paths also build all three archives.
- test-distribution.yml: smoke-test all three archives.
- release_table.txt: link all three Windows archives.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fedr and others added 2 commits June 15, 2026 16:16
The VS2026 developer archive now comes from the msvc-2026 MSBuild build (which
also produces the C#/.NET components and uses the v143 CUDA toolset), while
VS2019 and VS2022 keep shipping their CMake builds.

- build-test-windows.yml: upload the distributive from the msvc-2026 MSBuild
  build and from the msvc-2019/msvc-2022 CMake builds.
- windows-standard/finalize-release matrices: provide the VS2026 Debug+Release
  MSBuild legs (the full config already had them); drop the VS2026 CMake legs
  that were only added for the archive.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
With the VS2026 distributive now built from MSBuild, the msvc-2026 CMake Debug
leg in the standard (build-release-windows) config no longer produces an archive
and is not consumed by anything; the VS2026 Debug tests still run via the new
MSBuild Debug leg. Drop it so every standard-config leg maps to a release
archive. CMake VS2026 build coverage remains in the full config used by
full-ci / scheduled runs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Fedr Fedr requested a review from Grantim June 15, 2026 14:29
The VS2026 distributive is built from the MSBuild job, whose C# test run
(MRDotNet2Test) leaves a debug-symbol cache under x64/<config>/sym
(coreclr/ntdll/kernelbase PDBs, indexed by GUID). copy_lib() copies x64/
wholesale and keeps every .pdb, so ~20 MB of Windows/CLR system symbols were
shipping inside MeshLibDistVS26.zip. Remove the install/lib/*/sym caches before
packaging. No-op for the VS2019/VS2022 (CMake) archives, which have no such cache.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Fedr Fedr merged commit d79fb45 into master Jun 15, 2026
46 checks passed
@Fedr Fedr deleted the ci/windows-three-vs-distributives branch June 15, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants