Merge branch 'main' into shortstack

This commit is contained in:
Jo Shields 2024-02-06 09:20:29 -05:00 committed by GitHub
commit 30138aab29
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 1043 additions and 811 deletions

View file

@ -3,7 +3,7 @@
"isRoot": true, "isRoot": true,
"tools": { "tools": {
"microsoft.dotnet.darc": { "microsoft.dotnet.darc": {
"version": "1.1.0-beta.24076.2", "version": "1.1.0-beta.24080.1",
"commands": [ "commands": [
"darc" "darc"
] ]

View file

@ -24,7 +24,6 @@
<Dependency Name="VS.Redist.Common.NetCore.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="VS.Redist.Common.NetCore.SharedFramework.x64.9.0" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>d40c654c274fe4f4afe66328f0599130f3eb2ea6</Sha> <Sha>d40c654c274fe4f4afe66328f0599130f3eb2ea6</Sha>
<SourceBuild RepoName="runtime" ManagedOnly="false" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.NETCore.App.Ref" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.NETCore.App.Ref" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri> <Uri>https://github.com/dotnet/runtime</Uri>
@ -52,6 +51,12 @@
<Uri>https://github.com/dotnet/runtime</Uri> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>d40c654c274fe4f4afe66328f0599130f3eb2ea6</Sha> <Sha>d40c654c274fe4f4afe66328f0599130f3eb2ea6</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.runtime" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/runtime</Uri>
<Sha>d40c654c274fe4f4afe66328f0599130f3eb2ea6</Sha>
<SourceBuild RepoName="runtime" ManagedOnly="false" />
</Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Ref" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.AspNetCore.App.Ref" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri> <Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha> <Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha>
@ -59,7 +64,6 @@
<Dependency Name="Microsoft.AspNetCore.App.Ref.Internal" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.AspNetCore.App.Ref.Internal" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri> <Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha> <Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha>
<SourceBuild RepoName="aspnetcore" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.AspNetCore.App.Runtime.win-x64" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.AspNetCore.App.Runtime.win-x64" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri> <Uri>https://github.com/dotnet/aspnetcore</Uri>
@ -81,6 +85,12 @@
<Uri>https://github.com/dotnet/aspnetcore</Uri> <Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha> <Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.aspnetcore" Version="9.0.0-preview.2.24079.10" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/aspnetcore</Uri>
<Sha>70abdab0a5969fd7746479c1fae4697bce2dbc92</Sha>
<SourceBuild RepoName="aspnetcore" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.Common.ItemTemplates" Version="9.0.100-preview.2.24080.4"> <Dependency Name="Microsoft.DotNet.Common.ItemTemplates" Version="9.0.100-preview.2.24080.4">
<Uri>https://github.com/dotnet/sdk</Uri> <Uri>https://github.com/dotnet/sdk</Uri>
<Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha> <Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha>
@ -92,12 +102,17 @@
<Dependency Name="Microsoft.NET.Sdk" Version="9.0.100-preview.2.24080.4"> <Dependency Name="Microsoft.NET.Sdk" Version="9.0.100-preview.2.24080.4">
<Uri>https://github.com/dotnet/sdk</Uri> <Uri>https://github.com/dotnet/sdk</Uri>
<Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha> <Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha>
<SourceBuild RepoName="sdk" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.MSBuildSdkResolver" Version="9.0.100-preview.2.24080.4"> <Dependency Name="Microsoft.DotNet.MSBuildSdkResolver" Version="9.0.100-preview.2.24080.4">
<Uri>https://github.com/dotnet/sdk</Uri> <Uri>https://github.com/dotnet/sdk</Uri>
<Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha> <Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.sdk" Version="9.0.100-preview.2.24080.4">
<Uri>https://github.com/dotnet/sdk</Uri>
<Sha>aea4e42aff076545d4709fd6071dda62fe0ae332</Sha>
<SourceBuild RepoName="sdk" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.2.1" Version="1.0.2-beta4.22406.1"> <Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.2.1" Version="1.0.2-beta4.22406.1">
<Uri>https://github.com/dotnet/test-templates</Uri> <Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>0385265f4d0b6413d64aea0223172366a9b9858c</Sha> <Sha>0385265f4d0b6413d64aea0223172366a9b9858c</Sha>
@ -117,12 +132,17 @@
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.8.0" Version="1.1.0-rc.24081.1"> <Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.8.0" Version="1.1.0-rc.24081.1">
<Uri>https://github.com/dotnet/test-templates</Uri> <Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>4486ff28949aa10726517ddf7ecabedc2a7e1ceb</Sha> <Sha>4486ff28949aa10726517ddf7ecabedc2a7e1ceb</Sha>
<SourceBuild RepoName="test-templates" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.9.0" Version="1.1.0-rc.24081.1"> <Dependency Name="Microsoft.DotNet.Test.ProjectTemplates.9.0" Version="1.1.0-rc.24081.1">
<Uri>https://github.com/dotnet/test-templates</Uri> <Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>4486ff28949aa10726517ddf7ecabedc2a7e1ceb</Sha> <Sha>4486ff28949aa10726517ddf7ecabedc2a7e1ceb</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.test-templates" Version="1.1.0-rc.24081.1">
<Uri>https://github.com/dotnet/test-templates</Uri>
<Sha>4486ff28949aa10726517ddf7ecabedc2a7e1ceb</Sha>
<SourceBuild RepoName="test-templates" ManagedOnly="true" />
</Dependency>
<!-- For coherency purposes, these versions should be gated by the versions of winforms and wpf routed via windowsdesktop --> <!-- For coherency purposes, these versions should be gated by the versions of winforms and wpf routed via windowsdesktop -->
<Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="9.0.0-preview.2.24078.1" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64"> <Dependency Name="Microsoft.Dotnet.WinForms.ProjectTemplates" Version="9.0.0-preview.2.24078.1" CoherentParentDependency="Microsoft.WindowsDesktop.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/winforms</Uri> <Uri>https://github.com/dotnet/winforms</Uri>
@ -136,6 +156,7 @@
<Uri>https://github.com/dotnet/fsharp</Uri> <Uri>https://github.com/dotnet/fsharp</Uri>
<Sha>7c217c487c6e2b7d824f3d40666b3cbad412cad4</Sha> <Sha>7c217c487c6e2b7d824f3d40666b3cbad412cad4</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.fsharp" Version="8.0.300-beta.24079.8" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.SourceBuild.Intermediate.fsharp" Version="8.0.300-beta.24079.8" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/fsharp</Uri> <Uri>https://github.com/dotnet/fsharp</Uri>
<Sha>7c217c487c6e2b7d824f3d40666b3cbad412cad4</Sha> <Sha>7c217c487c6e2b7d824f3d40666b3cbad412cad4</Sha>
@ -144,6 +165,11 @@
<Dependency Name="Microsoft.NET.Test.Sdk" Version="17.10.0-preview-24078-03" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.NET.Test.Sdk" Version="17.10.0-preview-24078-03" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/microsoft/vstest</Uri> <Uri>https://github.com/microsoft/vstest</Uri>
<Sha>a09e17e9efd7f85abab5a83d627d15aef5b6a954</Sha> <Sha>a09e17e9efd7f85abab5a83d627d15aef5b6a954</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.vstest" Version="17.10.0-preview-24078-03" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/microsoft/vstest</Uri>
<Sha>a09e17e9efd7f85abab5a83d627d15aef5b6a954</Sha>
<SourceBuild RepoName="vstest" ManagedOnly="true" /> <SourceBuild RepoName="vstest" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.NET.ILLink.Tasks" Version="9.0.0-preview.2.24080.1" CoherentParentDependency="Microsoft.NET.Sdk">
@ -153,11 +179,21 @@
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.10.0-1.24067.21" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.10.0-1.24067.21" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/roslyn</Uri> <Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>3cd939f76803da435c20b082a5cfcc844386fcfb</Sha> <Sha>3cd939f76803da435c20b082a5cfcc844386fcfb</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.roslyn" Version="4.10.0-1.24067.21" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>3cd939f76803da435c20b082a5cfcc844386fcfb</Sha>
<SourceBuild RepoName="roslyn" ManagedOnly="true" /> <SourceBuild RepoName="roslyn" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.Build" Version="17.10.0-preview-24076-03" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.Build" Version="17.10.0-preview-24076-03" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/msbuild</Uri> <Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>0d8d09e5c582526daeb4af0b52956c3290e424d1</Sha> <Sha>0d8d09e5c582526daeb4af0b52956c3290e424d1</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.msbuild" Version="17.10.0-preview-24076-03" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/msbuild</Uri>
<Sha>0d8d09e5c582526daeb4af0b52956c3290e424d1</Sha>
<SourceBuild RepoName="msbuild" ManagedOnly="true" /> <SourceBuild RepoName="msbuild" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="NuGet.Build.Tasks" Version="6.9.0-rc.86" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="NuGet.Build.Tasks" Version="6.9.0-rc.86" CoherentParentDependency="Microsoft.NET.Sdk">
@ -172,19 +208,24 @@
<Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport" Version="9.0.0-preview.2.24076.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64"> <Dependency Name="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport" Version="9.0.0-preview.2.24076.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/emsdk</Uri> <Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>687be2a32a302aaade82380c0eaafa5af85fb4da</Sha> <Sha>687be2a32a302aaade82380c0eaafa5af85fb4da</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.emsdk" Version="9.0.0-preview.2.24076.1" CoherentParentDependency="Microsoft.NETCore.App.Runtime.win-x64">
<Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>687be2a32a302aaade82380c0eaafa5af85fb4da</Sha>
<SourceBuild RepoName="emsdk" ManagedOnly="true" /> <SourceBuild RepoName="emsdk" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.Deployment.DotNet.Releases" Version="2.0.0-preview.1.24075.2" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.Deployment.DotNet.Releases" Version="2.0.0-preview.1.24075.2" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/deployment-tools</Uri> <Uri>https://github.com/dotnet/deployment-tools</Uri>
<Sha>643a0cb2966b097763158082a138189e22205d3b</Sha> <Sha>643a0cb2966b097763158082a138189e22205d3b</Sha>
</Dependency> </Dependency>
<!-- Explicit dependency because Microsoft.Deployment.DotNet.Releases has different versioning <!-- Intermediate is necessary for source build. -->
than the SB intermediate -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.deployment-tools" Version="9.0.0-preview.1.24075.2" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.SourceBuild.Intermediate.deployment-tools" Version="9.0.0-preview.1.24075.2" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/deployment-tools</Uri> <Uri>https://github.com/dotnet/deployment-tools</Uri>
<Sha>643a0cb2966b097763158082a138189e22205d3b</Sha> <Sha>643a0cb2966b097763158082a138189e22205d3b</Sha>
<SourceBuild RepoName="deployment-tools" ManagedOnly="true" /> <SourceBuild RepoName="deployment-tools" ManagedOnly="true" />
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="9.0.0-alpha.1.24101.1"> <Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="9.0.0-alpha.1.24101.1">
<Uri>https://github.com/dotnet/source-build-externals</Uri> <Uri>https://github.com/dotnet/source-build-externals</Uri>
<Sha>949db2fd23b687c0d545e954943feada8b361ed6</Sha> <Sha>949db2fd23b687c0d545e954943feada8b361ed6</Sha>
@ -194,6 +235,7 @@
<Uri>https://github.com/dotnet/command-line-api</Uri> <Uri>https://github.com/dotnet/command-line-api</Uri>
<Sha>ecd2ce5eafbba3008a7d4f5d04b025d30928c812</Sha> <Sha>ecd2ce5eafbba3008a7d4f5d04b025d30928c812</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.command-line-api" Version="0.1.506801" CoherentParentDependency="Microsoft.NET.Sdk"> <Dependency Name="Microsoft.SourceBuild.Intermediate.command-line-api" Version="0.1.506801" CoherentParentDependency="Microsoft.NET.Sdk">
<Uri>https://github.com/dotnet/command-line-api</Uri> <Uri>https://github.com/dotnet/command-line-api</Uri>
<Sha>ecd2ce5eafbba3008a7d4f5d04b025d30928c812</Sha> <Sha>ecd2ce5eafbba3008a7d4f5d04b025d30928c812</Sha>
@ -204,7 +246,6 @@
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24102.4"> <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24102.4">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha> <Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha>
<SourceBuild RepoName="arcade" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="9.0.0-beta.24102.4"> <Dependency Name="Microsoft.DotNet.CMake.Sdk" Version="9.0.0-beta.24102.4">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
@ -214,30 +255,41 @@
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha> <Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.24076.2"> <Dependency Name="Microsoft.DotNet.Darc" Version="1.1.0-beta.24080.1">
<Uri>https://github.com/dotnet/arcade-services</Uri> <Uri>https://github.com/dotnet/arcade-services</Uri>
<Sha>e9cac5ab2b545c66de5414b330d2187286d17194</Sha> <Sha>749beebfd890571ce6f3fe8f557cb3cad070c946</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.DarcLib" Version="1.1.0-beta.24076.2"> <Dependency Name="Microsoft.DotNet.DarcLib" Version="1.1.0-beta.24080.1">
<Uri>https://github.com/dotnet/arcade-services</Uri> <Uri>https://github.com/dotnet/arcade-services</Uri>
<Sha>e9cac5ab2b545c66de5414b330d2187286d17194</Sha> <Sha>749beebfd890571ce6f3fe8f557cb3cad070c946</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24102.4"> <Dependency Name="Microsoft.DotNet.XliffTasks" Version="9.0.0-beta.24102.4">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha> <Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha>
</Dependency> </Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.arcade" Version="9.0.0-beta.24102.4">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha>
<SourceBuild RepoName="arcade" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging.Console" Version="9.0.0-alpha.1.23612.13"> <Dependency Name="Microsoft.Extensions.Logging.Console" Version="9.0.0-alpha.1.23612.13">
<Uri>https://github.com/dotnet/runtime</Uri> <Uri>https://github.com/dotnet/runtime</Uri>
<Sha>ab1a8224cdf115b65e0db5dc88d11f205068f444</Sha> <Sha>ab1a8224cdf115b65e0db5dc88d11f205068f444</Sha>
</Dependency> </Dependency>
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24101.2"> <Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="9.0.0-alpha.1.24105.3">
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri> <Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
<Sha>69b60d2af1775f374c91b3e52da02de6b7de1943</Sha> <Sha>ffac2194c39660f03761ba81bdd6026202942184</Sha>
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" /> <SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
</Dependency> </Dependency>
<Dependency Name="Microsoft.DotNet.ScenarioTests.SdkTemplateTests" Version="9.0.0-preview.24057.2"> <Dependency Name="Microsoft.DotNet.ScenarioTests.SdkTemplateTests" Version="9.0.0-preview.24057.2">
<Uri>https://github.com/dotnet/scenario-tests</Uri> <Uri>https://github.com/dotnet/scenario-tests</Uri>
<Sha>bfde902a10d7b672f4fc7e844198ede405dbb9c6</Sha> <Sha>bfde902a10d7b672f4fc7e844198ede405dbb9c6</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.scenario-tests" Version="9.0.0-preview.24057.2">
<Uri>https://github.com/dotnet/scenario-tests</Uri>
<Sha>bfde902a10d7b672f4fc7e844198ede405dbb9c6</Sha>
<SourceBuild RepoName="scenario-tests" ManagedOnly="true" /> <SourceBuild RepoName="scenario-tests" ManagedOnly="true" />
</Dependency> </Dependency>
<!-- Aspire isn't really a toolset dependency. However, it only inserts a baseline manifest in installer, <!-- Aspire isn't really a toolset dependency. However, it only inserts a baseline manifest in installer,
@ -250,6 +302,11 @@
<Dependency Name="Microsoft.NET.Sdk.Aspire.Manifest-9.0.100-preview.1" Version="9.0.0-preview.1.24079.2"> <Dependency Name="Microsoft.NET.Sdk.Aspire.Manifest-9.0.100-preview.1" Version="9.0.0-preview.1.24079.2">
<Uri>https://github.com/dotnet/aspire</Uri> <Uri>https://github.com/dotnet/aspire</Uri>
<Sha>87d5246ddfc1fb9b07fcdf7b4b42830f67427ab9</Sha> <Sha>87d5246ddfc1fb9b07fcdf7b4b42830f67427ab9</Sha>
</Dependency>
<!-- Intermediate is necessary for source build. -->
<Dependency Name="Microsoft.SourceBuild.Intermediate.aspire" Version="9.0.0-preview.1.24079.2">
<Uri>https://github.com/dotnet/aspire</Uri>
<Sha>87d5246ddfc1fb9b07fcdf7b4b42830f67427ab9</Sha>
<SourceBuild RepoName="aspire" ManagedOnly="true" /> <SourceBuild RepoName="aspire" ManagedOnly="true" />
</Dependency> </Dependency>
</ToolsetDependencies> </ToolsetDependencies>

View file

@ -44,7 +44,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<!-- Dependency from https://github.com/dotnet/arcade-services --> <!-- Dependency from https://github.com/dotnet/arcade-services -->
<MicrosoftDotNetDarcLibVersion>1.1.0-beta.24076.2</MicrosoftDotNetDarcLibVersion> <MicrosoftDotNetDarcLibVersion>1.1.0-beta.24080.1</MicrosoftDotNetDarcLibVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<!-- Dependency from https://github.com/dotnet/winforms --> <!-- Dependency from https://github.com/dotnet/winforms -->

View file

@ -1,11 +1,39 @@
### This job source-builds https://github.com/dotnet/dotnet with given parameters ### This job builds https://github.com/dotnet/dotnet with given parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested ### If run in a PR, new changes are applied to a local copy of the VMR, then it is built and tested
parameters: parameters:
- name: architecture
type: string
- name: artifactsRid
type: string
default: ''
- name: buildName
type: string
- name: container
type: string
- name: crossRootFs
type: string
default: ''
- name: isBuiltFromVmr - name: isBuiltFromVmr
displayName: True when build is running from dotnet/dotnet directly displayName: True when build is running from dotnet/dotnet directly
type: boolean type: boolean
- name: pool
type: object
- name: targetOS
type: string
default: ''
- name: targetArchitecture
type: string
default: ''
- name: vmrPath - name: vmrPath
type: string type: string
default: $(Agent.BuildDirectory)/vmr default: $(Agent.BuildDirectory)/vmr
@ -15,25 +43,25 @@ parameters:
type: string type: string
default: $(Build.SourceBranch) default: $(Build.SourceBranch)
- name: buildName #### SOURCE-ONLY parameters ####
type: string
- name: architecture # Instead of building the VMR directly, exports the sources into a tarball and builds from that
type: string - name: buildFromArchive
- name: artifactsRid
type: string
default: ''
- name: container
type: string
- name: pool
type: object
# Allow downloading artifacts from the internet during the build
- name: runOnline
type: boolean type: boolean
default: false
# Enable for source-building the VMR
- name: buildSourceOnly
type: boolean
default: false
- name: enablePoison
type: boolean
default: false
- name: excludeOmniSharpTests
type: boolean
default: false
# Name of a previous job (from the same template as this) whose output will be used to build this job # Name of a previous job (from the same template as this) whose output will be used to build this job
# The SDK from its artifacts is copied to vmr/.dotnet # The SDK from its artifacts is copied to vmr/.dotnet
@ -41,18 +69,12 @@ parameters:
type: string type: string
default: '' default: ''
- name: excludeOmniSharpTests # Allow downloading artifacts from the internet during the build
- name: runOnline
type: boolean type: boolean
default: true
- name: enablePoison - name: runTests
type: boolean
# Instead of building the VMR directly, exports the sources into a tarball and builds from that
- name: buildFromArchive
type: boolean
# Use the previous version's SDK to build the current one
- name: withPreviousSDK
type: boolean type: boolean
default: false default: false
@ -61,22 +83,11 @@ parameters:
type: boolean type: boolean
default: false default: false
- name: crossRootFS # Use the previous version's SDK to build the current one
type: string - name: withPreviousSDK
default: ''
- name: runTests
type: boolean type: boolean
default: false default: false
- name: targetOS
type: string
default: ''
- name: targetArchitecture
type: string
default: ''
jobs: jobs:
- job: ${{ parameters.buildName }}_${{ parameters.architecture }} - job: ${{ parameters.buildName }}_${{ parameters.architecture }}
timeoutInMinutes: 150 timeoutInMinutes: 150
@ -133,7 +144,7 @@ jobs:
displayName: Export VMR sources displayName: Export VMR sources
workingDirectory: $(Build.StagingDirectory) workingDirectory: $(Build.StagingDirectory)
- ${{ if ne(variables['System.TeamProject'], 'public') }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), eq(parameters.runTests, 'True')) }}:
- script: cp "$(sourcesPath)/src/installer/NuGet.config" "$(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config" - script: cp "$(sourcesPath)/src/installer/NuGet.config" "$(sourcesPath)/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/online.NuGet.Config"
displayName: Copy Test NuGet Config displayName: Copy Test NuGet Config
@ -189,6 +200,13 @@ jobs:
fi fi
displayName: Setup Previously Source-Built SDK displayName: Setup Previously Source-Built SDK
- ${{ if eq(parameters.targetOS, 'windows') }}:
- script: |
call $(sourcesPath)\build.cmd -ci -cleanWhileBuilding -prepareMachine
displayName: Build
- ${{ else }}:
- ${{ if eq(parameters.buildSourceOnly, 'true') }}:
- script: | - script: |
set -x set -x
@ -218,22 +236,15 @@ jobs:
echo "##vso[task.setvariable variable=additionalBuildArgs]--with-sdk /vmr/.dotnet" echo "##vso[task.setvariable variable=additionalBuildArgs]--with-sdk /vmr/.dotnet"
fi fi
# Only use Docker stuff on Linux
if [[ -n "${{ parameters.container }}" ]]; then
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh $customPrepArgs
else
cd $(sourcesPath)
./prep.sh $customPrepArgs
fi
displayName: Prep the Build displayName: Prep the Build
- script: | - script: |
set -x set -x
df -h df -h
# Allows Arcade to have access to the commit for the build customEnvVars=""
customEnvVars="BUILD_SOURCEVERSION=$BUILD_SOURCEVERSION" customBuildArgs="--ci --clean-while-building --prepareMachine"
customBuildArgs="--ci --prepareMachine"
if [[ '${{ parameters.runOnline }}' == 'True' ]]; then if [[ '${{ parameters.runOnline }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --online" customBuildArgs="$customBuildArgs --online"
fi fi
@ -247,20 +258,16 @@ jobs:
customBuildArgs="$customBuildArgs --source-version $(git -C "${{ parameters.vmrPath }}" rev-parse HEAD)" customBuildArgs="$customBuildArgs --source-version $(git -C "${{ parameters.vmrPath }}" rev-parse HEAD)"
fi fi
if [[ '${{ parameters.buildSourceOnly }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --source-only"
fi
if [[ '${{ parameters.useMonoRuntime }}' == 'True' ]]; then if [[ '${{ parameters.useMonoRuntime }}' == 'True' ]]; then
customBuildArgs="$customBuildArgs --use-mono-runtime" customBuildArgs="$customBuildArgs --use-mono-runtime"
fi fi
if [[ -n "${{ parameters.container }}" ]]; then if [[ -n "${{ parameters.crossRootFs }}" ]]; then
useDocker=true customEnvVars="$customEnvVars ROOTFS_DIR=${{ parameters.crossRootFs}} CROSSCOMPILE=1"
fi
if [[ '${{ parameters.useMonoRuntime }}' == 'True' ]]; then
customEnvVars="$customEnvVars CROSSCOMPILE=1"
fi
if [[ ! -z '${{ parameters.crossRootFs }}' ]]; then
customEnvVars="$customEnvVars ROOTFS_DIR=${{ parameters.crossRootFs}}"
fi fi
if [[ ! -z '${{ parameters.targetOS }}' ]]; then if [[ ! -z '${{ parameters.targetOS }}' ]]; then
@ -271,8 +278,13 @@ jobs:
extraBuildProperties="$extraBuildProperties /p:TargetArchitecture=${{ parameters.targetArchitecture }}" extraBuildProperties="$extraBuildProperties /p:TargetArchitecture=${{ parameters.targetArchitecture }}"
fi fi
# Only use Docker stuff on Linux buildArgs="$(additionalBuildArgs) $customBuildArgs $extraBuildProperties"
if [[ "$useDocker" == "true" ]]; then
# Only use Docker when a container is specified
if [[ -n "${{ parameters.container }}" ]]; then
# Allows Arcade to have access to the commit for the build, pass it through to the container
customEnvVars="$customEnvVars BUILD_SOURCEVERSION=$BUILD_SOURCEVERSION"
customDockerRunArgs="" customDockerRunArgs=""
for envVar in $customEnvVars; do for envVar in $customEnvVars; do
customDockerRunArgs="$customDockerRunArgs -e $envVar" customDockerRunArgs="$customDockerRunArgs -e $envVar"
@ -282,18 +294,18 @@ jobs:
customDockerRunArgs="$customDockerRunArgs --network none" customDockerRunArgs="$customDockerRunArgs --network none"
fi fi
docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customDockerRunArgs ${{ parameters.container }} ./build.sh --source-only --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties docker run --rm -v "$(sourcesPath):/vmr" -w /vmr $customDockerRunArgs ${{ parameters.container }} ./build.sh $buildArgs
else else
for envVar in $customEnvVars; do for envVar in $customEnvVars; do
customEnvVarsWithBashSyntax="$customEnvVarsWithBashSyntax export $envVar;" customEnvVarsWithBashSyntax="$customEnvVarsWithBashSyntax export $envVar;"
done done
cd $(sourcesPath) cd $(sourcesPath)
eval $customEnvVarsWithBashSyntax eval $customEnvVarsWithBashSyntax
./build.sh --source-only --clean-while-building $(additionalBuildArgs) $customBuildArgs $extraBuildProperties ./build.sh $buildArgs
fi fi
displayName: Build displayName: Build
# Don't run tests if overriding RID, we don't support that for now # Only run tests if enabled
- ${{ if eq(parameters.runTests, 'True') }}: - ${{ if eq(parameters.runTests, 'True') }}:
- script: | - script: |
set -x set -x
@ -309,6 +321,37 @@ jobs:
docker run --rm $dockerVolumeArgs -w /vmr $dockerEnvArgs ${{ parameters.container }} ./build.sh --source-only $poisonArg --test $(additionalBuildArgs) /p:SmokeTestConsoleVerbosity=detailed docker run --rm $dockerVolumeArgs -w /vmr $dockerEnvArgs ${{ parameters.container }} ./build.sh --source-only $poisonArg --test $(additionalBuildArgs) /p:SmokeTestConsoleVerbosity=detailed
displayName: Run Tests displayName: Run Tests
- ${{ if eq(parameters.targetOS, 'windows') }}:
# Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph.
- powershell: |
function CopyWithRelativeFolders($sourcePath, $targetFolder, $filter) {
Get-ChildItem -Path $sourcePath -Filter $filter -Recurse | ForEach-Object {
$targetPath = Join-Path $targetFolder (Resolve-Path -Relative $_.FullName)
New-Item -ItemType Directory -Path (Split-Path -Parent $targetPath) -Force | Out-Null
Copy-Item $_.FullName -Destination $targetPath -Force
}
}
$targetFolder = "$(Build.StagingDirectory)/BuildLogs/"
New-Item -ItemType Directory -Path $targetFolder -Force | Out-Null
cd "$(sourcesPath)"
CopyWithRelativeFolders "artifacts/" $targetFolder "*.binlog"
CopyWithRelativeFolders "artifacts/" $targetFolder "*.log"
CopyWithRelativeFolders "artifacts/prebuilt-report/" $targetFolder
CopyWithRelativeFolders "src/" $targetFolder "*.binlog"
CopyWithRelativeFolders "src/" $targetFolder "*.log"
CopyWithRelativeFolders "test/" $targetFolder "*.binlog"
CopyWithRelativeFolders "test/" $targetFolder "Updated*.diff"
CopyWithRelativeFolders "test/" $targetFolder "Updated*.txt"
displayName: Prepare BuildLogs staging directory
continueOnError: true
condition: succeededOrFailed()
- ${{ else }}:
# Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph. # Don't use CopyFiles@2 as it encounters permissions issues because it indexes all files in the source directory graph.
- script: | - script: |
set -x set -x
@ -317,14 +360,14 @@ jobs:
mkdir -p ${targetFolder} mkdir -p ${targetFolder}
cd "$(sourcesPath)" cd "$(sourcesPath)"
find artifacts/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; find artifacts/ -type f -name "*.binlog" -exec rsync -R {} -t ${targetFolder} \;
find artifacts/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \; find artifacts/ -type f -name "*.log" -exec rsync -R {} -t ${targetFolder} \;
find artifacts/prebuilt-report/ -exec cp {} --parents -t ${targetFolder} \; find artifacts/prebuilt-report/ -exec rsync -R {} -t ${targetFolder} \;
find src/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; find src/ -type f -name "*.binlog" -exec rsync -R {} -t ${targetFolder} \;
find src/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \; find src/ -type f -name "*.log" -exec rsync -R {} -t ${targetFolder} \;
find test/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; find test/ -type f -name "*.binlog" -exec rsync -R {} -t ${targetFolder} \;
find test/ -type f -name "Updated*.diff" -exec cp {} --parents -t ${targetFolder} \; find test/ -type f -name "Updated*.diff" -exec rsync -R {} -t ${targetFolder} \;
find test/ -type f -name "Updated*.txt" -exec cp {} --parents -t ${targetFolder} \; find test/ -type f -name "Updated*.txt" -exec rsync -R {} -t ${targetFolder} \;
displayName: Prepare BuildLogs staging directory displayName: Prepare BuildLogs staging directory
continueOnError: true continueOnError: true
condition: succeededOrFailed() condition: succeededOrFailed()
@ -335,6 +378,8 @@ jobs:
continueOnError: true continueOnError: true
condition: succeededOrFailed() condition: succeededOrFailed()
# Only upload test results if enabled
- ${{ if eq(parameters.runTests, 'True') }}:
- task: PublishTestResults@2 - task: PublishTestResults@2
displayName: Publish Test Results displayName: Publish Test Results
condition: succeededOrFailed() condition: succeededOrFailed()

View file

@ -1,75 +1,45 @@
### This stage source-builds https://github.com/dotnet/dotnet with varying parameters ### This stage builds https://github.com/dotnet/dotnet with varying parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested ### If run in a PR, new changes are applied to a local copy of the VMR, then it is built and tested
parameters: parameters:
dependsOn: [] # Branch of the VMR to use (to push to for internal builds)
condition: always() - name: vmrBranch
type: string
default: $(Build.SourceBranch)
# Branch of the VMR to use (to push to for internal builds) # Scope of jobs which are executed
vmrBranch: $(Build.SourceBranch) - name: scope
type: string
values:
# run 1 leg for smoke tests
- ultralite
# run several legs e.g. win/linux/mac for basic testing
- lite
# run everything
- full
# True when the build is a lite build # True when build is running from dotnet/dotnet directly
isLiteBuild: - name: isBuiltFromVmr
type: boolean
default: false
# True when build is running from dotnet/dotnet directly # True when building the VMR in source-only mode
isBuiltFromVmr: - name: isSourceOnlyBuild
type: boolean
# The following parameters aren't expected to be passed in rather they are used for encapsulation default: false
# -----------------------------------------------------------------------------------------------
alpine319Container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
centOSStream8Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
centOSStream9Container: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
fedora39Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-39
ubuntu2204Container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04
ubuntu2204ArmContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-arm64
# Internal builds
poolInternalAmd64:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalAmd64PR:
name: NetCore1ESPool-Internal-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalArm64:
name: Docker-Linux-Arm-Internal
# Public builds / PRs
poolPublicAmd64:
name: NetCore-Public-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
#### SOURCE-ONLY BUILD ####
stages: stages:
- stage: VMR_Source_Build - ${{ if parameters.isSourceOnlyBuild }}:
displayName: VMR Source-Build - stage: VMR_SourceOnly_Build
dependsOn: ${{ parameters.dependsOn }} displayName: VMR Source-Only Build
condition: ${{ parameters.condition }}
variables: variables:
- ${{ if eq(variables['System.TeamProject'], 'public') }}: - template: ../variables/vmr-stage.yml
- name: defaultPoolName parameters:
value: ${{ parameters.poolPublicAmd64.name }} vmrBranch: ${{ parameters.vmrBranch }}
- name: defaultPoolDemands
value: ${{ parameters.poolPublicAmd64.demands }}
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64PR.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64PR.demands }}
- ${{ else }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64.demands }}
- ${{ if ne(parameters.vmrBranch, '') }}:
- name: VmrBranch
value: ${{ parameters.vmrBranch }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
jobs: jobs:
### Jobs for ultralite builds ###
- template: ../jobs/vmr-build.yml - template: ../jobs/vmr-build.yml
parameters: parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline # Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
@ -79,9 +49,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream8Container }} container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: true # ✅ runOnline: true # ✅
@ -89,7 +60,8 @@ stages:
useMonoRuntime: false # 🚫 useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫 withPreviousSDK: false # 🚫
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: ### Additional jobs for lite/full builds ###
- ${{ if in(parameters.scope, 'lite', 'full') }}:
- template: ../jobs/vmr-build.yml - template: ../jobs/vmr-build.yml
parameters: parameters:
@ -100,9 +72,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream8Container }} container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: true # ✅ runOnline: true # ✅
@ -121,9 +94,10 @@ stages:
artifactsRid: alpine.3.19-x64 artifactsRid: alpine.3.19-x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.alpine319Container }} container: ${{ variables.alpine319Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: true # ✅ enablePoison: true # ✅
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: false # 🚫 runOnline: false # 🚫
@ -131,7 +105,8 @@ stages:
useMonoRuntime: false # 🚫 useMonoRuntime: false # 🚫
withPreviousSDK: true # ✅ withPreviousSDK: true # ✅
- ${{ if eq(parameters.isLiteBuild, false) }}: ### Additional jobs for full build ###
- ${{ if in(parameters.scope, 'full') }}:
- template: ../jobs/vmr-build.yml - template: ../jobs/vmr-build.yml
parameters: parameters:
@ -142,9 +117,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.alpine319Container }} container: ${{ variables.alpine319Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: true # ✅ runOnline: true # ✅
@ -161,9 +137,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream8Container }} container: ${{ variables.centOSStream8Container }}
buildFromArchive: true # ✅ buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: false # 🚫 runOnline: false # 🚫
@ -181,9 +158,10 @@ stages:
artifactsRid: centos.8-x64 artifactsRid: centos.8-x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream8Container }} container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: true # ✅ runOnline: true # ✅
@ -201,9 +179,10 @@ stages:
artifactsRid: centos.8-x64 artifactsRid: centos.8-x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream8Container }} container: ${{ variables.centOSStream8Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: false # 🚫 runOnline: false # 🚫
@ -220,9 +199,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream8Container }} container: ${{ variables.centOSStream8Container }}
buildFromArchive: true # ✅ buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅ excludeOmniSharpTests: true # ✅
runOnline: false # 🚫 runOnline: false # 🚫
@ -239,9 +219,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.centOSStream9Container }} container: ${{ variables.centOSStream9Container }}
buildFromArchive: true # ✅ buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫 excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫 runOnline: false # 🚫
@ -258,9 +239,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.fedora39Container }} container: ${{ variables.fedora39Container }}
buildFromArchive: true # ✅ buildFromArchive: true # ✅
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫 excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫 runOnline: false # 🚫
@ -277,9 +259,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.ubuntu2204Container }} container: ${{ variables.ubuntu2204Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫 excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫 runOnline: false # 🚫
@ -294,9 +277,10 @@ stages:
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }} vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64 architecture: arm64
pool: ${{ parameters.poolInternalArm64 }} pool: ${{ variables.defaultPoolNameLinuxArm64 }}
container: ${{ parameters.ubuntu2204ArmContainer }} container: ${{ variables.ubuntu2204ArmContainer }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫 excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫 runOnline: false # 🚫
@ -313,9 +297,10 @@ stages:
architecture: x64 architecture: x64
pool: pool:
name: ${{ variables.defaultPoolName }} name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }} demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ parameters.fedora39Container }} container: ${{ variables.fedora39Container }}
buildFromArchive: false # 🚫 buildFromArchive: false # 🚫
buildSourceOnly: true # ✅
enablePoison: false # 🚫 enablePoison: false # 🚫
excludeOmniSharpTests: false # 🚫 excludeOmniSharpTests: false # 🚫
runOnline: false # 🚫 runOnline: false # 🚫
@ -323,3 +308,96 @@ stages:
useMonoRuntime: false # 🚫 useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫 withPreviousSDK: false # 🚫
reuseBuildArtifactsFrom: Fedora39_Offline_MsftSdk reuseBuildArtifactsFrom: Fedora39_Offline_MsftSdk
#### VERTICAL BUILD ####
- ${{ if not(parameters.isSourceOnlyBuild) }}:
- stage: VMR_Vertical_Build
displayName: VMR Vertical Build
variables:
- template: ../variables/vmr-stage.yml
parameters:
vmrBranch: ${{ parameters.vmrBranch }}
jobs:
- template: ../jobs/vmr-build.yml
parameters:
buildName: Ubuntu2204
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsLinux }}
container: ${{ variables.ubuntu2204Container }}
targetOS: linux
targetArchitecture: x64
- template: ../jobs/vmr-build.yml
parameters:
buildName: Windows
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemandsWindows }}
container: ''
targetOS: windows
targetArchitecture: x64
### Additional jobs for full build ###
- ${{ if in(parameters.scope, 'full') }}:
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ variables.defaultPoolNameMac }}
container: ''
targetOS: osx
targetArchitecture: x64
# Cross builds are currently failing
# - template: ../jobs/vmr-build.yml
# parameters:
# buildName: MarinerCross
# isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
# vmrBranch: ${{ variables.VmrBranch }}
# architecture: x64
# pool:
# name: ${{ variables.defaultPoolName }}
# demands: ${{ variables.defaultPoolDemandsLinux }}
# container: ${{ variables.marinerX64CrossContainer }}
# crossRootFs: '/crossrootfs/x64'
# targetOS: linux
# targetArchitecture: x64
# - template: ../jobs/vmr-build.yml
# parameters:
# buildName: MarinerCross
# isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
# vmrBranch: ${{ variables.VmrBranch }}
# architecture: arm64
# pool:
# name: ${{ variables.defaultPoolName }}
# demands: ${{ variables.defaultPoolDemandsLinux }}
# container: ${{ variables.marinerArm64CrossContainer }}
# crossRootFs: '/crossrootfs/arm64'
# targetOS: linux
# targetArchitecture: arm64
# - template: ../jobs/vmr-build.yml
# parameters:
# buildName: OSXCross
# isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
# vmrBranch: ${{ variables.VmrBranch }}
# architecture: arm64
# pool:
# vmImage: ${{ variables.defaultPoolNameMac }}
# container: ''
# targetOS: osx
# targetArchitecture: arm64

View file

@ -1,177 +0,0 @@
### This stage source-builds https://github.com/dotnet/dotnet with varying parameters
### If run in a PR, new changes are applied to a local copy of the VMR, then it is source-built and tested
parameters:
dependsOn: []
condition: always()
# Branch of the VMR to use (to push to for internal builds)
vmrBranch: $(Build.SourceBranch)
# True when the build is a lite build
isLiteBuild:
# True when build is running from dotnet/dotnet directly
isBuiltFromVmr:
# The following parameters aren't expected to be passed in rather they are used for encapsulation
# -----------------------------------------------------------------------------------------------
marinerX64CrossContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-amd64
marinerArm64CrossContainer: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm64
# Internal builds
poolInternalAmd64:
name: NetCore1ESPool-Svc-Internal
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalAmd64PR:
name: NetCore1ESPool-Internal-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
poolInternalArm64:
name: Docker-Linux-Arm-Internal
# Public builds / PRs
poolPublicAmd64:
name: NetCore-Public-XL
demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
# Mac
poolMac:
vmImage: 'macos-12'
stages:
- stage: VMR_PoC_Build
displayName: VMR PoC-Build
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
variables:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- name: defaultPoolName
value: ${{ parameters.poolPublicAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolPublicAmd64.demands }}
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64PR.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64PR.demands }}
- ${{ else }}:
- name: defaultPoolName
value: ${{ parameters.poolInternalAmd64.name }}
- name: defaultPoolDemands
value: ${{ parameters.poolInternalAmd64.demands }}
- ${{ if ne(parameters.vmrBranch, '') }}:
- name: VmrBranch
value: ${{ parameters.vmrBranch }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
jobs:
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: MarinerCrossX64_Online_MsftSdk
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.marinerx64CrossContainer }}
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
crossRootFs: '/crossrootfs/x64' # 📝
runTests: false # 🚫
targetOS: 'linux' # 📝
targetArchitecture: 'x64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: MarinerCrossArm64_Online_MsftSdk_Mono
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.marinerArm64CrossContainer }}
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
crossRootFs: '/crossrootfs/arm64' # 📝
runTests: false # 🚫
targetOS: 'linux' # 📝
targetArchitecture: 'arm64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: OSXCrossX64_Online_MsftSdk
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: x64
pool:
vmImage: ${{ parameters.poolMac.vmImage }}
container: ''
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
runTests: false # 🚫
targetOS: 'osx' # 📝
targetArchitecture: 'x64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: OSXCrossArm64_Online_MsftSdk
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
vmImage: ${{ parameters.poolMac.vmImage }}
container: ''
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: true # ✅
withPreviousSDK: false # 🚫
runTests: false # 🚫
targetOS: 'osx' # 📝
targetArchitecture: 'arm64' # 📝
- template: ../jobs/vmr-build.yml
parameters:
# Changing the build name requires updating the referenced name in the source-build-sdk-diff-tests.yml pipeline
buildName: MarinerCrossArm64_Online_MsftSdk_CoreCLR
isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
vmrBranch: ${{ variables.VmrBranch }}
architecture: arm64
pool:
name: ${{ variables.defaultPoolName }}
demands: ${{ variables.defaultPoolDemands }}
container: ${{ parameters.marinerArm64CrossContainer }}
buildFromArchive: false # 🚫
enablePoison: false # 🚫
excludeOmniSharpTests: true # ✅
runOnline: true # ✅
useMonoRuntime: false # 🚫
withPreviousSDK: false # 🚫
crossRootFs: '/crossrootfs/arm64' # 📝
runTests: false # 🚫
targetOS: 'linux' # 📝
targetArchitecture: 'arm64' # 📝

View file

@ -33,10 +33,19 @@ steps:
- script: | - script: |
git checkout -B ${{ parameters.vmrBranch }} git checkout -B ${{ parameters.vmrBranch }}
echo "##vso[task.setvariable variable=vmrBranch]${{ parameters.vmrBranch }}" echo "##vso[task.setvariable variable=vmrBranch]${{ parameters.vmrBranch }}"
mkdir -p ${{ parameters.vmrPath }}/artifacts/x64/Release
displayName: Prepare branch ${{ parameters.vmrBranch }} displayName: Prepare branch ${{ parameters.vmrBranch }}
workingDirectory: ${{ parameters.vmrPath }} workingDirectory: ${{ parameters.vmrPath }}
- script: |
mkdir -p ${{ parameters.vmrPath }}/artifacts/x64/Release
displayName: Create artifacts folder (Unix)
condition: ne(variables['Agent.OS'], 'Windows_NT')
- powershell: |
New-Item -ItemType Directory -Path ${{ parameters.vmrPath }}/artifacts/x64/Release
displayName: Create artifacts folder (Windows)
condition: eq(variables['Agent.OS'], 'Windows_NT')
- script: | - script: |
git config --global user.name "dotnet-maestro[bot]" git config --global user.name "dotnet-maestro[bot]"
git config --global user.email "dotnet-maestro[bot]@users.noreply.github.com" git config --global user.email "dotnet-maestro[bot]@users.noreply.github.com"
@ -57,13 +66,36 @@ steps:
--branch ${{ parameters.vmrBranch }} --branch ${{ parameters.vmrBranch }}
--repository "installer:${{ parameters.targetRef }}" --repository "installer:${{ parameters.targetRef }}"
--recursive --recursive
--remote "installer:$(pwd)" --remote "installer:$(Agent.BuildDirectory)/installer"
--component-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/Component.template.md --component-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/Component.template.md
--tpn-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt --tpn-template $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt
--debug --debug
|| ||
(echo "##vso[task.logissue type=error]Failed to synchronize the VMR" && exit 1) (echo "##vso[task.logissue type=error]Failed to synchronize the VMR" && exit 1)
displayName: Synchronize dotnet/dotnet displayName: Synchronize dotnet/dotnet (Unix)
condition: ne(variables['Agent.OS'], 'Windows_NT')
workingDirectory: $(Agent.BuildDirectory)/installer
- powershell: >
./eng/vmr-sync.ps1 `
-vmr ${{ parameters.vmrPath }} `
-tmp $(Agent.TempDirectory) `
-azdevPat '$(dn-bot-all-orgs-code-r)' `
-branch ${{ parameters.vmrBranch }} `
-repository "installer:${{ parameters.targetRef }}" `
-recursive `
# passing remote fails for some reason, but it is the default anyway
# -remote "installer:$(Agent.BuildDirectory)/installer"
-componentTemplate $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/Component.template.md `
-tpnTemplate $(Agent.BuildDirectory)/installer/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt `
-debugOutput
if ($LASTEXITCODE -ne 0) {
echo "##vso[task.logissue type=error]Failed to synchronize the VMR"
exit 1
}
displayName: Synchronize dotnet/dotnet (Windows)
condition: eq(variables['Agent.OS'], 'Windows_NT')
workingDirectory: $(Agent.BuildDirectory)/installer workingDirectory: $(Agent.BuildDirectory)/installer
- publish: $(Agent.TempDirectory) - publish: $(Agent.TempDirectory)

View file

@ -0,0 +1,53 @@
parameters:
- name: vmrBranch
type: string
variables:
- ${{ if ne(parameters.vmrBranch, '') }}:
- name: VmrBranch
value: ${{ parameters.vmrBranch }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
- name: alpine319Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode
- name: centOSStream8Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
- name: centOSStream9Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9
- name: fedora39Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-39
- name: ubuntu2204Container
value: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04
- name: ubuntu2204ArmContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-arm64
- name: marinerX64CrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-amd64
- name: marinerArm64CrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm64
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- name: defaultPoolName
value: NetCore-Public-XL
- name: defaultPoolDemandsLinux
value: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
- name: defaultPoolDemandsWindows
value: ImageOverride -equals windows.vs2022.amd64.open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- ${{ if in(variables['Build.Reason'], 'PullRequest') }}:
- name: defaultPoolName
value: NetCore1ESPool-Internal-XL
- ${{ else }}:
- name: defaultPoolName
value: NetCore1ESPool-Svc-Internal
- name: defaultPoolDemandsLinux
value: ImageOverride -equals Build.Ubuntu.1804.Amd64
- name: defaultPoolDemandsWindows
value: ImageOverride -equals windows.vs2022.amd64
- name: defaultPoolNameLinuxArm64
value: Docker-Linux-Arm-Internal
- name: defaultPoolNameMac
value: macos-12

View file

@ -1,53 +0,0 @@
trigger: none
pr:
branches:
include:
- main
- release/*
- internal/release/*
parameters:
- name: vmrBranch
displayName: dotnet/dotnet branch to use
type: string
default: ' '
- name: disableVmrBuild
displayName: Skip source-building the VMR
type: boolean
default: false
variables:
- ${{ if ne(parameters.vmrBranch, ' ') }}:
- name: VmrBranch
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
resources:
repositories:
- repository: vmr
type: git
name: dotnet-dotnet
ref: ${{ variables.VmrBranch }}
stages:
# You can temporarily disable the VMR Build stage by changing the default of disableVmrBuild
- ${{ if not(parameters.disableVmrBuild) }}:
- template: templates/stages/vmr-build.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
isBuiltFromVmr: false
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
# that the PR can be merged and later synchronized into the VMR without problems.
- ${{ else }}:
- stage: Synchronize_VMR
displayName: Synchronize VMR
dependsOn: []
jobs:
- template: templates/jobs/vmr-synchronization.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
noPush: true

View file

@ -1,3 +1,10 @@
# This yml is used by these pipelines and triggers:
#
# - installer-source-build (public)
# - PR: release/* and main, ultralite build
# - installer-unified-build (public)
# - PR: release/* and main, lite build
trigger: none trigger: none
pr: pr:
branches: branches:
@ -15,8 +22,8 @@ parameters:
type: string type: string
default: ' ' default: ' '
- name: disableVmrBuild - name: disableBuild
displayName: Skip source-building the VMR displayName: Skip the VMR Build stage
type: boolean type: boolean
default: false default: false
@ -28,6 +35,10 @@ variables:
- name: VmrBranch - name: VmrBranch
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }} value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
# enable source-only build for pipelines with the -source-build suffix
- name: isSourceOnlyBuild
value: ${{ contains(variables['Build.DefinitionName'], '-source-build') }}
resources: resources:
repositories: repositories:
- repository: vmr - repository: vmr
@ -37,12 +48,17 @@ resources:
ref: ${{ variables.VmrBranch }} ref: ${{ variables.VmrBranch }}
stages: stages:
# You can temporarily disable the VMR Build stage by setting the disableVmrBuild variable # You can temporarily disable the VMR Build stage by setting the disableBuild variable
- ${{ if not(parameters.disableVmrBuild) }}: - ${{ if not(parameters.disableBuild) }}:
- template: templates/stages/vmr-build.yml - template: templates/stages/vmr-build.yml
parameters: parameters:
vmrBranch: ${{ variables.VmrBranch }} vmrBranch: ${{ variables.VmrBranch }}
isBuiltFromVmr: false isBuiltFromVmr: false
isSourceOnlyBuild: ${{ variables.isSourceOnlyBuild }}
${{ if eq(variables.isSourceOnlyBuild, 'true') }}:
scope: ultralite
${{ else }}:
scope: lite
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate # In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
# that the PR can be merged and later synchronized into the VMR without problems. # that the PR can be merged and later synchronized into the VMR without problems.

View file

@ -1,52 +0,0 @@
trigger: none
pr:
branches:
include:
- main
parameters:
- name: vmrBranch
displayName: dotnet/dotnet branch to push to
type: string
default: ' '
- name: disableVmrBuild
displayName: Skip source-building the VMR
type: boolean
default: false
variables:
- ${{ if ne(parameters.vmrBranch, ' ') }}:
- name: VmrBranch
value: ${{ replace(parameters.vmrBranch, ' ', '') }}
- ${{ else }}:
- name: VmrBranch
value: ${{ replace(replace(variables['System.PullRequest.TargetBranch'], 'refs/heads/', ''), 'refs/pull/', '') }}
resources:
repositories:
- repository: vmr
type: github
name: dotnet/dotnet
endpoint: dotnet
ref: ${{ variables.VmrBranch }}
stages:
- ${{ if not(parameters.disableVmrBuild) }}:
- template: templates/stages/vmr-cross-build.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
isBuiltFromVmr: false
isLiteBuild: true
# In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate
# that the PR can be merged and later synchronized into the VMR without problems.
- ${{ else }}:
- stage: Synchronize_VMR
displayName: Synchronize VMR
dependsOn: []
jobs:
- template: templates/jobs/vmr-synchronization.yml
parameters:
vmrBranch: ${{ variables.VmrBranch }}
noPush: true

216
eng/vmr-sync.ps1 Normal file
View file

@ -0,0 +1,216 @@
<#
.SYNOPSIS
This script is used for synchronizing the dotnet/dotnet VMR locally. This means pulling new
code from various repositories into the 'dotnet/dotnet' repository.
.DESCRIPTION
The script is used during CI to ingest new code based on dotnet/installer but it can also help
for reproducing potential failures during installer's PRs, namely to fix the Source-Build.
Another usecase is to try manually synchronizing a given commit of some repo into the VMR and
trying to Source-Build the VMR. This can help when fixing the Source-Build but using a commit
from a not-yet merged branch (or fork) to test the fix will help.
The tooling that synchronizes the VMR will need to clone the various repositories into a temporary
folder. These clones can be re-used in future synchronizations so it is advised you dedicate a
folder to this to speed up your re-runs.
.EXAMPLE
Synchronize current installer and all dependencies into a local VMR:
./vmr-sync.ps1 -vmrDir "$HOME/repos/dotnet" -tmpDir "$HOME/repos/tmp"
Synchronize the VMR to a specific commit of dotnet/runtime using custom fork:
./vmr-sync.ps1 `
-repository runtime:e7e71da303af8dc97df99b098f21f526398c3943 `
-remote runtime:https://github.com/yourfork/runtime `
-tmpDir "$HOME/repos/tmp"
.PARAMETER tmpDir
Required. Path to the temporary folder where repositories will be cloned
.PARAMETER vmrBranch
Optional. Branch of the 'dotnet/dotnet' repo to synchronize. The VMR will be checked out to this branch
.PARAMETER component-template
Optional. Template for VMRs Component.md used for regenerating the file to list the newest versions of
components.
Defaults to src/VirtualMonoRepo/Component.template.md
.PARAMETER recursive
Optional. Recursively synchronize all the source build dependencies (declared in Version.Details.xml)
This is used when performing the full synchronization during installer's CI and the final VMR sync.
Defaults to false unless no repository is supplied in which case a recursive sync of installer is performed.
.PARAMETER remote
Optional. Additional remote to use during the synchronization
This can be used to synchronize to a commit from a fork of the repository
Example: 'runtime:https://github.com/yourfork/runtime'
.PARAMETER repository
Optional. Repository + git ref separated by colon to synchronize to.
This can be a specific commit, branch, tag.
If not supplied, the revision of the parent installer repository of this script will be used (recursively).
Example: 'runtime:my-branch-name'
.PARAMETER tpnTemplate
Optional. Template for the header of VMRs THIRD-PARTY-NOTICES file.
Defaults to src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt
.PARAMETER azdevPat
Optional. Azure DevOps PAT to use for cloning private repositories.
.PARAMETER vmrDir
Optional. Path to the dotnet/dotnet repository. When null, gets cloned to the temporary folder
.PARAMETER debugOutput
Optional. Enables debug logging in the darc vmr command.
#>
param (
[Parameter(Mandatory=$true, HelpMessage="Path to the temporary folder where repositories will be cloned")]
[string][Alias('t', 'tmp')]$tmpDir,
[string][Alias('b', 'branch')]$vmrBranch,
[string]$componentTemplate = "src/VirtualMonoRepo/Component.template.md",
[switch]$recursive,
[string]$remote,
[string][Alias('r')]$repository,
[string]$tpnTemplate = "src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt",
[string]$azdevPat,
[string][Alias('v', 'vmr')]$vmrDir,
[switch]$debugOutput
)
$scriptRoot = $PSScriptRoot
function Fail {
Write-Host "> $($args[0])" -ForegroundColor 'Red'
}
function Highlight {
Write-Host "> $($args[0])" -ForegroundColor 'Cyan'
}
$installerDir = (Split-Path -Parent $scriptRoot)
# If installer is a repo, we're in an installer and not in the dotnet/dotnet repo
if (Test-Path -Path "$installerDir/.git" -PathType Container) {
$additionalRemotes = "installer:$installerDir"
}
if ($remote) {
$additionalRemotes = "$additionalRemotes $remote"
}
$verbosity = 'verbose'
if ($debugOutput) {
$verbosity = 'debug'
}
# Validation
if (-not (Test-Path -Path $installerDir -PathType Container)) {
Fail "Directory '$installerDir' does not exist. Please specify the path to the dotnet/installer repo"
exit 1
}
if (-not $tmpDir) {
Fail "Missing -tmpDir argument. Please specify the path to the temporary folder where the repositories will be cloned"
exit 1
}
if (-not (Test-Path -Path $componentTemplate -PathType Leaf)) {
Fail "File '$componentTemplate' does not exist. Please specify a valid path to the component template"
exit 1
}
if (-not (Test-Path -Path $tpnTemplate -PathType Leaf)) {
Fail "File '$tpnTemplate' does not exist. Please specify a valid path to the THIRD-PARTY-NOTICES template"
exit 1
}
# Sanitize the input
# Default when no repository is provided
if (-not $repository) {
$repository = "installer:$(git -C $installerDir rev-parse HEAD)"
$recursive = $true
}
if (-not $vmrDir) {
$vmrDir = Join-Path $tmpDir 'dotnet'
}
if (-not (Test-Path -Path $tmpDir -PathType Container)) {
New-Item -ItemType Directory -Path $tmpDir | Out-Null
}
# Prepare the VMR
if (-not (Test-Path -Path $vmrDir -PathType Container)) {
Highlight "Cloning 'dotnet/dotnet' into $vmrDir.."
git clone https://github.com/dotnet/dotnet $vmrDir
if ($vmrBranch) {
git -C $vmrDir switch -c $vmrBranch
}
}
else {
if ((git -C $vmrDir diff --quiet) -eq $false) {
Fail "There are changes in the working tree of $vmrDir. Please commit or stash your changes"
exit 1
}
if ($vmrBranch) {
Highlight "Preparing $vmrDir"
git -C $vmrDir checkout $vmrBranch
git -C $vmrDir pull
}
}
Set-StrictMode -Version Latest
# Prepare darc
Highlight 'Installing .NET, preparing the tooling..'
. $scriptRoot\common\tools.ps1
$dotnetRoot = InitializeDotNetCli -install:$true
$dotnet = "$dotnetRoot\dotnet.exe"
& "$dotnet" tool restore
Highlight "Starting the synchronization of '$repository'.."
# Synchronize the VMR
$darcArgs = (
"darc", "vmr", "update",
"--vmr", $vmrDir,
"--tmp", $tmpDir,
"--$verbosity",
"--component-template", $componentTemplate,
"--tpn-template", $tpnTemplate,
"--discard-patches",
$repository
)
if ($recursive) {
$darcArgs += ("--recursive")
}
if ($additionalRemotes) {
$darcArgs += ("--additional-remotes", $additionalRemotes)
}
if ($azdevPat) {
$darcArgs += ("--azdev-pat", $azdevPat)
}
& "$dotnet" $darcArgs
if ($LASTEXITCODE -eq 0) {
Highlight "Synchronization succeeded"
}
else {
Fail "Synchronization of dotnet/dotnet to '$repository' failed!"
Fail "'$vmrDir' is left in its last state (re-run of this script will reset it)."
Fail "Please inspect the logs which contain path to the failing patch file (use -debugOutput to get all the details)."
Fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script."
exit 1
}

View file

@ -104,7 +104,7 @@ repository=''
additional_remotes='' additional_remotes=''
recursive=false recursive=false
verbosity=verbose verbosity=verbose
readme_template="$installer_dir/src/VirtualMonoRepo/Component.template.md" component_template="$installer_dir/src/VirtualMonoRepo/Component.template.md"
tpn_template="$installer_dir/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt" tpn_template="$installer_dir/src/VirtualMonoRepo/THIRD-PARTY-NOTICES.template.txt"
azdev_pat='' azdev_pat=''
@ -180,8 +180,8 @@ if [[ -z "$tmp_dir" ]]; then
exit 1 exit 1
fi fi
if [[ ! -f "$readme_template" ]]; then if [[ ! -f "$component_template" ]]; then
fail "File '$readme_template' does not exist. Please specify a valid path to the README template" fail "File '$component_template' does not exist. Please specify a valid path to the Component.md template"
exit 1 exit 1
fi fi

View file

@ -185,6 +185,12 @@ while [[ $# > 0 ]]; do
shift shift
done done
if [[ "$ci" == true ]]; then
if [[ "$exclude_ci_binary_log" == false ]]; then
binary_log=true
fi
fi
. "$scriptroot/eng/common/tools.sh" . "$scriptroot/eng/common/tools.sh"
function Build { function Build {

View file

@ -3,9 +3,9 @@
<ProductDependencies> <ProductDependencies>
</ProductDependencies> </ProductDependencies>
<ToolsetDependencies> <ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24075.2"> <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="9.0.0-beta.24102.4">
<Uri>https://github.com/dotnet/arcade</Uri> <Uri>https://github.com/dotnet/arcade</Uri>
<Sha>1d8f27f89c3b167f63e28e73a3d9ab345e81d310</Sha> <Sha>2fb543a45580400a559b5ae41c96a815ea14dac5</Sha>
</Dependency> </Dependency>
</ToolsetDependencies> </ToolsetDependencies>
</Dependencies> </Dependencies>

View file

@ -22,8 +22,8 @@
of a .NET major or minor release, prebuilts may be needed. When the release is mature, prebuilts of a .NET major or minor release, prebuilts may be needed. When the release is mature, prebuilts
are not necessary, and this property is removed from the file. are not necessary, and this property is removed from the file.
--> -->
<PrivateSourceBuiltSdkVersion>9.0.100-alpha.1.24067.1</PrivateSourceBuiltSdkVersion> <PrivateSourceBuiltSdkVersion>9.0.100-preview.2.24104.1</PrivateSourceBuiltSdkVersion>
<PrivateSourceBuiltArtifactsVersion>9.0.100-alpha.1.24067.1</PrivateSourceBuiltArtifactsVersion> <PrivateSourceBuiltArtifactsVersion>9.0.100-preview.2.24104.1</PrivateSourceBuiltArtifactsVersion>
<PrivateSourceBuiltPrebuiltsVersion>0.1.0-9.0.100-9</PrivateSourceBuiltPrebuiltsVersion> <PrivateSourceBuiltPrebuiltsVersion>0.1.0-9.0.100-9</PrivateSourceBuiltPrebuiltsVersion>
<!-- msbuild --> <!-- msbuild -->
<MicrosoftBuildVersion>15.7.179</MicrosoftBuildVersion> <MicrosoftBuildVersion>15.7.179</MicrosoftBuildVersion>

View file

@ -48,21 +48,17 @@ if ($help) {
exit 0 exit 0
} }
$arguments=""
if ($cleanWhileBuilding) {
$arguments += " /p:CleanWhileBuilding=true"
}
function Build { function Build {
InitializeToolset InitializeToolset
$bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' } $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' }
$cwb = if ($cleanWhileBuilding) { '/p:CleanWhileBuilding=true' } else { '' }
$buildProj = Join-Path $RepoRoot 'build.proj' $buildProj = Join-Path $RepoRoot 'build.proj'
MSBuild $buildProj ` MSBuild $buildProj `
$bl ` $bl `
/p:Configuration=$configuration ` /p:Configuration=$configuration `
$arguments ` $cwb `
@properties @properties
} }
@ -75,6 +71,11 @@ try {
exit 0 exit 0
} }
if ($ci) {
if (-not $excludeCIBinarylog) {
$binaryLog = $true
}
}
Build Build
} }

View file

@ -1,27 +0,0 @@
# This is the dotnet/dotnet pipeline that is triggered every weekday at midnight PST (08:00 UTC) for "main" and when changes are pushed to release/* and internal/release/* branches.
schedules:
- cron: '0 8 * * Mon-Fri'
displayName: Weekday midnight build
branches:
include:
- main
batch: true
trigger:
batch: true
branches:
include:
- release/*
- internal/release/*
pr: none
stages:
- ${{ if ne(variables['Build.Reason'], 'Schedule') }}:
- template: templates/stages/vmr-scan.yml
- template: /src/installer/eng/pipelines/templates/stages/vmr-cross-build.yml
parameters:
isBuiltFromVmr: true
isLiteBuild: false

View file

@ -1,4 +1,8 @@
# This is the dotnet/dotnet-lite pipeline that is triggered by pushes to main and PRs targetting main and release/*. # This yml is used by these pipelines and triggers:
#
# - dotnet-source-build-lite (internal)
# - PR: release/* and main, lite build
# - CI: main only, every batched commit, lite build
trigger: trigger:
batch: true batch: true
@ -13,10 +17,11 @@ pr:
- release/* - release/*
stages: stages:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
- template: templates/stages/vmr-scan.yml - template: templates/stages/vmr-scan.yml
- template: /src/installer/eng/pipelines/templates/stages/vmr-build.yml - template: /src/installer/eng/pipelines/templates/stages/vmr-build.yml
parameters: parameters:
isBuiltFromVmr: true isBuiltFromVmr: true
isLiteBuild: true isSourceOnlyBuild: true
scope: lite

View file

@ -1,26 +1,58 @@
# This is the dotnet/dotnet pipeline that is triggered every weekday at midnight PST (08:00 UTC) for "main" and when changes are pushed to release/* and internal/release/* branches. # This yml is used by these pipelines and triggers:
# NOTE: the triggers are defined in the Azure DevOps UI as they are too complex
#
# - dotnet-source-build (public)
# - PR: ultralite build
# - CI: release/* only, every batched commit, full build
# - Schedule: main only, full build
#
# - dotnet-unified-build (public)
# - PR: lite build
# - CI: release/* only, every batched commit, full build
# - Schedule: main only, full build
#
# - dotnet-source-build (internal)
# - PR: ultralite build
# - CI: release/* and internal/release/* only, every batched commit, full build
# - CI: main only, every batched commit, lite build
# - Schedule: main only, full build
#
# - dotnet-unified-build (internal)
# - PR: lite build
# - CI: release/*, internal/release/* and main, every batched commit, full build
schedules: variables:
- cron: '0 8 * * Mon-Fri' # enable source-only build for pipelines that contain the -source-build string
displayName: Weekday midnight build - name: isSourceOnlyBuild
branches: value: ${{ contains(variables['Build.DefinitionName'], '-source-build') }}
include:
- main
batch: true
trigger: - name: isInternalBuild
batch: true value: ${{ eq(variables['System.TeamProject'], 'internal') }}
branches:
include:
- release/*
- internal/release/*
pr: none - name: isMainBranch
value: ${{ in(variables['Build.SourceBranch'], 'refs/heads/main', 'refs/heads/main-ub') }}
- name: isScheduleTrigger
value: ${{ eq(variables['Build.Reason'], 'Schedule') }}
- name: isPRTrigger
value: ${{ eq(variables['Build.Reason'], 'PullRequest') }}
stages: stages:
- template: templates/stages/vmr-scan.yml - ${{ if not(eq(variables.isPRTrigger, 'true')) }}:
- template: templates/stages/vmr-scan.yml
- template: /src/installer/eng/pipelines/templates/stages/vmr-build.yml - template: /src/installer/eng/pipelines/templates/stages/vmr-build.yml
parameters: parameters:
isBuiltFromVmr: true isBuiltFromVmr: true
isLiteBuild: false isSourceOnlyBuild: ${{ variables.isSourceOnlyBuild }}
${{ if eq(variables.isScheduleTrigger, 'true') }}:
scope: full
${{ elseif and(eq(variables.isPRTrigger, 'true'), eq(variables.isSourceOnlyBuild, 'true')) }}:
scope: ultralite
${{ elseif and(eq(variables.isPRTrigger, 'true'), not(eq(variables.isSourceOnlyBuild, 'true'))) }}:
scope: lite
${{ elseif and(not(eq(variables.isPRTrigger, 'true')), eq(variables.isSourceOnlyBuild, 'true'), eq(variables.isInternalBuild, 'true'), eq(variables.isMainBranch, 'true')) }}:
scope: lite
${{ else }}:
scope: full

View file

@ -1,6 +1,6 @@
{ {
"tools": { "tools": {
"dotnet": "9.0.100-alpha.1.24067.4" "dotnet": "9.0.100-preview.2.24103.2"
}, },
"msbuild-sdks": { "msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.NoTargets": "3.7.0",