RepositoryBuild.targets 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <Project>
  2. <Target Name="_BuildRepositories" DependsOnTargets="GeneratePropsFiles">
  3. <ItemGroup>
  4. <BatchedRepository Include="$(MSBuildProjectFullPath)">
  5. <BuildGroup>%(RepositoryBuildOrder.Order)</BuildGroup>
  6. <Repository>%(RepositoryBuildOrder.Identity)</Repository>
  7. <AdditionalProperties>
  8. RepositoryToBuild=%(RepositoryBuildOrder.Identity);
  9. BuildRepositoryRoot=$([MSBuild]::NormalizeDirectory(%(RepositoryBuildOrder.RootPath)))
  10. </AdditionalProperties>
  11. </BatchedRepository>
  12. </ItemGroup>
  13. <PropertyGroup>
  14. <BatchBuilds Condition="$(BuildInParallel) AND '$(SkipTests)'=='true'">true</BatchBuilds>
  15. <BatchBuilds Condition="'$(BatchBuilds)'==''">false</BatchBuilds>
  16. </PropertyGroup>
  17. <ItemGroup>
  18. <PinnedArtifactInfo Include="@(ArtifactInfo)" Condition="'$(BuildGraphOf)' == ''" />
  19. </ItemGroup>
  20. <!-- If we are building a sub-graph, we need to re-examine the list of artifacts that will actual build. -->
  21. <MSBuild Projects="$(MSBuildProjectFullPath)"
  22. Targets="GetArtifactInfo"
  23. Properties="RepositoryRoot=$(SubmoduleRoot)%(RepositoryBuildOrder.Identity)\;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
  24. Condition="'$(BuildGraphOf)' != ''">
  25. <Output TaskParameter="TargetOutputs" ItemName="PinnedArtifactInfo" />
  26. </MSBuild>
  27. <MSBuild
  28. Projects="@(BatchedRepository)"
  29. BuildInParallel="$(BatchBuilds)"
  30. StopOnFirstFailure="true"
  31. Targets="_BuildRepository"
  32. Properties="BuildGroup=%(BatchedRepository.BuildGroup);BuildNumber=$(BuildNumber);IsFinalBuild=$(IsFinalBuild);Configuration=$(Configuration)" />
  33. </Target>
  34. <Target Name="_BuildRepository">
  35. <PropertyGroup>
  36. <!-- Should reduce allowable package feeds to only nuget.org. -->
  37. <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:AspNetUniverseBuildOffline=true</RepositoryBuildArguments>
  38. <!-- If there are duplicate properties, the properties which are defined later in the order would override the earlier ones -->
  39. <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</RepositoryBuildArguments>
  40. <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)</RepositoryBuildArguments>
  41. <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
  42. <RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
  43. <BuildArguments>$(_RepositoryBuildTargets) $(RepositoryBuildArguments)</BuildArguments>
  44. <RepositoryArtifactsRoot>$(BuildRepositoryRoot)artifacts</RepositoryArtifactsRoot>
  45. <RepositoryArtifactsBuildDirectory>$(RepositoryArtifactsRoot)\build\</RepositoryArtifactsBuildDirectory>
  46. <RepositoryArtifactsMSBuildDirectory>$(RepositoryArtifactsRoot)\msbuild\</RepositoryArtifactsMSBuildDirectory>
  47. <_BuildScriptToExecute Condition="'$(OS)'!='Windows_NT'">build.sh</_BuildScriptToExecute>
  48. <_BuildScriptToExecute Condition="'$(OS)'=='Windows_NT'">build.cmd</_BuildScriptToExecute>
  49. </PropertyGroup>
  50. <Message Text="============ Building $(RepositoryToBuild) ============" Importance="High" />
  51. <!-- Copy Korebuild lock file to individual repos to align version if the repo doesn't already have one -->
  52. <Message Text="Copying KoreBuild lockfile from Universe to repository $(BuildRepositoryRoot)"/>
  53. <Copy SourceFiles="$(RepositoryRoot)korebuild-lock.txt" DestinationFolder="$(BuildRepositoryRoot)" />
  54. <Exec
  55. Command="./$(_BuildScriptToExecute) -Path $(BuildRepositoryRoot) $(BuildArguments)"
  56. IgnoreStandardErrorWarningFormat="true"
  57. WorkingDirectory="$(RepositoryRoot)" />
  58. <ItemGroup>
  59. <RepositoryArtifacts Include="$(RepositoryArtifactsBuildDirectory)*" />
  60. <RepositoryMSBuildArtifacts Include="$(RepositoryArtifactsMSBuildDirectory)**\*.*" />
  61. </ItemGroup>
  62. <Copy
  63. SourceFiles="@(RepositoryArtifacts)"
  64. DestinationFolder="$(BuildDir)" />
  65. <Move
  66. SourceFiles="@(RepositoryMSBuildArtifacts)"
  67. DestinationFolder="$(ArtifactsDir)msbuild\$(RepositoryToBuild)\%(RecursiveDir)" />
  68. <Message Text="============ Done building $(RepositoryToBuild) ============" Importance="High" />
  69. </Target>
  70. </Project>