aspnetcore/build/repo.targets

111 lines
5.3 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<Import Project="common.props" />
<PropertyGroup>
<MetaPackagePath>$(RepositoryRoot)src\Microsoft.AspNetCore.RuntimeStore\</MetaPackagePath>
<MetaPackageFile>$(MetaPackagePath)Microsoft.AspNetCore.RuntimeStore.csproj</MetaPackageFile>
<WorkingDirectory>$(MetaPackagePath)bin\work\</WorkingDirectory>
<PackageCacheOutputPath>$(MetaPackagePath)bin\packageCache\</PackageCacheOutputPath>
<DepsOutputPath>$(MetaPackagePath)bin\deps\</DepsOutputPath>
<ArtifactsDir>$(RepositoryRoot)artifacts\</ArtifactsDir>
<ArtifactsZipDir>$(ArtifactsDir)zip\</ArtifactsZipDir>
<TempDir>$(ArtifactsDir)temp\</TempDir>
<ToolsDir>$(RepositoryRoot)tools\</ToolsDir>
<DependencyBuildDirectory>$(RepositoryRoot).deps\build\</DependencyBuildDirectory>
<PrepareDependsOn>
$(PrepareDependsOn);
UpdateNuGetConfig
</PrepareDependsOn>
<CompileDependsOn Condition="'$(BUILD_PACKAGE_CACHE)' == 'true'">
$(CompileDependsOn);
BuildPackageCache
</CompileDependsOn>
</PropertyGroup>
<Target Name="UpdateNuGetConfig">
<UpdatePackageSource
NuGetConfigPath="$(RepositoryRoot)NuGet.config"
SourceName="Dependencies"
SourceUri="$(DependencyBuildDirectory)"
Condition="Exists('$(DependencyBuildDirectory)')" />
</Target>
<Target Name="BuildPackageCache">
<GetOSPlatform>
<!-- Returns {Linux, macOS, Windows} -->
<Output TaskParameter="PlatformName" PropertyName="OSPlatform" />
</GetOSPlatform>
<PropertyGroup>
<OutputZipSufix Condition="'$(OSPlatform)' == 'Windows'">win</OutputZipSufix>
<OutputZipSufix Condition="'$(OSPlatform)' == 'Linux'">linux</OutputZipSufix>
<OutputZipSufix Condition="'$(OSPlatform)' == 'macOS'">osx</OutputZipSufix>
<OutputZip>$(ArtifactsDir)Build.RuntimeStore.$(OutputZipSufix)-$(VersionSuffix).zip</OutputZip>
</PropertyGroup>
<ItemGroup>
<RIDs Include="win7-x64" Condition="'$(OSPlatform)'=='Windows'" >
<PlatformDir>x64</PlatformDir>
</RIDs>
<RIDs Include="win7-x86" Condition="'$(OSPlatform)'=='Windows'" >
<PlatformDir>x86</PlatformDir>
</RIDs>
<RIDs Include="linux-x64" Condition="'$(OSPlatform)'=='Linux'" >
<PlatformDir>x64</PlatformDir>
</RIDs>
<RIDs Include="osx.10.12-x64" Condition="'$(OSPlatform)'=='macOS'" >
<PlatformDir>x64</PlatformDir>
</RIDs>
</ItemGroup>
<RemoveDir Directories="$(PackageCacheOutputPath)" />
<RemoveDir Directories="$(WorkingDirectory)%(RIDs.Identity)\" />
<Exec Command="dotnet store --manifest $(MetaPackageFile) --configuration Release --framework netcoreapp2.0 --runtime %(RIDs.Identity) --output $(PackageCacheOutputPath) --framework-version 2.0.0-* --working-dir $(WorkingDirectory)%(RIDs.Identity)/" />
<MsBuild Projects="$(MetaPackageFile)" Targets="CollectDeps" Properties="DepsOutputPath=$(DepsOutputPath)"/>
<ItemGroup>
<PackageStoreManifestFiles Include="$(PackageCacheOutputPath)%(RIDs.PlatformDir)\**\artifact.xml">
<DestinationFile>manifest.%(RIDs.Identity).xml</DestinationFile>
</PackageStoreManifestFiles>
<PackageCacheFiles Include="$(PackageCacheOutputPath)**\*" Exclude="$(PackageCacheOutputPath)**\artifact.xml" />
<DepsFiles Include="$(DepsOutputPath)**\*" />
</ItemGroup>
<Move SourceFiles="%(PackageStoreManifestFiles.FullPath)" DestinationFiles="$(ArtifactsDir)%(PackageStoreManifestFiles.DestinationFile)" />
<Copy SourceFiles="@(PackageCacheFiles)" DestinationFolder="$(ArtifactsZipDir)store\%(RecursiveDir)" />
<Copy SourceFiles="@(DepsFiles)" DestinationFolder="$(ArtifactsZipDir)additionalDeps\%(RecursiveDir)" />
<ItemGroup>
<OutputZipFiles Include="$(ArtifactsZipDir)**\*" />
</ItemGroup>
<ZipArchive File="$(OutputZip)" SourceFiles="@(OutputZipFiles)" WorkingDirectory="$(ArtifactsZipDir)" />
<!--Drop a nuspec file in artifacts for packing zip files into a nupkg-->
<Copy SourceFiles="$(RepositoryRoot)build\Build.RuntimeStore.nuspec" DestinationFolder="$(ArtifactsDir)" Condition="'$(OSPlatform)'=='Windows'" />
<WriteLinesToFile File="$(ArtifactsDir)version.txt" Lines="$(VersionPrefix)-$(VersionSuffix)" Overwrite="true" Condition="'$(OSPlatform)'=='Windows'" />
</Target>
<Target Name="AddManifestsToNupkg">
<Error Text="COHERENCE_DROP_LOCATION is not specified. This requires a path like \\aspnetci\drops\Coherence\{build-number}"
Condition=" '$(COHERENCE_DROP_LOCATION)' == '' " />
<ItemGroup>
<MetaPackageNupkg Include="$(COHERENCE_DROP_LOCATION)\ship\Microsoft.AspNetCore.All.*.nupkg" />
<ManifestFiles Include="$(ArtifactsDir)*.xml"/>
</ItemGroup>
<RemoveDir Directories="@(MetaPackageNupkg->'$(TempDir)%(Filename)')" />
<Copy SourceFiles="@(MetaPackageNupkg)" DestinationFolder="$(ArtifactsDir)" />
<UnzipArchive File="$(ArtifactsDir)%(MetaPackageNupkg.FileName)%(MetaPackageNupkg.Extension)" Destination="@(MetaPackageNupkg->'$(TempDir)%(Filename)')" />
<Copy SourceFiles="@(ManifestFiles)" DestinationFolder="@(MetaPackageNupkg->'$(TempDir)%(Filename)\build\')" />
<ItemGroup>
<ArchiveFiles Include="$(TempDir)%(MetaPackageNupkg.Filename)\**\*" />
</ItemGroup>
<ZipArchive File="%(MetaPackageNupkg.FullPath)" SourceFiles="@(ArchiveFiles)" WorkingDirectory="@(MetaPackageNupkg->'$(TempDir)%(Filename)')" />
</Target>
</Project>