diff --git a/Documentation/ArcadeSdk.md b/Documentation/ArcadeSdk.md index bec73caa392..4e86f9611b2 100644 --- a/Documentation/ArcadeSdk.md +++ b/Documentation/ArcadeSdk.md @@ -219,7 +219,31 @@ optimizations by setting 'RestoreUsingNuGetTargets' to false. ``` -CoreFx does not use the default build projects in its repo - [example](https://github.com/dotnet/corefx/blob/66392f577c7852092f668876822b6385bcafbd44/eng/Build.props). +#### Example: batching projects together for more complex build ordering + +Arcade builds all passed-in projects in parallel by default. While it's possible to set the `BuildInParallel` property or item metadata, more complex build order requirements might be necessary. When projects should be built in batches, the `BuildStep` item metadata can be used to express that. + +Below, the build order is the following: `native1 -> native2 -> java & managed (parallel) -> installer1 & installer2 (parallel) -> cleanup -> optimization. +```xml + + + + false + + + + + + + + + + + + +``` + +Runtime does not use the default build projects in its repo - [example](https://github.com/dotnet/runtime/blob/1e6311a9795556149b5a051c5f5b2159d5a9765c/eng/Build.props#L7). ### /eng/Versions.props: A single file listing component versions and used tools diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj index 0afae858aa8..9ba58ad8f1f 100644 --- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj +++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj @@ -16,8 +16,8 @@ DotNetBuildPass While building the repo as part of the entire .NET stack, this parameter specifies which build pass the current build is part of. DotNetBuildSourceOnly Build the repo as part of the entire .NET stack with no external dependencies. DotNetPublishUsingPipelines Publish assets to Build Asset Registry. - DotNetSymbolServerTokenMsdl Personal access token for MSDL symbol server. Available from variable group DotNet-Symbol-Server-Pats. - DotNetSymbolServerTokenSymWeb Personal access token for SymWeb symbol server. Available from variable group DotNet-Symbol-Server-Pats. + DotNetSymbolServerTokenMsdl Personal access token for MSDL symbol server. Available from variable group DotNet-Symbol-Server-Pats. + DotNetSymbolServerTokenSymWeb Personal access token for SymWeb symbol server. Available from variable group DotNet-Symbol-Server-Pats. DotNetSymbolExpirationInDays Symbol expiration time in days (defaults to 10 years). DotNetSignType Specifies the signing type: 'real' (default), 'test'. DotNetRuntimeSourceFeed Storage account to lookup for the .Net runtime files @@ -44,6 +44,7 @@ + 1 true true 1 @@ -93,28 +94,7 @@ - - - - - - - - <_NuGetRestoreTargets Condition="Exists('$(MSBuildToolsPath)\NuGet.targets')" >$(MSBuildToolsPath)\NuGet.targets - <_NuGetRestoreTargets Condition="'$([MSBuild]::IsRunningFromVisualStudio())' == 'true' And Exists('$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets')">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets - - - false - - - true - false - - + <_SolutionBuildTargets Include="Rebuild" Condition="'$(Rebuild)' == 'true'" /> <_SolutionBuildTargets Include="Build" Condition="'$(Build)' == 'true' and '$(Rebuild)' != 'true'" /> @@ -149,12 +129,41 @@ <_CommonProps Include="VCTargetsPath=$([MSBuild]::ValueOrDefault('$(VCTargetsPath)', '$([MSBuild]::GetVsInstallRoot())\Common7\IDE\VC\VCTargets\'))" Condition="'$(MSBuildRuntimeType)' != 'Core'"/> + + <_SolutionBuildProps Include="@(_CommonProps)"/> + <_SolutionBuildProps Include="__DeployProjectOutput=$(Deploy)" Condition="'$(Deploy)' != ''"/> + <_SolutionBuildProps Include="__ImportPackTargets=true" Condition="'$(Pack)' == 'true'" /> + + + + + + + + + + + <_NuGetRestoreTargets Condition="Exists('$(MSBuildToolsPath)\NuGet.targets')" >$(MSBuildToolsPath)\NuGet.targets + <_NuGetRestoreTargets Condition="'$([MSBuild]::IsRunningFromVisualStudio())' == 'true' And Exists('$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets')">$(MSBuildToolsPath32)\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets + + + false + + + true + false + + <_RestoreToolsProps Include="@(_CommonProps)"/> <_RestoreToolsProps Include="BaseIntermediateOutputPath=$(ArtifactsToolsetDir)Common"/> <_RestoreToolsProps Include="ExcludeRestorePackageImports=true"/> <_RestoreToolsProps Include="_NuGetRestoreTargets=$(_NuGetRestoreTargets)"/> - + <_RestoreToolsProps Include="Publish=$(Publish)"/> @@ -166,7 +175,7 @@ @@ -174,25 +183,6 @@ <_RestoreToolsProps Include="DotNetRuntimeSourceFeedKey=$(DotNetRuntimeSourceFeedKey)"/> - - <_PublishProps Include="@(_CommonProps)"/> - - - <_PublishProps Include="Publish=$(Publish)"/> - - - <_PublishProps Include="PublishToSymbolServer=$(PublishToSymbolServer)"/> - - - <_PublishProps Include="DotNetPublishUsingPipelines=$(DotNetPublishUsingPipelines)"/> - - - - <_SolutionBuildProps Include="@(_CommonProps)"/> - <_SolutionBuildProps Include="__DeployProjectOutput=$(Deploy)" Condition="'$(Deploy)' != ''"/> - <_SolutionBuildProps Include="__ImportPackTargets=true" Condition="'$(Pack)' == 'true'" /> - - @@ -222,7 +212,7 @@ <_SolutionRestoreProps Include="MSBuildRestoreSessionId=$([System.Guid]::NewGuid())" /> <_SolutionRestoreProps Include="RestoreUseStaticGraphEvaluation=$(RestoreUseStaticGraphEvaluation)" /> - + true @@ -277,15 +267,7 @@ BuildInParallel="%(_ProjectToRestore.RestoreInParallel)" Condition="'$(Restore)' == 'true'"/> - - + true + + <_PublishProps Include="@(_CommonProps)"/> + + <_PublishProps Include="Publish=$(Publish)"/> + + <_PublishProps Include="PublishToSymbolServer=$(PublishToSymbolServer)"/> + + <_PublishProps Include="DotNetPublishUsingPipelines=$(DotNetPublishUsingPipelines)"/> + + + + + +