183 lines
8.2 KiB
XML
183 lines
8.2 KiB
XML
<Project>
|
|
|
|
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
|
|
|
|
<PropertyGroup>
|
|
<!-- TFM doesn't matter. These settings are required to make NuGet happy so we can restore required MSBuild packages. -->
|
|
<TargetFramework>netcoreapp3.0</TargetFramework>
|
|
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
|
|
<ManifestsPath>$(ArtifactsDir)manifests\</ManifestsPath>
|
|
<MaestroApiEndpoint Condition="'$(MaestroApiEndpoint)' == ''">https://maestro-prod.westus2.cloudapp.azure.com</MaestroApiEndpoint>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.DotNet.Build.Tasks.Feed" Version="2.2.0-beta.19061.6" />
|
|
<PackageReference Include="Microsoft.DotNet.Maestro.Tasks" Version="1.1.0-beta.19065.2" />
|
|
</ItemGroup>
|
|
|
|
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
|
|
|
<PropertyGroup>
|
|
<PublishDependsOn>
|
|
GetFilesToPublish;
|
|
GenerateBuildAssetManifest;
|
|
PublishToAzureFeed;
|
|
PublishToMyGet;
|
|
PublishToBuildAssetRegistry;
|
|
</PublishDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="Publish" DependsOnTargets="$(PublishDependsOn)" />
|
|
|
|
<Target Name="GetFilesToPublish">
|
|
<ItemGroup>
|
|
<!-- Installer output files with specific metadata. -->
|
|
<_FilesToPublish Include="$(InstallersOutputPath)*.txt">
|
|
<ContentType>text/plain</ContentType>
|
|
</_FilesToPublish>
|
|
|
|
<_FilesToPublish Include="$(InstallersOutputPath)*.version">
|
|
<ContentType>text/plain</ContentType>
|
|
<CacheControl>no-cache, no-store, must-revalidate</CacheControl>
|
|
</_FilesToPublish>
|
|
|
|
<_FilesToPublish Include="$(InstallersOutputPath)*.svg">
|
|
<CacheControl>no-cache, no-store, must-revalidate</CacheControl>
|
|
<ContentType>image/svg+xml</ContentType>
|
|
</_FilesToPublish>
|
|
|
|
<!-- All other installer files. -->
|
|
<_FilesToPublish Include="$(InstallersOutputPath)*" Exclude="@(_FilesToPublish)" />
|
|
|
|
<!-- Java packages -->
|
|
<_FilesToPublish Include="$(ArtifactsShippingPackagesDir)*.jar;$(ArtifactsShippingPackagesDir)*.pom">
|
|
<BlobBasePath>aspnetcore/jar/$(PackageVersion)/</BlobBasePath>
|
|
</_FilesToPublish>
|
|
|
|
<!-- NPM packages -->
|
|
<NpmPackageToPublish Include="$(ArtifactsShippingPackagesDir)*.tgz">
|
|
<BlobBasePath>aspnetcore/npm/$(PackageVersion)/</BlobBasePath>
|
|
</NpmPackageToPublish>
|
|
<_FilesToPublish Include="@(NpmPackageToPublish)" />
|
|
|
|
<!--
|
|
Transform the intermediate item group into the final group.
|
|
You can't use globbing _and_ set metadata using FileName and Extension at the same time. MSBuild quirks are fun.
|
|
-->
|
|
<FilesToPublish Include="@(_FilesToPublish)">
|
|
<RelativeBlobPath Condition="'%(_FilesToPublish.BlobBasePath)' != ''">%(_FilesToPublish.BlobBasePath)%(_FilesToPublish.FileName)%(_FilesToPublish.Extension)</RelativeBlobPath>
|
|
<RelativeBlobPath Condition="'%(_FilesToPublish.BlobBasePath)' == ''">aspnetcore/Runtime/$(PackageVersion)/%(_FilesToPublish.FileName)%(_FilesToPublish.Extension)</RelativeBlobPath>
|
|
</FilesToPublish>
|
|
<_FilesToPublish Remove="@(_FilesToPublish)" />
|
|
|
|
<PackageToPublish Include="$(ArtifactsShippingPackagesDir)*.symbols.nupkg" IsSymbolsPackage="true" />
|
|
<PackageToPublish Include="$(ArtifactsShippingPackagesDir)*.nupkg" Exclude="@(PackageToPublish)" />
|
|
</ItemGroup>
|
|
|
|
<!--
|
|
'Internal' packages are used to transfer bits to partner teams, and should not be used by customers.
|
|
Publishing these can be disabled.
|
|
-->
|
|
<ItemGroup Condition=" '$(PublishInternalPackages)' != 'false' ">
|
|
<PackageToPublish Include="$(ArtifactsNonShippingPackagesDir)*.symbols.nupkg" IsSymbolsPackage="true">
|
|
<ManifestArtifactData>NonShipping=true</ManifestArtifactData>
|
|
</PackageToPublish>
|
|
<PackageToPublish Include="$(ArtifactsNonShippingPackagesDir)*.nupkg" Exclude="@(PackageToPublish)">
|
|
<ManifestArtifactData>NonShipping=true</ManifestArtifactData>
|
|
</PackageToPublish>
|
|
</ItemGroup>
|
|
|
|
<Error Text="Missing required metadata 'RelativeBlobPath' for FilesToPublish: @(FilesToPublish)" Condition="'@(FilesToPublish)' != '' AND '%(RelativeBlobPath)' == ''" />
|
|
</Target>
|
|
|
|
<UsingTask TaskName="KoreBuild.Tasks.PushNuGetPackages" AssemblyFile="$(KoreBuildTasksDll)" />
|
|
|
|
<Target Name="PublishToMyGet"
|
|
DependsOnTargets="GetFilesToPublish"
|
|
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 Text="No packages found to publish" Condition="@(PackageToPublish->Count()) == 0" />
|
|
|
|
<PushNuGetPackages Condition="'%(PackageToPublish.IsSymbolsPackage)' != 'true' AND @(PackageToPublish->Count()) != 0"
|
|
Packages="@(PackageToPublish)"
|
|
TimeoutSeconds="300"
|
|
Feed="$(PublishMyGetFeedUrl)"
|
|
ApiKey="$(PublishMyGetFeedKey)" />
|
|
|
|
<PushNuGetPackages Condition="'%(PackageToPublish.IsSymbolsPackage)' == 'true' AND @(PackageToPublish->Count()) != 0"
|
|
Packages="@(PackageToPublish)"
|
|
TimeoutSeconds="300"
|
|
Feed="$(PublishMyGetSymbolsFeedUrl)"
|
|
ApiKey="$(PublishMyGetFeedKey)" />
|
|
|
|
<PropertyGroup>
|
|
<AuthTokenSetting>$(PublishMyGetNpmRegistryUrl.Replace("https:", "")):_authToken</AuthTokenSetting>
|
|
</PropertyGroup>
|
|
|
|
<Message Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
|
Text="Skipping NPM publish because there are no npm packages to publish."
|
|
Importance="high" />
|
|
|
|
<Exec Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
|
Command="npm config set "$(AuthTokenSetting)" $(PublishMyGetFeedKey)"
|
|
StandardOutputImportance="Normal" />
|
|
|
|
<Exec Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
|
Command="npm publish --registry "$(PublishMyGetNpmRegistryUrl)" "%(NpmPackageToPublish.Identity)""
|
|
ContinueOnError="true">
|
|
<Output TaskParameter="ExitCode" ItemName="_NpmExitCodes" />
|
|
</Exec>
|
|
|
|
<Exec Condition=" @(NpmPackageToPublish->Count()) != 0 "
|
|
Command="npm config delete $(AuthTokenSetting)"
|
|
StandardOutputImportance="Normal" />
|
|
|
|
<Error Text="Publishing npm modules failed" Condition=" @(NpmPackageToPublish->Count()) != 0 AND %(_NpmExitCodes.Identity) != 0" />
|
|
</Target>
|
|
|
|
<Target Name="PublishToAzureFeed"
|
|
DependsOnTargets="GetFilesToPublish"
|
|
Condition="'$(PublishToAzureFeed)' == 'true'">
|
|
|
|
<RepoTasks.PublishToAzureBlob
|
|
AccountName="$(AzureAccountName)"
|
|
SharedAccessToken="$(AzureSharedAccessToken)"
|
|
ContainerName="$(AzureContainerName)"
|
|
Files="@(FilesToPublish)" />
|
|
</Target>
|
|
|
|
<Target Name="GenerateBuildAssetManifest"
|
|
DependsOnTargets="GetFilesToPublish;ResolveRepositoryBranch;ResolveCommitHash">
|
|
|
|
<GenerateBuildManifest
|
|
Artifacts="@(PackageToPublish);@(FilesToPublish)"
|
|
OutputPath="$(ManifestsPath)aspnetcore-$(SharedFxRid)-$(PackageVersion).xml"
|
|
BuildId="$(PackageVersion)"
|
|
BuildData="Location=https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json"
|
|
RepoUri="$(RepositoryUrl)"
|
|
RepoBranch="$(RepositoryBranch)"
|
|
RepoCommit="$(RepositoryCommit)" />
|
|
</Target>
|
|
|
|
<UsingTask TaskName="PushMetadataToBuildAssetRegistry" AssemblyFile="$(PkgMicrosoft_DotNet_Maestro_Tasks)\tools\netcoreapp2.1\Microsoft.DotNet.Maestro.Tasks.dll"/>
|
|
|
|
<Target Name="PublishToBuildAssetRegistry"
|
|
DependsOnTargets="GenerateBuildAssetManifest"
|
|
Condition="'$(PublishToBuildAssetRegistry)' == 'true'">
|
|
|
|
<Error Text="Missing required property: MaestroApiEndpoint" Condition=" '$(MaestroApiEndpoint)' == '' "/>
|
|
<Error Text="Missing required property: BuildAssetRegistryToken" Condition=" '$(BuildAssetRegistryToken)' == '' "/>
|
|
|
|
<PushMetadataToBuildAssetRegistry
|
|
ManifestsPath="$(ManifestsPath)"
|
|
BuildAssetRegistryToken="$(BuildAssetRegistryToken)"
|
|
MaestroApiEndpoint="$(MaestroApiEndpoint)" />
|
|
</Target>
|
|
|
|
</Project>
|