From 723e2d854da159177d8b42a5d1ecf7202d54103b Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Tue, 30 Jan 2018 13:36:39 -0800 Subject: [PATCH 1/4] Update publish to include more metadata in the manifest (#826) * Update publish to include more metadata in the manifest * Update build tools to 2.1.0-preview1-1009 --- .vscode/settings.json | 5 +++-- build/Publish.targets | 11 +++++++---- build/dependencies.props | 3 +++ build/tasks/RepoTasks.csproj | 9 ++++++--- build/tasks/RepoTasks.tasks | 11 +++++++++++ korebuild-lock.txt | 4 ++-- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f381ae666e..89a3c7cca0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,6 +3,7 @@ "files.associations": { "*.*proj": "xml", "*.props": "xml", - "*.targets": "xml" + "*.targets": "xml", + "*.tasks": "xml" } -} \ No newline at end of file +} diff --git a/build/Publish.targets b/build/Publish.targets index 34d9649dd1..6b35b0ccb5 100644 --- a/build/Publish.targets +++ b/build/Publish.targets @@ -10,6 +10,7 @@ $(IntermediateDir)$(LatestRuntimeVersionFileName) + ResolveCommitHash; PrepareOutputPaths; GetFilesToPublish; CopyToPublishArtifacts; @@ -178,11 +179,11 @@ @@ -200,7 +201,8 @@ AccountKey="$(PublishBlobFeedKey)" ItemsToPush="@(PackagesToPublishToTransport)" Overwrite="$(PushToBlobFeed_Overwrite)" - ManifestBuildId="$(BuildNumber)" + ManifestBuildId="$(Version)" + ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)" ManifestCommit="$(CommitHash)" ManifestName="aspnet" MaxClients="$(PushToBlobFeed_MaxClients)" @@ -211,7 +213,8 @@ ItemsToPush="@(FilesToPublishToTransport)" PublishFlatContainer="true" Overwrite="$(PushToBlobFeed_Overwrite)" - ManifestBuildId="$(BuildNumber)" + ManifestBuildId="$(Version)" + ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)" ManifestCommit="$(CommitHash)" ManifestName="aspnet" MaxClients="$(PushToBlobFeed_MaxClients)" /> diff --git a/build/dependencies.props b/build/dependencies.props index 181e4352f0..f8f55a2a7a 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -1,5 +1,8 @@  + 2.1.0-prerelease-02430-04 + 2.0.0 + 8.7.0 0.10.11 4.3.1 2.4.337 diff --git a/build/tasks/RepoTasks.csproj b/build/tasks/RepoTasks.csproj index 4c4e3556e8..aeff655cbf 100644 --- a/build/tasks/RepoTasks.csproj +++ b/build/tasks/RepoTasks.csproj @@ -1,14 +1,17 @@ - + + netstandard2.0 + https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json - - + + + diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index d579d64845..51d38ac01d 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -20,4 +20,15 @@ + + + + $(NUGET_PACKAGES) + $(USERPROFILE)\.nuget\packages\ + $(HOME)\.nuget\packages\ + $([MSBuild]::NormalizeDirectory($(NuGetPackagesPath))) + <_MicrosoftDotNetBuildTasksFeedTaskDir>$(NuGetPackagesPath)microsoft.dotnet.build.tasks.feed\$(DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion.ToLowerInvariant())\build\netstandard1.5\ + + + diff --git a/korebuild-lock.txt b/korebuild-lock.txt index 207e91b0f9..bd8de72dd2 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:2.1.0-preview1-1008 -commithash:e82dffbe8cf67ad9c07b4385cb6a1a1fc8be9fb1 +version:2.1.0-preview1-1009 +commithash:75ca924dfbd673c38841025b04c4dcd93b84f56d From fe2628a68f8b70578239ae2d4b60853ec93348f1 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Tue, 30 Jan 2018 13:15:51 -0800 Subject: [PATCH 2/4] Mark Logging.Analyzers as shipoob so it gets signed --- build/artifacts.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/artifacts.props b/build/artifacts.props index a5f2f7f01f..aa7acb7ecc 100644 --- a/build/artifacts.props +++ b/build/artifacts.props @@ -256,7 +256,7 @@ - + From 303ff3d022b486b1f5c4064142dbd9b403799494 Mon Sep 17 00:00:00 2001 From: "ASP.NET CI" Date: Tue, 30 Jan 2018 14:15:31 -0800 Subject: [PATCH 3/4] Updating BuildTools from 2.1.0-preview1-1009 to 2.1.0-preview1-1010 [auto-updated: buildtools] --- korebuild-lock.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/korebuild-lock.txt b/korebuild-lock.txt index bd8de72dd2..851bfbf203 100644 --- a/korebuild-lock.txt +++ b/korebuild-lock.txt @@ -1,2 +1,2 @@ -version:2.1.0-preview1-1009 +version:2.1.0-preview1-1010 commithash:75ca924dfbd673c38841025b04c4dcd93b84f56d From 05174814f6f884b837b46e2611a23d61648c0dd0 Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Tue, 30 Jan 2018 15:22:31 -0800 Subject: [PATCH 4/4] Ensure the LZMA includes CLI global tools .nupkg, nupkg.sha512, and .nuspec files (#829) --- build/PackageArchive.targets | 11 +-- build/tasks/CreateNuGetV3FolderFeed.cs | 95 ++++++++++++++++++++++++++ build/tasks/RepoTasks.tasks | 1 + 3 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 build/tasks/CreateNuGetV3FolderFeed.cs diff --git a/build/PackageArchive.targets b/build/PackageArchive.targets index 4970e4bb95..5c3f4775de 100644 --- a/build/PackageArchive.targets +++ b/build/PackageArchive.targets @@ -55,19 +55,14 @@ - + - <_DotnetToolPackages Update="@(_DotnetToolPackages)"> - $([System.String]::new('%(PackageId).%(Version)').ToLowerInvariant()) - $([System.String]::new('%(PackageId)/%(Version)').ToLowerInvariant()) - + <_DotnetToolPackages Include="$(MetapackageRestoreSource)%(_DotnetToolPackageId.Identity).%(_DotnetToolPackageId.Version).nupkg" /> - - - + diff --git a/build/tasks/CreateNuGetV3FolderFeed.cs b/build/tasks/CreateNuGetV3FolderFeed.cs new file mode 100644 index 0000000000..8d76e3f165 --- /dev/null +++ b/build/tasks/CreateNuGetV3FolderFeed.cs @@ -0,0 +1,95 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using NuGet.Packaging; +using NuGet.Packaging.Core; +using NuGet.Versioning; + +namespace RepoTasks +{ + /// + /// Layouts nuget packages as a V3 feed + /// + public class CreateNuGetV3FolderFeed : Task + { + [Required] + public ITaskItem[] Packages { get; set; } + + [Required] + public string DestinationFolder { get; set; } + + public bool Overwrite { get; set; } + + public override bool Execute() + { + Directory.CreateDirectory(DestinationFolder); + + foreach (var file in Packages) + { + PackageIdentity identity; + using (var reader = new PackageArchiveReader(file.ItemSpec)) + { + identity = reader.GetIdentity(); + } + + Log.LogMessage(MessageImportance.High, "Adding {0} to feed '{1}'", identity, DestinationFolder); + + var packageFolder = Path.Combine(DestinationFolder, identity.Id.ToLowerInvariant(), identity.Version.ToNormalizedString()); + var nuspecFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nuspec"); + var nupkgFile = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg"); + var sha512File = Path.Combine(packageFolder, $"{identity.Id.ToLowerInvariant()}.{identity.Version.ToNormalizedString()}.nupkg.sha512"); + + if (!Overwrite && File.Exists(nuspecFile)) + { + Log.LogError("File already exists: {0}", nuspecFile); + continue; + } + if (!Overwrite && File.Exists(nupkgFile)) + { + Log.LogError("File already exists: {0}", nupkgFile); + continue; + } + if (!Overwrite && File.Exists(sha512File)) + { + Log.LogError("File already exists: {0}", sha512File); + continue; + } + + Directory.CreateDirectory(packageFolder); + using (var reader = new PackageArchiveReader(file.ItemSpec)) + using (var nuspec = File.Create(nuspecFile)) + using (var metadata = reader.GetNuspec()) + { + Log.LogMessage("Creating {0}", nuspecFile); + metadata.CopyTo(nuspec); + } + + Log.LogMessage("Copying {0}", nupkgFile); + File.Copy(file.ItemSpec, nupkgFile); + Log.LogMessage("Creating {0}", sha512File); + File.WriteAllText(sha512File, GetFileHash(file.ItemSpec)); + } + + return !Log.HasLoggedErrors; + } + + private static string GetFileHash(string filePath) + { + byte[] hash; + + using (var algorithm = new SHA512Managed()) + using (var stream = File.OpenRead(filePath)) + { + hash = algorithm.ComputeHash(stream); + } + + return Convert.ToBase64String(hash); + } + } +} diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index 51d38ac01d..389a0f71f2 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -11,6 +11,7 @@ +