311 lines
17 KiB
XML
311 lines
17 KiB
XML
<Project>
|
|
|
|
<PropertyGroup>
|
|
<DependencyAssetsDir>$(RepositoryRoot).deps\assets\</DependencyAssetsDir>
|
|
<DependencyPackagesDir>$(RepositoryRoot).deps\packages\</DependencyPackagesDir>
|
|
<!-- This file is used by the dotnet/cli to determine if our shared framework aligns with the version they pull. -->
|
|
<BaseRuntimeVersionFileName>aspnetcore_base_runtime.version</BaseRuntimeVersionFileName>
|
|
<BaseRuntimeVersionFile>$(IntermediateDir)$(BaseRuntimeVersionFileName)</BaseRuntimeVersionFile>
|
|
<LatestRuntimeVersionFileName>latest.version</LatestRuntimeVersionFileName>
|
|
<LatestRuntimeVersionFile>$(IntermediateDir)$(LatestRuntimeVersionFileName)</LatestRuntimeVersionFile>
|
|
|
|
<PublishDependsOn>
|
|
ResolveCommitHash;
|
|
PrepareOutputPaths;
|
|
GetFilesToPublish;
|
|
PublishToLocalFolder;
|
|
PublishToAzureFeed;
|
|
PublishToTransportFeed;
|
|
PublishToMyGet;
|
|
</PublishDependsOn>
|
|
|
|
<!-- Settings for pushing to the transport feed -->
|
|
<PushToBlobFeed_Overwrite Condition="'$(PushToBlobFeed_Overwrite)' == ''">false</PushToBlobFeed_Overwrite>
|
|
<PushToBlobFeed_MaxClients Condition="'$(PushToBlobFeed_MaxClients)' == ''">8</PushToBlobFeed_MaxClients>
|
|
<BlobFileRelativePathBase Condition="'$(BlobFileRelativePathBase)' == ''">assets</BlobFileRelativePathBase>
|
|
<BlobFileRelativePathBase Condition="!HasTrailingSlash('$(BlobFileRelativePathBase)')">$(BlobFileRelativePathBase)/</BlobFileRelativePathBase>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="Publish" DependsOnTargets="$(PublishDependsOn)" />
|
|
|
|
<Target Name="GeneratePublishFiles" DependsOnTargets="ResolveCommitHash">
|
|
<MakeDir Directories="$(IntermediateDir)" />
|
|
|
|
<!--
|
|
Used by the dotnet/cli build to determine which version of Microsoft.NETCore.App is used.
|
|
-->
|
|
<WriteLinesToFile File="$(BaseRuntimeVersionFile)" Lines="$(MicrosoftNETCoreApp30PackageVersion)" Overwrite="true" />
|
|
|
|
<!--
|
|
Used by the downloader scripts when pulling from a 'channel' instead of a specific version.
|
|
The second line must be the package version.
|
|
See dotnet-install.ps1/sh.
|
|
-->
|
|
<WriteLinesToFile
|
|
File="$(LatestRuntimeVersionFile)"
|
|
Lines="$(CommitHash);$(PackageVersion)"
|
|
Overwrite="true" />
|
|
|
|
<ItemGroup>
|
|
<SharedFxVersionBadge Include="$(IntermediateDir)$(SharedFxInstallerName)-%(AllSharedFxRIDs.Identity)-version-badge.svg" />
|
|
</ItemGroup>
|
|
|
|
<GenerateSvgBadge
|
|
OutputPath="%(SharedFxVersionBadge.Identity)"
|
|
Label="version"
|
|
Value="$(PackageVersion)" />
|
|
</Target>
|
|
|
|
<Target Name="GetFilesToPublish" DependsOnTargets="GetArtifactInfo;GeneratePublishFiles">
|
|
<PropertyGroup>
|
|
<BlobBasePath>aspnetcore/Runtime/$(PackageVersion)/</BlobBasePath>
|
|
<NpmBlobBasePath>aspnetcore/npm/</NpmBlobBasePath>
|
|
<AliasBlobBasePath>aspnetcore/Runtime/$(SharedFxCliBlobChannel)/</AliasBlobBasePath>
|
|
<SiteExtensionArchiveFileName>runtime-site-extension-internal-$(PackageVersion).zip</SiteExtensionArchiveFileName>
|
|
<InstallerBaseFileName>aspnetcore-runtime-$(PackageVersion)</InstallerBaseFileName>
|
|
<InstallerAliasBaseFileName>aspnetcore-runtime-latest</InstallerAliasBaseFileName>
|
|
<IntermediateInstallerBaseFileName>aspnetcore-runtime-internal-$(PackageVersion)</IntermediateInstallerBaseFileName>
|
|
<WindowsHostingBundleInstallerFileName>dotnet-hosting-$(PackageVersion)-win.exe</WindowsHostingBundleInstallerFileName>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<!-- Windows Server hosting bundle -->
|
|
<FilesToPublish Include="$(DependencyAssetsDir)$(WindowsHostingBundleInstallerFileName)">
|
|
<RelativeBlobPath>$(BlobBasePath)$(WindowsHostingBundleInstallerFileName)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<!-- Package archives -->
|
|
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-$(PackageVersion).zip" >
|
|
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-$(PackageVersion).zip</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip" >
|
|
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-$(PackageVersion).patch.zip</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip" >
|
|
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-ci-server-compat-$(PackageVersion).patch.zip</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<!-- Intermediate files passed on to the dotnet-CLI. -->
|
|
<FilesToPublish Include="$(DependencyAssetsDir)$(SiteExtensionArchiveFileName)" Condition="@(Repository->AnyHaveMetadataValue('Identity', 'AzureIntegration'))">
|
|
<RelativeBlobPath>$(BlobBasePath)$(SiteExtensionArchiveFileName)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="$(DependencyAssetsDir)nuGetPackagesArchive-$(PackageVersion).lzma" >
|
|
<RelativeBlobPath>$(BlobBasePath)nuGetPackagesArchive-$(PackageVersion).lzma</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="$(DependencyAssetsDir)$(IntermediateInstallerBaseFileName)-%(IntermediateInstaller.Identity)%(IntermediateInstaller.FileExt)" Condition=" '%(IntermediateInstaller.Identity)' != '' ">
|
|
<RelativeBlobPath>$(BlobBasePath)$(IntermediateInstallerBaseFileName)-%(IntermediateInstaller.Identity)%(IntermediateInstaller.FileExt)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="$(BaseRuntimeVersionFile)">
|
|
<RelativeBlobPath>$(BlobBasePath)$(BaseRuntimeVersionFileName)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
<ContentType>text/plain</ContentType>
|
|
</FilesToPublish>
|
|
|
|
<!-- Archive installers -->
|
|
<FilesToPublish Include="$(DependencyAssetsDir)$(InstallerBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)" Condition=" '%(NativeInstaller.FileExt)' != '' ">
|
|
<RelativeBlobPath>$(BlobBasePath)$(InstallerBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
</FilesToPublish>
|
|
|
|
<!-- Support for README badges and dotnet-install.ps1/sh -->
|
|
<FilesToPublish Include="$(DependencyAssetsDir)$(InstallerBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)" Condition=" '%(NativeInstaller.FileExt)' != '' ">
|
|
<RelativeBlobPath>$(AliasBlobBasePath)$(InstallerAliasBaseFileName)-%(NativeInstaller.Identity)%(NativeInstaller.FileExt)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
<Overwrite>true</Overwrite>
|
|
<!-- These uploads duplicate the same blob in a separate location for README download links and to make dotnet-install.ps1/sh work when specifying -Channel. -->
|
|
<IsDuplicateUpload>true</IsDuplicateUpload>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="@(SharedFxVersionBadge)">
|
|
<RelativeBlobPath>$(AliasBlobBasePath)%(SharedFxVersionBadge.FileName)%(SharedFxVersionBadge.Extension)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
<CacheControl>no-cache, no-store, must-revalidate</CacheControl>
|
|
<ContentType>image/svg+xml</ContentType>
|
|
<Overwrite>true</Overwrite>
|
|
</FilesToPublish>
|
|
|
|
<FilesToPublish Include="$(LatestRuntimeVersionFile)">
|
|
<RelativeBlobPath>$(AliasBlobBasePath)$(LatestRuntimeVersionFileName)</RelativeBlobPath>
|
|
<ManifestArtifactData>ShipInstaller=dotnetcli</ManifestArtifactData>
|
|
<CacheControl>no-cache, no-store, must-revalidate</CacheControl>
|
|
<ContentType>text/plain</ContentType>
|
|
<Overwrite>true</Overwrite>
|
|
</FilesToPublish>
|
|
|
|
<!-- Packages -->
|
|
<_PackageArtifactInfo
|
|
Include="@(ArtifactInfo)"
|
|
ArtifactPath="$(DependencyPackagesDir)%(ArtifactInfo.PackageId).%(ArtifactInfo.Version).nupkg"
|
|
Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetPackage'" />
|
|
|
|
<_SymbolsPackageArtifactInfo
|
|
Include="@(ArtifactInfo)"
|
|
ArtifactPath="$(DependencyPackagesDir)%(ArtifactInfo.PackageId).%(ArtifactInfo.Version).symbols.nupkg"
|
|
Condition="'%(ArtifactInfo.ArtifactType)' == 'NuGetSymbolsPackage'" />
|
|
|
|
<NpmPackageToPublish Include="$(DependencyAssetsDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'NpmPackage'">
|
|
<RelativeBlobPath>$(NpmBlobBasePath)%(ArtifactInfo.PackageId)/%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)</RelativeBlobPath>
|
|
<ManifestArtifactData>Type=NpmPackage</ManifestArtifactData>
|
|
<ContentType>application/tar+gzip</ContentType>
|
|
</NpmPackageToPublish>
|
|
</ItemGroup>
|
|
|
|
<!-- Join required because shipping category is stored in universe (PackageArtifact), but information about package ID and version comes from repos (ArtifactInfo). -->
|
|
<RepoTasks.JoinItems
|
|
Left="@(_PackageArtifactInfo->WithMetadataValue('Category',''))" LeftKey="PackageId" LeftMetadata="*" LeftItemSpec="Identity"
|
|
Right="@(PackageArtifact)" RightMetadata="Category">
|
|
<Output TaskParameter="JoinResult" ItemName="_PackageArtifactInfoWithCategory" />
|
|
</RepoTasks.JoinItems>
|
|
|
|
<ItemGroup>
|
|
<PackageToPublish Include="%(_PackageArtifactInfoWithCategory.ArtifactPath)" Category="%(_PackageArtifactInfoWithCategory.Category)" />
|
|
<PackageToPublish Include="%(_PackageArtifactInfo.ArtifactPath)" Category="%(_PackageArtifactInfo.Category)" Condition="'%(_PackageArtifactInfo.Category)' != ''" />
|
|
<PackageToPublish Include="%(_SymbolsPackageArtifactInfo.ArtifactPath)" Category="symbols" IsSymbolsPackage="true" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<_MissingArtifactFile Include="@(FilesToPublish)" Condition="!Exists(%(FilesToPublish.Identity))" />
|
|
<_MissingArtifactFile Include="@(NpmPackageToPublish)" Condition="!Exists(%(NpmPackageToPublish.Identity))" />
|
|
<_MissingArtifactFile Include="@(PackageToPublish)" Condition="!Exists(%(PackageToPublish.Identity))" />
|
|
</ItemGroup>
|
|
|
|
<Error Text="Missing expected files:%0A - @(_MissingArtifactFile, '%0A - ')" Condition="@(_MissingArtifactFile->Count()) != 0" />
|
|
</Target>
|
|
|
|
<Target Name="PublishToLocalFolder" DependsOnTargets="GetFilesToPublish">
|
|
<Copy SourceFiles="%(FilesToPublish.Identity)" DestinationFiles="$(ArtifactsDir)%(FilesToPublish.RelativeBlobPath)" Condition="'%(FilesToPublish.RelativeBlobPath)' != ''" />
|
|
<Copy SourceFiles="%(NpmPackageToPublish.Identity)" DestinationFolder="$(ArtifactsDir)npm\" />
|
|
<Copy SourceFiles="%(PackageToPublish.Identity)" DestinationFolder="$(ArtifactsDir)packages\%(PackageToPublish.Category)\" />
|
|
</Target>
|
|
|
|
<Target Name="PublishToMyGet"
|
|
DependsOnTargets="GetFilesToPublish;GetToolsets"
|
|
Condition="'$(PublishToMyget)' == 'true'">
|
|
|
|
<Error Text="Missing required property: PublishMyGetFeedUrl" Condition=" '$(PublishMyGetFeedUrl)' == '' "/>
|
|
<Error Text="Missing required property: PublishMyGetSymbolsFeedUrl" Condition=" '$(PublishMyGetSymbolsFeedUrl)' == '' "/>
|
|
<Error Text="Missing required property: PublishMyGetNpmRegistryUrl" Condition=" '$(PublishMyGetNpmRegistryUrl)' == '' "/>
|
|
<Error Text="Missing required property: PublishMyGetFeedKey" Condition=" '$(PublishMyGetFeedKey)' == '' "/>
|
|
|
|
<Error Message="No packages found to publish" Condition="@(PackageToPublish->Count()) == 0" />
|
|
|
|
<PushNuGetPackages Condition="'%(PackageToPublish.IsSymbolsPackage)' != 'true' AND @(PackageToPublish->Count()) != 0"
|
|
Packages="@(PackageToPublish)"
|
|
Feed="$(PublishMyGetFeedUrl)"
|
|
ApiKey="$(PublishMyGetFeedKey)" />
|
|
|
|
<PushNuGetPackages Condition="'%(PackageToPublish.IsSymbolsPackage)' == 'true' AND @(PackageToPublish->Count()) != 0"
|
|
Packages="@(PackageToPublish)"
|
|
Feed="$(PublishMyGetSymbolsFeedUrl)"
|
|
ApiKey="$(PublishMyGetFeedKey)" />
|
|
|
|
<PropertyGroup>
|
|
<AuthTokenSetting>$(PublishMyGetNpmRegistryUrl.Replace("https:", "")):_authToken</AuthTokenSetting>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="npm config set "$(AuthTokenSetting)" $(PublishMyGetFeedKey)"
|
|
StandardOutputImportance="Normal" />
|
|
|
|
<!-- When you UseCommandProcessor FileName is ignored -->
|
|
<Run FileName="cmd"
|
|
Arguments="npm;publish;--registry;$(PublishMyGetNpmRegistryUrl);%(NpmPackageToPublish.Identity)"
|
|
MaxRetries="5"
|
|
UseCommandProcessor="true"
|
|
ContinueOnError="true">
|
|
<Output TaskParameter="ExitCode" ItemName="_NpmExitCodes" />
|
|
</Run>
|
|
|
|
<Exec Command="npm config delete $(AuthTokenSetting)"
|
|
StandardOutputImportance="Normal" />
|
|
|
|
<Error Text="Publishing npm modules failed" Condition="%(_NpmExitCodes.Identity) != 0" />
|
|
</Target>
|
|
|
|
<Target Name="PublishToAzureFeed"
|
|
DependsOnTargets="GetFilesToPublish"
|
|
Condition="'$(PublishToAzureFeed)' == 'true'">
|
|
|
|
<PropertyGroup>
|
|
<!--
|
|
Allow setting AzureBlobRelativePathBase to control the base path of all uploaded blobs.
|
|
AzureBlobRelativePathBase should end in a slash.
|
|
-->
|
|
<AzureBlobRelativePathBase Condition="'$(AzureBlobRelativePathBase)' != '' AND !HasTrailingSlash('$(AzureBlobRelativePathBase)')">$(AzureBlobRelativePathBase)/</AzureBlobRelativePathBase>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup Condition=" '$(AzureBlobRelativePathBase)' != '' ">
|
|
<FilesToPublish Update="@(FilesToPublish)" RelativeBlobPath="$(AzureBlobRelativePathBase)%(FilesToPublish.RelativeBlobPath)" />
|
|
</ItemGroup>
|
|
|
|
<RepoTasks.PublishToAzureBlob
|
|
AccountName="$(AzureAccountName)"
|
|
SharedAccessToken="$(AzureSharedAccessToken)"
|
|
ContainerName="$(AzureContainerName)"
|
|
Files="@(FilesToPublish)" />
|
|
</Target>
|
|
|
|
<Target Name="PublishToTransportFeed"
|
|
DependsOnTargets="ResolveCommitHash;GetFilesToPublish"
|
|
Condition="'$(PublishToTransportFeed)' == 'true'">
|
|
|
|
<ItemGroup>
|
|
<PackageToPublishToTransport
|
|
Include="@(PackageToPublish)"
|
|
Condition="'%(PackageToPublish.Category)' == 'ship'" />
|
|
|
|
<PackageToPublishToTransport
|
|
Include="@(PackageToPublish)"
|
|
ManifestArtifactData="NonShipping=true"
|
|
Condition="'%(PackageToPublish.Category)' != 'ship'" />
|
|
|
|
<FilesToPublishToTransport Include="@(NpmPackageToPublish)"
|
|
RelativeBlobPath="$(BlobFileRelativePathBase)%(NpmPackageToPublish.RelativeBlobPath)"
|
|
ManifestArtifactData="%(NpmPackageToPublish.ManifestArtifactData)" />
|
|
|
|
<!-- Filter aliased artifacts to workaround dotnet/buildtools#1855 -->
|
|
<FilesToPublishToTransport Include="@(FilesToPublish)"
|
|
RelativeBlobPath="$(BlobFileRelativePathBase)%(FilesToPublish.RelativeBlobPath)"
|
|
ManifestArtifactData="%(FilesToPublish.ManifestArtifactData)"
|
|
Condition=" '%(FilesToPublish.IsDuplicateUpload)' != 'true' " />
|
|
</ItemGroup>
|
|
|
|
|
|
<PushToBlobFeed ExpectedFeedUrl="$(PublishBlobFeedUrl)"
|
|
AccountKey="$(PublishBlobFeedKey)"
|
|
ItemsToPush="@(PackageToPublishToTransport)"
|
|
Overwrite="$(PushToBlobFeed_Overwrite)"
|
|
ManifestBranch="$(BuildBranch)"
|
|
ManifestBuildId="$(Version)"
|
|
ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
|
|
ManifestCommit="$(CommitHash)"
|
|
ManifestName="aspnet"
|
|
MaxClients="$(PushToBlobFeed_MaxClients)"
|
|
Condition="@(PackageToPublish->Count()) != 0" />
|
|
|
|
<PushToBlobFeed ExpectedFeedUrl="$(PublishBlobFeedUrl)"
|
|
AccountKey="$(PublishBlobFeedKey)"
|
|
ItemsToPush="@(FilesToPublishToTransport)"
|
|
PublishFlatContainer="true"
|
|
Overwrite="$(PushToBlobFeed_Overwrite)"
|
|
ManifestBranch="$(BuildBranch)"
|
|
ManifestBuildId="$(Version)"
|
|
ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
|
|
ManifestCommit="$(CommitHash)"
|
|
ManifestName="aspnet"
|
|
MaxClients="$(PushToBlobFeed_MaxClients)" />
|
|
</Target>
|
|
|
|
</Project>
|