Welcome to mirror list, hosted at ThFree Co, Russian Federation.

RepositoryBuild.targets « build - github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9c5cd934251bd60d8b880e0ee3b4a158d8b87f21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<Project>
  <Target Name="_BuildRepositories">
    <ItemGroup>
      <BatchedRepository Include="$(MSBuildProjectFullPath)">
        <BuildGroup>%(RepositoryBuildOrder.Order)</BuildGroup>
        <Repository>%(RepositoryBuildOrder.Identity)</Repository>
        <AdditionalProperties>
          RepositoryToBuild=%(RepositoryBuildOrder.Identity);
          BuildRepositoryRoot=$([MSBuild]::NormalizeDirectory(%(RepositoryBuildOrder.RootPath)))
        </AdditionalProperties>
      </BatchedRepository>
    </ItemGroup>

    <PropertyGroup>
      <BatchBuilds Condition="$(BuildInParallel) AND '$(CompileOnly)'=='true'">true</BatchBuilds>
      <BatchBuilds Condition="'$(BatchBuilds)'==''">false</BatchBuilds>
    </PropertyGroup>

    <ItemGroup>
      <PinnedArtifactInfo Include="@(ArtifactInfo)" Condition="'$(BuildGraphOf)' == ''" />
    </ItemGroup>

    <!-- If we are building a sub-graph, we need to re-examine the list of artifacts that will actual build. -->
    <MSBuild Projects="$(MSBuildProjectFullPath)"
             Targets="GetArtifactInfo"
             Properties="RepositoryRoot=$(SubmoduleRoot)%(RepositoryBuildOrder.Identity)\;Configuration=$(Configuration);BuildNumber=$(BuildNumber)"
             Condition="'$(BuildGraphOf)' != ''">
      <Output TaskParameter="TargetOutputs" ItemName="PinnedArtifactInfo" />
    </MSBuild>

    <MSBuild
      Projects="@(BatchedRepository)"
      BuildInParallel="$(BatchBuilds)"
      StopOnFirstFailure="true"
      Targets="_BuildRepository"
      Properties="BuildGroup=%(BatchedRepository.BuildGroup);BuildNumber=$(BuildNumber);IsFinalBuild=$(IsFinalBuild);Configuration=$(Configuration)" />
  </Target>

  <Target Name="_BuildRepository">
    <PropertyGroup>
      <!-- Should reduce allowable package feeds to only nuget.org. -->
      <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:AspNetUniverseBuildOffline=true</RepositoryBuildArguments>
      <!-- If there are duplicate properties, the properties which are defined later in the order would override the earlier ones -->
      <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath)</RepositoryBuildArguments>
      <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)</RepositoryBuildArguments>
      <RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
      <RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>

      <BuildArguments>$(_RepositoryBuildTargets) $(RepositoryBuildArguments)</BuildArguments>
      <RepositoryArtifactsRoot>$(BuildRepositoryRoot)artifacts</RepositoryArtifactsRoot>
      <RepositoryArtifactsBuildDirectory>$(RepositoryArtifactsRoot)\build\</RepositoryArtifactsBuildDirectory>
      <RepositoryArtifactsMSBuildDirectory>$(RepositoryArtifactsRoot)\msbuild\</RepositoryArtifactsMSBuildDirectory>

      <_BuildScriptToExecute Condition="'$(OS)'!='Windows_NT'">build.sh</_BuildScriptToExecute>
      <_BuildScriptToExecute Condition="'$(OS)'=='Windows_NT'">build.cmd</_BuildScriptToExecute>
    </PropertyGroup>

    <Message Text="============ Building $(RepositoryToBuild) ============" Importance="High" />

    <!-- Copy Korebuild lock file to individual repos to align version if the repo doesn't already have one -->
    <Message Text="Copying KoreBuild lockfile from Universe to repository $(BuildRepositoryRoot)"/>
    <Copy SourceFiles="$(RepositoryRoot)korebuild-lock.txt" DestinationFolder="$(BuildRepositoryRoot)" />

    <Exec
      Command="./$(_BuildScriptToExecute) -Path $(BuildRepositoryRoot) $(BuildArguments)"
      IgnoreStandardErrorWarningFormat="true"
      WorkingDirectory="$(RepositoryRoot)" />

    <ItemGroup>
      <RepositoryArtifacts Include="$(RepositoryArtifactsBuildDirectory)*" />
      <RepositorySymbolNupkgs Include="$(RepositoryArtifactsBuildDirectory)*.symbols.nupkg" />
      <RepositoryNupkgs Include="$(RepositoryArtifactsBuildDirectory)*.nupkg" Exclude="@(RepositorySymbolNupkgs)" />
      <RepositoryMSBuildArtifacts Include="$(RepositoryArtifactsMSBuildDirectory)**\*.*" />
    </ItemGroup>

    <Copy
       SourceFiles="@(RepositoryArtifacts)"
       DestinationFolder="$(BuildDir)" />

    <Move
       SourceFiles="@(RepositoryMSBuildArtifacts)"
       DestinationFolder="$(ArtifactsDir)msbuild\$(RepositoryToBuild)\%(RecursiveDir)" />

    <Message Text="============ Done building $(RepositoryToBuild) ============" Importance="High" />
  </Target>

</Project>