Skip to content

Add workloads build #47225

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Apr 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,13 @@ extends:
- powershell: New-Item -ItemType Directory -Path $(Build.SourcesDirectory)/artifacts/bin -Force
displayName: Create artifacts/bin directory
${{ if and(eq(parameters.runTestBuild, false), ne(variables['Build.Reason'], 'PullRequest')) }}:
timeoutInMinutes: 90
timeoutInMinutes: 180
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have numbers on how much longer the build is now due to the addition of the workloads?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

building the workloads themselves takes ~20mins, but signing is taking quite a lot more time. I believe we can optimize this since I see it signing all of the emsdk files again even though they are already signed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because it's unpacking the content from the MSIs? Is it actually signing the files or just unpacking and then checking to see they are signed and then skipping them?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see them in the SigningRound* logs so I assume they're getting sent to ESRP. I haven't investigated yet why

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And the source nupkgs we're using from runtime/EMSDK, those should already be signed as part of the runtime build, correct? Is it possible we're pulling down the unsigned packages?

Copy link
Member Author

@akoeplinger akoeplinger Mar 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The emsdk ones are always signed as part of its official build yes. For runtime they are signed either in it's current official build (when targetting a release branch) or in the VMR as part of one of the vertical builds.

So at least for emsdk it shouldn't sign the files again, ever.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Signtool is supposed to be quite good now at avoiding re-signing. But I would expect re-signing in a build off main, since the source emsdk bits are unsigned.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since the source emsdk bits are unsigned.

I changed that already since I expected this to be a problem but it didn't help. Need to dig deeper.

windowsJobParameterSets:
### OFFICIAL ###
- categoryName: Official
publishArgument: $(_publishArgument)
signArgument: $(_signArgument)
officialBuildProperties: $(_officialBuildProperties)
officialBuildProperties: $(_officialBuildProperties) /p:BuildWorkloads=true
enableDefaultArtifacts: true
runTests: false
publishRetryConfig: true
Expand All @@ -133,6 +133,8 @@ extends:
runTests: false
variables:
_SignType: real
dependsOn: Official_windows_x64
downloadManifestMsiPackages: true
- categoryName: Official
targetArchitecture: arm64
publishArgument: $(_publishArgument)
Expand All @@ -141,6 +143,8 @@ extends:
runTests: false
variables:
_SignType: real
dependsOn: Official_windows_x64
downloadManifestMsiPackages: true
### PGO ###
- categoryName: PGO
pgoInstrument: true
Expand Down
3 changes: 3 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<ItemGroup>
<PackageVersion Include="AwesomeAssertions" Version="$(AwesomeAssertionsVersion)" />
<PackageVersion Include="AwesomeAssertions.Json" Version="$(AwesomeAssertionsJsonVersion)" />
<PackageVersion Include="MicroBuild.Plugins.SwixBuild.Dotnet" Version="1.1.87-gba258badda" />
<PackageVersion Include="Microsoft.ApplicationInsights" Version="$(MicrosoftApplicationInsightsPackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.DeveloperCertificates.XPlat" Version="$(MicrosoftAspNetCoreDeveloperCertificatesXPlatPackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.Extensions.Tooling.Internal" Version="$(MicrosoftAspNetCoreMvcRazorExtensionsToolingInternalPackageVersion)" />
Expand All @@ -33,6 +34,8 @@
<PackageVersion Include="Microsoft.DiaSymReader" Version="$(MicrosoftDiaSymReaderVersion)" />
<PackageVersion Include="Microsoft.Deployment.DotNet.Releases" Version="$(MicrosoftDeploymentDotNetReleasesVersion)" />
<PackageVersion Include="Microsoft.DotNet.Build.Tasks.Installers" Version="$(MicrosoftDotNetBuildTasksInstallersPackageVersion)" />
<PackageVersion Include="Microsoft.DotNet.Build.Tasks.Templating" Version="$(MicrosoftDotNetBuildTasksTemplatingPackageVersion)" />
<PackageVersion Include="Microsoft.DotNet.Build.Tasks.Workloads" Version="$(MicrosoftDotNetBuildTasksWorkloadsPackageVersion)" />
<PackageVersion Include="Microsoft.DotNet.DarcLib" Version="$(MicrosoftDotNetDarcLibVersion)" />
<PackageVersion Include="Microsoft.DotNet.Installer.Windows.Security.TestData" Version="$(MicrosoftDotNetInstallerWindowsSecurityTestDataPackageVersion)" />
<PackageVersion Include="Microsoft.DotNet.SignCheck" Version="$(ArcadeSdkVersion)" />
Expand Down
16 changes: 13 additions & 3 deletions eng/Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,26 @@
they depend on assets from other verticals that are built in the first build pass. -->
<ItemGroup Condition="'$(DotNetBuildPass)' == '2' and
'$(OS)' == 'Windows_NT' and
'$(TargetArchitecture)' == 'x64'">
'$(TargetArchitecture)' == 'x64' and
'$(BuildWorkloads)' != 'true'">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might make things cleaner to actually build these components via an opt-in property in the future instead of by default based on the BuildPass + config

Copy link
Member Author

@akoeplinger akoeplinger Apr 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I agree. We can clean this up later.

<ProjectToBuild Include="$(RepoRoot)src\Layout\VS.Redist.Common.Net.Core.SDK.MSBuildExtensions\VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.proj" DotNetBuildPass="2" />
<ProjectToBuild Include="$(RepoRoot)src\Layout\VS.Redist.Common.Net.Core.SDK.VSTemplateLocator\VS.Redist.Common.Net.Core.SDK.VSTemplateLocator.proj" DotNetBuildPass="2" />
</ItemGroup>

<!-- For product build, build the sdk bundle in the second build pass on windows as
<!-- For product build, build the Workloads in the second build pass on windows as
it depends on assets from other verticals that are built in the first build pass. -->
<ItemGroup Condition="'$(DotNetBuildPass)' == '2' and
'$(OS)' == 'Windows_NT' and
'$(TargetArchitecture)' == 'x64' and
'$(BuildWorkloads)' == 'true'">
<ProjectToBuild Include="$(RepoRoot)src\Workloads\VSInsertion\workloads.csproj" DotNetBuildPass="2" />
</ItemGroup>

<!-- For product build, build the sdk bundle in the third build pass on windows as
it depends on assets from other verticals that are built in the second build pass. -->
<ItemGroup Condition="'$(DotNetBuildPass)' == '3' and
'$(OS)' == 'Windows_NT'">
<ProjectToBuild Include="$(RepoRoot)src\Layout\redist\redist.csproj" DotNetBuildPass="2" />
<ProjectToBuild Include="$(RepoRoot)src\Layout\redist\redist.csproj" DotNetBuildPass="3" />
</ItemGroup>

</Project>
22 changes: 19 additions & 3 deletions eng/Signing.props
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,25 @@
<FileSignInfo Include="comhost.dll" CertificateName="None" />
<FileSignInfo Include="singlefilehost.exe" CertificateName="None" />

<!-- .ttf and .js files come in from some older aspnetcore packages (e.g. 2.1).
<!-- .ttf and .otf files come in from some older aspnetcore packages (e.g. 2.1).
These files in the 5.0 packages are NOT signed. When doing postbuild signing,
SignTool will recognize that the files in the installer zips came from the 5.0 packages
pulled in from aspnetcore, and aspnetcore said not to sign them. This info is not
available for the 2.1 packages, so we need to avoid signing these in this repo. -->
<FileExtensionSignInfo Include=".ttf" CertificateName="None" />
<FileExtensionSignInfo Include=".otf" CertificateName="None" />
<FileExtensionSignInfo Remove=".js" />
<FileExtensionSignInfo Include=".js" CertificateName="None" />

<!-- We don't need to code sign .js files because they are not used in Windows Script Host. -->
<FileExtensionSignInfo Update=".js" CertificateName="None" />

<!-- Skip signing .py files because they are already signed -->
<FileExtensionSignInfo Update=".py" CertificateName="None" />
<FileExtensionSignInfo Include=".pyd" CertificateName="None" />
<FileExtensionSignInfo Include=".cat" CertificateName="None" />

<!-- Zero length files should not be signed because it breaks signing/ESRP. -->
<FileSignInfo Include="__init__.py" CertificateName="None" />
<FileSignInfo Include="eggs.py" CertificateName="None" />
</ItemGroup>

<!--
Expand Down Expand Up @@ -73,6 +83,12 @@
Kind="Package" />
</ItemGroup>

<ItemGroup Condition="'$(DotNetBuild)' != 'true' or '$(BuildWorkloads)' == 'true'">
<Artifact Include="$(VisualStudioSetupInsertionPath)\**\*.zip"
IsShipping="true"
Kind="Blob" />
</ItemGroup>

<!-- Only publish this file from win-x64 so that we don't end up with duplicates. -->
<ItemGroup Condition="'$(PublishBinariesAndBadge)' == 'true' and '$(OS)' == 'Windows_NT' and '$(TargetArchitecture)' == 'x64' and '$(PgoInstrument)' != 'true' and ('$(DotNetBuildPass)' == '' or '$(DotNetBuildPass)' == '1')">
<SdkArtifact Include="$(ArtifactsShippingPackagesDir)productVersion.txt" />
Expand Down
12 changes: 10 additions & 2 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,12 @@
<Uri>https://github.com/dotnet/core-setup</Uri>
<Sha>7d57652f33493fa022125b7f63aad0d70c52d810</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-10.0.100.Transport" Version="10.0.0-preview.4.25176.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Dependency Name="Microsoft.NET.Runtime.Emscripten.Sdk.Internal" Version="10.0.0-preview.4.25176.1">
<Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>e7ebd8aa0424ba4dc6ac03419954c3287d891faa</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.emsdk" Version="10.0.0-preview.4.25176.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Dependency Name="Microsoft.SourceBuild.Intermediate.emsdk" Version="10.0.0-preview.4.25176.1">
<Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>e7ebd8aa0424ba4dc6ac03419954c3287d891faa</Sha>
<SourceBuild RepoName="emsdk" ManagedOnly="true" />
Expand Down Expand Up @@ -648,6 +648,14 @@
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>6bcab7722ffc02d9a9f64e736d06bb4e4a04a94b</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Build.Tasks.Templating" Version="10.0.0-beta.25207.4">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>6bcab7722ffc02d9a9f64e736d06bb4e4a04a94b</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Build.Tasks.Workloads" Version="10.0.0-beta.25207.4">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>6bcab7722ffc02d9a9f64e736d06bb4e4a04a94b</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="10.0.0-beta.25207.4">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>6bcab7722ffc02d9a9f64e736d06bb4e4a04a94b</Sha>
Expand Down
22 changes: 13 additions & 9 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
It should always be the hundreds-value of the current SDK version, never any
preview version components or anything else. E.g. 8.0.100, 9.0.300, etc. -->
<SdkFeatureBand>$(VersionMajor).$(VersionMinor).$(VersionSDKMinor)00</SdkFeatureBand>
<BuiltinWorkloadFeatureBand>$(VersionMajor).$(VersionMinor).100</BuiltinWorkloadFeatureBand>
<VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionSDKMinor)$(VersionFeature)</VersionPrefix>
<MajorMinorVersion>$(VersionMajor).$(VersionMinor)</MajorMinorVersion>
<CliProductBandVersion>$(MajorMinorVersion).$(VersionSDKMinor)</CliProductBandVersion>
Expand Down Expand Up @@ -255,6 +256,16 @@
<MicrosoftCodeAnalysisRazorToolingInternalVersion>10.0.0-preview.25207.2</MicrosoftCodeAnalysisRazorToolingInternalVersion>
<MicrosoftNETSdkRazorSourceGeneratorsTransportPackageVersion>10.0.0-preview.25207.2</MicrosoftNETSdkRazorSourceGeneratorsTransportPackageVersion>
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/emsdk -->
<MicrosoftNETRuntimeEmscriptenSdkInternalVersion>10.0.0-preview.4.25176.1</MicrosoftNETRuntimeEmscriptenSdkInternalVersion>
<!-- emscripten versions, these are are included in package IDs and need to be kept in sync with emsdk -->
<EmscriptenVersionCurrent>3.1.56</EmscriptenVersionCurrent>
<EmscriptenVersionNet9>3.1.56</EmscriptenVersionNet9>
<EmscriptenVersionNet8>3.1.34</EmscriptenVersionNet8>
<EmscriptenVersionNet7>3.1.12</EmscriptenVersionNet7>
<EmscriptenVersionNet6>2.0.23</EmscriptenVersionNet6>
</PropertyGroup>
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/wpf -->
<MicrosoftNETSdkWindowsDesktopPackageVersion>10.0.0-preview.4.25207.5</MicrosoftNETSdkWindowsDesktopPackageVersion>
Expand All @@ -272,6 +283,8 @@
<PropertyGroup>
<!-- Dependencies from https://github.com/dotnet/arcade -->
<MicrosoftDotNetBuildTasksInstallersPackageVersion>10.0.0-beta.25207.4</MicrosoftDotNetBuildTasksInstallersPackageVersion>
<MicrosoftDotNetBuildTasksTemplatingPackageVersion>10.0.0-beta.25207.4</MicrosoftDotNetBuildTasksTemplatingPackageVersion>
<MicrosoftDotNetBuildTasksWorkloadsPackageVersion>10.0.0-beta.25207.4</MicrosoftDotNetBuildTasksWorkloadsPackageVersion>
<MicrosoftDotNetSignToolVersion>10.0.0-beta.25207.4</MicrosoftDotNetSignToolVersion>
<MicrosoftDotNetXliffTasksVersion>10.0.0-beta.25207.4</MicrosoftDotNetXliffTasksVersion>
<MicrosoftDotNetXUnitExtensionsVersion>10.0.0-beta.25207.4</MicrosoftDotNetXUnitExtensionsVersion>
Expand Down Expand Up @@ -308,15 +321,6 @@
<XamarinMacCatalystWorkloadManifestVersion>18.2.10322-net10-p1</XamarinMacCatalystWorkloadManifestVersion>
<XamarinMacOSWorkloadManifestVersion>15.2.10322-net10-p1</XamarinMacOSWorkloadManifestVersion>
<XamarinTvOSWorkloadManifestVersion>18.2.10322-net10-p1</XamarinTvOSWorkloadManifestVersion>
<!-- Workloads from dotnet/emsdk -->
<MicrosoftNETWorkloadEmscriptenCurrentManifest100100TransportPackageVersion>10.0.0-preview.4.25176.1</MicrosoftNETWorkloadEmscriptenCurrentManifest100100TransportPackageVersion>
<EmscriptenWorkloadManifestVersion>$(MicrosoftNETWorkloadEmscriptenCurrentManifest100100TransportPackageVersion)</EmscriptenWorkloadManifestVersion>
<!-- emsdk workload prerelease version band must match the emsdk feature band -->
<EmscriptenWorkloadFeatureBand>10.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-[A-z]*[\.]*\d*`))</EmscriptenWorkloadFeatureBand>
<!-- Workloads from dotnet/runtime use MicrosoftNETCoreAppRefPackageVersion because it has a stable name that does not include the full feature band -->
<MonoWorkloadManifestVersion>$(MicrosoftNETCoreAppRefPackageVersion)</MonoWorkloadManifestVersion>
<!-- mono workload prerelease version band must match the runtime feature band -->
<MonoWorkloadFeatureBand>10.0.100$([System.Text.RegularExpressions.Regex]::Match($(MonoWorkloadManifestVersion), `-[A-z]*[\.]*\d*`))</MonoWorkloadFeatureBand>
</PropertyGroup>
<PropertyGroup Label="Pinned dependency">
<!-- This package is not being produced outside of the 2.0 branch of corefx and should not change. -->
Expand Down
12 changes: 12 additions & 0 deletions eng/pipelines/templates/jobs/sdk-build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
parameters:
### GENERAL ###
variables: {}
dependsOn: ''
oneESCompat:
templateFolderName: templates
publishTaskPrefix: ''
Expand All @@ -27,6 +28,7 @@ parameters:
osProperties: ''
runtimeSourceProperties: ''
officialBuildProperties: ''
downloadManifestMsiPackages: false
### ARCADE ###
preSteps: []

Expand All @@ -51,6 +53,7 @@ jobs:
enableSbom: ${{ parameters.enableSbom }}
variables:
- ${{ insert }}: ${{ parameters.variables }}
dependsOn: ${{ parameters.dependsOn }}
preSteps: ${{ parameters.preSteps }}
templateContext:
sdl:
Expand All @@ -74,6 +77,15 @@ jobs:
legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
- template: /eng/common/templates/steps/enable-internal-runtimes.yml

- ${{ if eq(parameters.downloadManifestMsiPackages, true) }}:
- task: DownloadBuildArtifacts@1
inputs:
artifactName: PackageArtifacts
downloadPath: $(Build.SourcesDirectory)/artifacts/downloaded-manifest-msi-packages
itemPattern: '**/*Manifest-*.Msi.*.nupkg'
checkDownloadedFiles: true
displayName: Download Manifest msi packages

############### BUILDING ###############
- ${{ if eq(parameters.pool.os, 'windows') }}:
- powershell: eng/common/build.ps1
Expand Down
90 changes: 80 additions & 10 deletions eng/pipelines/templates/stages/vmr-verticals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -872,44 +872,113 @@ stages:
targetArchitecture: arm64
extraProperties: /p:PgoInstrument=true

# Build Pass 2 verticals
## Build Pass 2 verticals

# build the cross-OS DACs
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
sign: ${{ variables.signEnabled }}
signDac: ${{ variables.signDacEnabled }}
pool: ${{ parameters.pool_Windows }}
targetOS: windows
targetArchitecture: x86
buildPass: 2
reuseBuildArtifactsFrom:
- Windows_x64
- Windows_x86
- Windows_arm64
- AzureLinux_x64_Cross_x64
- AzureLinux_x64_Cross_Alpine_x64
- AzureLinux_x64_Cross_arm64
- AzureLinux_x64_Cross_Alpine_arm64
- AzureLinux_x64_Cross_arm
- AzureLinux_x64_Cross_Alpine_arm

# build the ASP.NET Core hosting bundle and VS components
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
sign: ${{ variables.signEnabled }}
pool: ${{ parameters.pool_Windows }}
targetOS: windows
targetArchitecture: x64
buildPass: 2
reuseBuildArtifactsFrom:
- Windows_x64
- Windows_x86
- Windows_arm64

# build the workloads
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows_Workloads
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
sign: ${{ variables.signEnabled }}
pool: ${{ parameters.pool_Windows }}
targetOS: windows
targetArchitecture: x64
buildPass: 2
extraProperties: /p:BuildWorkloads=true
reuseBuildArtifactsFrom:
- Windows_x64
- Windows_x86
- Windows_arm64
- Browser_Shortstack_wasm
- Browser_Multithreaded_Shortstack_wasm
- Wasi_Shortstack_wasm
- Android_Shortstack_arm64
- Android_Shortstack_arm
- Android_Shortstack_x64
- Android_Shortstack_x86
- iOS_Shortstack_arm64
- iOSSimulator_Shortstack_arm64
- iOSSimulator_Shortstack_x64
- tvOS_Shortstack_arm64
- tvOSSimulator_Shortstack_arm64
- tvOSSimulator_Shortstack_x64
- MacCatalyst_Shortstack_arm64
- MacCatalyst_Shortstack_x64

## Build Pass 3 verticals

# build the Windows SDK bundles
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
sign: ${{ variables.signEnabled }}
pool: ${{ parameters.pool_Windows }}
targetOS: windows
targetArchitecture: x64
buildPass: 3
reuseBuildArtifactsFrom:
- Windows_Workloads_x64_BuildPass2
- Windows_x64
- Windows_x86
- Windows_arm64

- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
sign: ${{ variables.signEnabled }}
signDac: ${{ variables.signDacEnabled }}
pool: ${{ parameters.pool_Windows }}
targetOS: windows
targetArchitecture: x86
buildPass: 2
buildPass: 3
reuseBuildArtifactsFrom:
- Windows_Workloads_x64_BuildPass2
- Windows_x64
- Windows_x86
- Windows_arm64
- AzureLinux_x64_Cross_x64
- AzureLinux_x64_Cross_Alpine_x64
- AzureLinux_x64_Cross_arm64
- AzureLinux_x64_Cross_Alpine_arm64
- AzureLinux_x64_Cross_arm
- AzureLinux_x64_Cross_Alpine_arm

- template: ../jobs/vmr-build.yml
parameters:
Expand All @@ -920,8 +989,9 @@ stages:
pool: ${{ parameters.pool_Windows }}
targetOS: windows
targetArchitecture: arm64
buildPass: 2
buildPass: 3
reuseBuildArtifactsFrom:
- Windows_Workloads_x64_BuildPass2
- Windows_x64
- Windows_x86
- Windows_arm64
Loading