mirror of
https://github.com/microsoft/WSL.git
synced 2026-04-11 01:27:50 -05:00
* Split x64/arm64 builds into parallel pipeline stages Restructure the CI/CD pipeline to build x64 and arm64 in parallel instead of sequentially, reducing end-to-end build time. Pipeline shapes: - PR: build_x64 ∥ build_arm64 → test (uses installer.msix directly) - Nightly: build_x64 ∥ build_arm64 → package → test (dev-cert bundle) - Release: build_x64 ∥ build_arm64 → package → test (ESRP-signed bundle) Key changes: - Extract shared build-job.yml template parameterized by platform - Add package-stage.yml that creates msixbundle from both platform artifacts, ESRP-signs for release, dev-cert signs for nightly - PR tests run immediately after x64 build using installer.msix (no package stage, no bundle needed) - Release/nightly tests wait for the package stage and test the real signed bundle that gets published - CloudTest configs are parameterized: release tests pull the bundle from the [package] artifact, PR tests use installer.msix from [drop] - arm64 + formatting checks always run in parallel with x64 but don't block the PR test gate - CodeQL runs in the arm64 stage (off the critical path) - flight-stage and nuget-stage updated for new stage names * formatting * Remove redundant runtime conditions on release-only tasks These tasks are already wrapped in compile-time conditionals which prevent them from being added to the pipeline definition for non-release builds. The runtime condition checks can never evaluate to false at that point, so they are pure noise. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback from OneBlue - Remove wslcsdk NuGet staging (wslc is not in master) - Always include [package] provider in TestMap.xml.in instead of conditionally injecting via PACKAGE_PROVIDER_BLOCK cmake variable. PR builds simply use [drop] as TEST_PACKAGE_PROVIDER; the [package] provider exists but is unused. - Add BUNDLE_ONLY cmake option so the package pipeline stage reuses cmake's existing bundle target instead of forking makeappx logic. This locks the SDK version via cmake (CMAKE_SYSTEM_VERSION) and keeps bundle creation logic in one place (msixinstaller/CMakeLists.txt). The pipeline now copies msix files to expected paths, runs a fast cmake configure with -DBUNDLE_ONLY=TRUE, and builds the bundle target. - Remove dead NuGet binary restore step in package stage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback - Fix PACKAGE_VERSION regex: escape dots so only A.B.C.D is accepted - Consolidate CMake defaults (build type, config types, output dir) before BUNDLE_ONLY block to avoid duplication - Nightly tests now use the full bundle from the package stage instead of installer.msix (new INCLUDE_PACKAGE_STAGE cmake variable) - Package stage reuses version output from build stage instead of recomputing it Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Ben Hillis <benhill@ntdev.microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
42 lines
2.1 KiB
XML
42 lines
2.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<TestMap>
|
|
<TestJobGroup Name="TaefTestsGroup" TestSystem="Default" ConfigPath="[BuildRoot]\testbin\${TARGET_PLATFORM}\cloudtest\${image}-wsl${version}\TestGroup.xml" IsActive="true"/>
|
|
<Providers>
|
|
<Provider Type="PipelineArtifacts">
|
|
<Properties>
|
|
<Add Name="CloudTest.ProviderCustomName" Value="[drop]" />
|
|
<Add Name="PipelineArtifactBuildUrl" Value="https://${VSO_ORG}.visualstudio.com/${VSO_PROJECT}/_build/results?buildId=${PIPELINE_BUILD_ID}"/>
|
|
<Add Name="PipelineArtifactName" Value="drop_wsl_build"/>
|
|
</Properties>
|
|
</Provider>
|
|
<Provider Type="PipelineArtifacts">
|
|
<Properties>
|
|
<Add Name="CloudTest.ProviderCustomName" Value="[package]" />
|
|
<Add Name="PipelineArtifactBuildUrl" Value="https://${VSO_ORG}.visualstudio.com/${VSO_PROJECT}/_build/results?buildId=${PIPELINE_BUILD_ID}"/>
|
|
<Add Name="PipelineArtifactName" Value="drop_wsl_package"/>
|
|
</Properties>
|
|
</Provider>
|
|
<Provider Type="VSODrop">
|
|
<Properties>
|
|
<Add Name="CloudTest.ProviderCustomName" Value="[test_distro]" />
|
|
<!-- When updating the drops for this make sure the retention is set to never expire -->
|
|
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_DISTRO_DROP}"/>
|
|
</Properties>
|
|
</Provider>
|
|
<Provider Type="VSODrop">
|
|
<Properties>
|
|
<Add Name="CloudTest.ProviderCustomName" Value="[test_packages]" />
|
|
<!-- When updating the drops for this make sure the retention is set to never expire -->
|
|
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_PACKAGES}"/>
|
|
</Properties>
|
|
</Provider>
|
|
<Provider Type="VSODrop">
|
|
<Properties>
|
|
<Add Name="CloudTest.ProviderCustomName" Value="[dump_tool]" />
|
|
<!-- When updating the drops for this make sure the retention is set to never expire -->
|
|
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${DUMPTOOL_DROP}"/>
|
|
</Properties>
|
|
</Provider>
|
|
</Providers>
|
|
</TestMap>
|