React to MSBuild breaking changes and remove ProdCon v1 variables (#4161)

This should unblock the consumption of the latest .NET Core SDK, which includes breaking changes in MSBuild. We don't _really_ need the MSBuild APIs which were broken because ProdCon v1 is dead. This removes the unused ProdCon v1 tasks and targets.
This commit is contained in:
Nate McMaster 2018-11-20 11:34:53 -08:00 committed by GitHub
parent 33095908b9
commit 71ca1faa6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 3 additions and 618 deletions

View File

@ -15,16 +15,8 @@
GetFilesToPublish;
PublishToLocalFolder;
PublishToAzureFeed;
PublishToTransportFeed;
PublishToMyGet;
</PublishDependsOn>
<!-- Settings for pushing to the transport feed -->
<PushToBlobFeed_UploadTimeoutMinutes>10</PushToBlobFeed_UploadTimeoutMinutes>
<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)" />
@ -74,52 +66,43 @@
<!-- 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)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>
@ -127,7 +110,6 @@
<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>
@ -135,7 +117,6 @@
<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>
@ -154,7 +135,6 @@
<FilesToPublish Include="$(DependencyPackagesDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'JavaJar'">
<RelativeBlobPath>$(JarBlobBasePath)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)</RelativeBlobPath>
<ManifestArtifactData>Type=JavaJar</ManifestArtifactData>
</FilesToPublish>
<FilesToPublish Include="$(DependencyAssetsDir)%(ArtifactInfo.FileName)%(ArtifactInfo.Extension)" Condition="'%(ArtifactInfo.ArtifactType)' == 'MavenPOM'">
@ -163,7 +143,6 @@
<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>
@ -274,57 +253,4 @@
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)"
UploadTimeoutInMinutes="$(PushToBlobFeed_UploadTimeoutMinutes)"
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)"
UploadTimeoutInMinutes="$(PushToBlobFeed_UploadTimeoutMinutes)"
ManifestBranch="$(BuildBranch)"
ManifestBuildId="$(Version)"
ManifestBuildData="ProductVersion=$(PackageVersion);UniverseCommitHash=$(CommitHash)"
ManifestCommit="$(CommitHash)"
ManifestName="aspnet"
MaxClients="$(PushToBlobFeed_MaxClients)" />
</Target>
</Project>

View File

@ -86,7 +86,6 @@
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:BuildNumber=$(BuildNumber)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:Configuration=$(Configuration)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /p:IsFinalBuild=$(IsFinalBuild)</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) /noconsolelogger '/l:RepoTasks.FlowLogger,$(MSBuildThisFileDirectory)tasks\bin\publish\RepoTasks.dll;Summary;FlowId=$(RepositoryToBuild)'</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:DotNetAssetRootAccessTokenSuffix=$(DotNetAssetRootAccessTokenSuffix)'</RepositoryBuildArguments>
<RepositoryBuildArguments>$(RepositoryBuildArguments) '/p:DotNetAssetRootUrl=$(DotNetAssetRootUrl)'</RepositoryBuildArguments>
<RepositoryBuildArguments Condition=" '$(SkipTestsDueToMissingSharedFx)' == 'true' ">$(RepositoryBuildArguments) /p:SkipAspNetCoreRuntimeInstall=true</RepositoryBuildArguments>

View File

@ -1,10 +1,10 @@
<Project>
<!-- These package versions may be overridden or updated by automation. -->
<PropertyGroup Label="Package Versions: Auto" Condition=" '$(DotNetPackageVersionPropsPath)' == '' ">
<PropertyGroup Label="Package Versions: .NET Core dependencies">
<!-- Packages from dotnet/core-setup -->
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0-preview-27117-01</MicrosoftExtensionsDependencyModelPackageVersion>
<MicrosoftNETCoreAppPackageVersion>3.0.0-preview-27117-01</MicrosoftNETCoreAppPackageVersion>
<MicrosoftNETCoreApp30PackageVersion>$(MicrosoftNETCoreAppPackageVersion)</MicrosoftNETCoreApp30PackageVersion>
<MicrosoftNETCoreDotNetAppHostPackageVersion>3.0.0-preview-27117-01</MicrosoftNETCoreDotNetAppHostPackageVersion>
<MicrosoftDotNetPlatformAbstractionsPackageVersion>3.0.0-preview-27117-01</MicrosoftDotNetPlatformAbstractionsPackageVersion>
@ -114,15 +114,9 @@
<MicrosoftEntityFrameworkCorePackageVersion>3.0.0-preview.18569.2</MicrosoftEntityFrameworkCorePackageVersion>
</PropertyGroup>
<Import Project="$(DotNetPackageVersionPropsPath)" Condition="'$(DotNetPackageVersionPropsPath)' != ''" />
<Import Project="dependencies.folderbuilds.props" Condition=" '$(IsUniverseBuild)' != 'true' AND '$(DotNetPackageVersionPropsPath)' == ''" />
<PropertyGroup>
<!-- Assign this variable last because it may be updated from DotNetPackageVersionPropsPath as MicrosoftNETCoreAppPackageVersion. -->
<MicrosoftNETCoreApp30PackageVersion Condition="'$(MicrosoftNETCoreAppPackageVersion)' != ''">$(MicrosoftNETCoreAppPackageVersion)</MicrosoftNETCoreApp30PackageVersion>
<!-- Assign this variable to ensure they are consistent. -->
<MicrosoftNETCoreAppPackageVersion>$(MicrosoftNETCoreApp30PackageVersion)</MicrosoftNETCoreAppPackageVersion>
<!-- Determined by build tools -->
<InternalAspNetCoreSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSdkPackageVersion>
<InternalAspNetCoreSiteExtensionSdkPackageVersion>$(KoreBuildVersion)</InternalAspNetCoreSiteExtensionSdkPackageVersion>
@ -148,7 +142,6 @@
<BenchmarksOnlyPomeloEntityFrameworkCoreMySqlPackageVersion>2.1.1</BenchmarksOnlyPomeloEntityFrameworkCoreMySqlPackageVersion>
<CastleCorePackageVersion>4.2.1</CastleCorePackageVersion>
<DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion>2.2.0-preview1-03124-01</DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion>
<DevDependency_MicrosoftExtensionsDependencyModelPackageVersion>2.1.0</DevDependency_MicrosoftExtensionsDependencyModelPackageVersion>
<DevDependency_WindowsAzureStoragePackageVersion>8.7.0</DevDependency_WindowsAzureStoragePackageVersion>
<FSharpCorePackageVersion>4.2.1</FSharpCorePackageVersion>

View File

@ -85,9 +85,6 @@
<PublishToMyGet Condition=" $(PublishType.Contains('myget')) ">true</PublishToMyGet>
<!-- azure = non-orchestrated builds -->
<PublishToAzureFeed Condition="$(PublishType.Contains('azure'))">true</PublishToAzureFeed>
<!-- blob = orchestrated builds -->
<PublishToTransportFeed Condition="$(PublishType.Contains('blob'))">true</PublishToTransportFeed>
</PropertyGroup>
<Import Project="runtimes.props" />

View File

@ -22,7 +22,6 @@
<CompileDependsOn>$(CompileDependsOn);BuildProjects;PackSharedSources</CompileDependsOn>
<CompileDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(CompileDependsOn);PackProjects;BuildRepositories;BuildSharedFx</CompileDependsOn>
<PackageDependsOn Condition=" '$(_ProjectsOnly)' == 'true'">$(PackageDependsOn);PackProjects</PackageDependsOn>
<PackageDependsOn Condition="'$(TestOnly)' != 'true' AND '$(_ProjectsOnly)' != 'true'">$(PackageDependsOn);CheckExpectedPackagesExist</PackageDependsOn>
<PackageDependsOn Condition="'$(TestOnly)' != 'true'">$(PackageDependsOn);CodeSign</PackageDependsOn>
<TestDependsOn>$(TestDependsOn);TestProjects</TestDependsOn>
<TestDependsOn Condition="'$(_ProjectsOnly)' != 'true'">$(TestDependsOn);_TestRepositories</TestDependsOn>
@ -303,10 +302,6 @@
</Target>
<Target Name="VerifyExternalDependencyConfig">
<RepoTasks.CheckVersionOverrides DotNetPackageVersionPropsPath="$(DotNetPackageVersionPropsPath)"
DependenciesFile="$(MSBuildThisFileDirectory)dependencies.props"
Condition="'$(DotNetPackageVersionPropsPath)' != ''" />
<Error Text="Missing Version metadata for the following external dependencies: %0A - @(ExternalDependency->WithMetadataValue('Version', ''), '%0A - '). "
Condition=" @(ExternalDependency->WithMetadataValue('Version', '')->Count()) != 0 " />
</Target>
@ -314,14 +309,6 @@
<Target Name="FastCheck"
DependsOnTargets="ComputeGraph;VerifyPackageArtifactConfig;VerifyAllReposHaveNuGetPackageVerifier" />
<Target Name="CheckExpectedPackagesExist">
<ItemGroup>
<PackageArtifactFile Include="$(BuildDir)*.nupkg" Exclude="$(BuildDir)*.symbols.nupkg" />
</ItemGroup>
<RepoTasks.CheckExpectedPackagesExist Packages="@(PackageArtifact)" Files="@(PackageArtifactFile)" />
</Target>
<Target Name="VerifyAllReposHaveNuGetPackageVerifier" DependsOnTargets="_PrepareRepositories">
<Error Condition="'%(Repository.Identity)' != '' AND !Exists('%(Repository.RootPath)NuGetPackageVerifier.json')"
Text="Repository %(Repository.Identity) is missing NuGetPackageVerifier.json. Expected file to exist in %(Repository.RootPath)NuGetPackageVerifier.json" />

View File

@ -1,69 +0,0 @@
// 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.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.Build.Framework;
using NuGet.Packaging;
using NuGet.Packaging.Core;
using RepoTasks.Utilities;
namespace RepoTasks
{
public class CheckExpectedPackagesExist : Microsoft.Build.Utilities.Task
{
/// <summary>
/// The item group containing the nuget packages to split in different folders.
/// </summary>
[Required]
public ITaskItem[] Packages { get; set; }
[Required]
public ITaskItem[] Files { get; set; }
public override bool Execute()
{
if (Files?.Length == 0)
{
Log.LogError("No packages were found.");
return false;
}
var expectedPackages = new HashSet<string>(Packages.Select(i => i.ItemSpec), StringComparer.OrdinalIgnoreCase);
foreach (var file in Files)
{
PackageIdentity identity;
using (var reader = new PackageArchiveReader(file.ItemSpec))
{
identity = reader.GetIdentity();
}
if (!expectedPackages.Contains(identity.Id))
{
Log.LogError($"Unexpected package artifact with id: {identity.Id}");
continue;
}
expectedPackages.Remove(identity.Id);
}
if (expectedPackages.Count != 0)
{
var error = new StringBuilder();
foreach (var id in expectedPackages)
{
error.Append(" - ").AppendLine(id);
}
Log.LogError($"Expected the following packages, but they were not found:" + error.ToString());
return false;
}
return !Log.HasLoggedErrors;
}
}
}

View File

@ -1,45 +0,0 @@
// 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.Linq;
using Microsoft.Build.Construction;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace RepoTasks
{
public class CheckVersionOverrides : Task
{
[Required]
public string DotNetPackageVersionPropsPath { get; set; }
[Required]
public string DependenciesFile { get; set; }
public override bool Execute()
{
Log.LogMessage($"Verifying versions set in {DotNetPackageVersionPropsPath} match expected versions set in {DependenciesFile}");
var versionOverrides = ProjectRootElement.Open(DotNetPackageVersionPropsPath);
var dependencies = ProjectRootElement.Open(DependenciesFile);
var pinnedVersions = dependencies.PropertyGroups
.Where(p => string.Equals("Package Versions: Pinned", p.Label))
.SelectMany(p => p.Properties)
.ToDictionary(p => p.Name, p => p.Value, StringComparer.OrdinalIgnoreCase);
foreach (var prop in versionOverrides.Properties)
{
if (pinnedVersions.TryGetValue(prop.Name, out var pinnedVersion))
{
if (!string.Equals(pinnedVersion, prop.Value, StringComparison.OrdinalIgnoreCase))
{
Log.LogError($"The imported package version props file conflicts with a pinned version variable {prop.Name}. Imported value: {prop.Value}, Pinned value: {pinnedVersion}");
}
}
}
return !Log.HasLoggedErrors;
}
}
}

View File

@ -1,61 +0,0 @@
// 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.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Logging;
namespace RepoTasks
{
public class FlowLogger : ConsoleLogger
{
private volatile bool _initialized;
public FlowLogger()
{
}
public override void Initialize(IEventSource eventSource, int nodeCount)
{
PreInit(eventSource);
base.Initialize(eventSource, nodeCount);
}
public override void Initialize(IEventSource eventSource)
{
PreInit(eventSource);
base.Initialize(eventSource);
}
private void PreInit(IEventSource eventSource)
{
if (_initialized) return;
_initialized = true;
var flowId = GetFlowId();
var prefix = $"{flowId,-22}| ";
var write = WriteHandler;
WriteHandler = msg => write(prefix + msg);
eventSource.BuildStarted += (o, e) =>
{
WriteHandler(e.Message + Environment.NewLine);
};
}
private string GetFlowId()
{
var parameters = Parameters?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (parameters == null || parameters.Length == 0)
{
return null;
}
const string flowIdParamName = "FlowId=";
return parameters
.FirstOrDefault(p => p.StartsWith(flowIdParamName, StringComparison.Ordinal))
?.Substring(flowIdParamName.Length);
}
}
}

View File

@ -1,200 +0,0 @@
// 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 Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
using NuGet.Common;
namespace NuGet.Build
{
/// <summary>
/// TaskLoggingHelper -> ILogger
/// </summary>
internal class MSBuildLogger : LoggerBase, Common.ILogger
{
private readonly TaskLoggingHelper _taskLogging;
private delegate void LogMessageWithDetails(string subcategory,
string code,
string helpKeyword,
string file,
int lineNumber,
int columnNumber,
int endLineNumber,
int endColumnNumber,
MessageImportance importance,
string message,
params object[] messageArgs);
private delegate void LogErrorWithDetails(string subcategory,
string code,
string helpKeyword,
string file,
int lineNumber,
int columnNumber,
int endLineNumber,
int endColumnNumber,
string message,
params object[] messageArgs);
private delegate void LogMessageAsString(MessageImportance importance,
string message,
params object[] messageArgs);
private delegate void LogErrorAsString(string message,
params object[] messageArgs);
public MSBuildLogger(TaskLoggingHelper taskLogging)
{
_taskLogging = taskLogging ?? throw new ArgumentNullException(nameof(taskLogging));
}
public override void Log(ILogMessage message)
{
if (DisplayMessage(message.Level))
{
if (RuntimeEnvironmentHelper.IsMono)
{
LogForMono(message);
return;
}
else
{
var logMessage = message as IRestoreLogMessage;
if (logMessage == null)
{
logMessage = new RestoreLogMessage(message.Level, message.Message)
{
Code = message.Code,
FilePath = message.ProjectPath
};
}
LogForNonMono(logMessage);
}
}
}
/// <summary>
/// Log using with metadata for non mono platforms.
/// </summary>
private void LogForNonMono(IRestoreLogMessage message)
{
switch (message.Level)
{
case LogLevel.Error:
LogError(message, _taskLogging.LogError, _taskLogging.LogError);
break;
case LogLevel.Warning:
LogError(message, _taskLogging.LogWarning, _taskLogging.LogWarning);
break;
case LogLevel.Minimal:
LogMessage(message, MessageImportance.High, _taskLogging.LogMessage, _taskLogging.LogMessage);
break;
case LogLevel.Information:
LogMessage(message, MessageImportance.Normal, _taskLogging.LogMessage, _taskLogging.LogMessage);
break;
case LogLevel.Debug:
case LogLevel.Verbose:
default:
// Default to LogLevel.Debug and low importance
LogMessage(message, MessageImportance.Low, _taskLogging.LogMessage, _taskLogging.LogMessage);
break;
}
}
/// <summary>
/// Log using basic methods to avoid missing methods on mono.
/// </summary>
private void LogForMono(ILogMessage message)
{
switch (message.Level)
{
case LogLevel.Error:
_taskLogging.LogError(message.Message);
break;
case LogLevel.Warning:
_taskLogging.LogWarning(message.Message);
break;
case LogLevel.Minimal:
_taskLogging.LogMessage(MessageImportance.High, message.Message);
break;
case LogLevel.Information:
_taskLogging.LogMessage(MessageImportance.Normal, message.Message);
break;
case LogLevel.Debug:
case LogLevel.Verbose:
default:
// Default to LogLevel.Debug and low importance
_taskLogging.LogMessage(MessageImportance.Low, message.Message);
break;
}
return;
}
private void LogMessage(IRestoreLogMessage logMessage,
MessageImportance importance,
LogMessageWithDetails logWithDetails,
LogMessageAsString logAsString)
{
if (logMessage.Code > NuGetLogCode.Undefined)
{
// NuGet does not currently have a subcategory while throwing logs, hence string.Empty
logWithDetails(string.Empty,
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
logMessage.FilePath,
logMessage.StartLineNumber,
logMessage.StartColumnNumber,
logMessage.EndLineNumber,
logMessage.EndColumnNumber,
importance,
logMessage.Message);
}
else
{
logAsString(importance, logMessage.Message);
}
}
private void LogError(IRestoreLogMessage logMessage,
LogErrorWithDetails logWithDetails,
LogErrorAsString logAsString)
{
if (logMessage.Code > NuGetLogCode.Undefined)
{
// NuGet does not currently have a subcategory while throwing logs, hence string.Empty
logWithDetails(string.Empty,
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
Enum.GetName(typeof(NuGetLogCode), logMessage.Code),
logMessage.FilePath,
logMessage.StartLineNumber,
logMessage.StartColumnNumber,
logMessage.EndLineNumber,
logMessage.EndColumnNumber,
logMessage.Message);
}
else
{
logAsString(logMessage.Message);
}
}
public override System.Threading.Tasks.Task LogAsync(ILogMessage message)
{
Log(message);
return System.Threading.Tasks.Task.FromResult(0);
}
}
}

View File

@ -11,7 +11,6 @@
<PackageReference Include="NuGet.Build.Tasks" Version="$(NuGetInMSBuildVersion)" PrivateAssets="All" />
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="$(DevDependency_MicrosoftExtensionsDependencyModelPackageVersion)" PrivateAssets="All" />
<PackageReference Include="WindowsAzure.Storage" Version="$(DevDependency_WindowsAzureStoragePackageVersion)" />
<PackageReference Include="Microsoft.DotNet.Build.Tasks.Feed" Version="$(DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion)" ExcludeAssets="Build" />
</ItemGroup>
<Import Project="$(RepoTasksSdkPath)\Sdk.targets" Condition="'$(RepoTasksSdkPath)' != '' "/>

View File

@ -3,8 +3,6 @@
<_RepoTaskAssembly>$(MSBuildThisFileDirectory)bin\publish\RepoTasks.dll</_RepoTaskAssembly>
</PropertyGroup>
<UsingTask TaskName="RepoTasks.CheckExpectedPackagesExist" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CheckVersionOverrides" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.CreateLzma" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GetDocXmlFiles" AssemblyFile="$(_RepoTaskAssembly)" />
@ -12,15 +10,4 @@
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.GenerateSharedFrameworkMetadataFiles" AssemblyFile="$(_RepoTaskAssembly)" />
<UsingTask TaskName="RepoTasks.PublishToAzureBlob" AssemblyFile="$(_RepoTaskAssembly)" />
<!-- tools from dotnet-buildtools -->
<PropertyGroup>
<NuGetPackagesPath>$(NUGET_PACKAGES)</NuGetPackagesPath>
<NuGetPackagesPath Condition=" '$(NuGetPackagesPath)' == '' AND '$(USERPROFILE)' != '' ">$(USERPROFILE)\.nuget\packages\</NuGetPackagesPath>
<NuGetPackagesPath Condition=" '$(NuGetPackagesPath)' == '' AND '$(HOME)' != '' ">$(HOME)\.nuget\packages\</NuGetPackagesPath>
<NuGetPackagesPath>$([MSBuild]::NormalizeDirectory($(NuGetPackagesPath)))</NuGetPackagesPath>
<_MicrosoftDotNetBuildTasksFeedTaskDir>$(NuGetPackagesPath)microsoft.dotnet.build.tasks.feed\$(DevDependency_MicrosoftDotNetBuildTasksFeedPackageVersion.ToLowerInvariant())\build\netstandard1.5\</_MicrosoftDotNetBuildTasksFeedTaskDir>
</PropertyGroup>
<UsingTask TaskName="PushToBlobFeed" AssemblyFile="$(_MicrosoftDotNetBuildTasksFeedTaskDir)Microsoft.DotNet.Build.Tasks.Feed.dll"/>
</Project>

44
run.ps1
View File

@ -38,21 +38,6 @@ The path to the configuration file that stores values. Defaults to korebuild.jso
.PARAMETER CI
Sets up CI specific settings and variables.
.PARAMETER PackageVersionPropsUrl
(optional) the url of the package versions props path containing dependency versions.
.PARAMETER AssetRootUrl
(optional) the base url for acquiring build assets from an orchestrated build
.PARAMETER AccessTokenSuffix
(optional) the query string to append to any blob store access for PackageVersionPropsUrl, if any.
.PARAMETER RestoreSources
(optional) Semi-colon delimited list of additional NuGet feeds to use as part of restore.
.PARAMETER ProductBuildId
(optional) The product build ID for correlation with orchestrated builds.
.PARAMETER MSBuildArguments
Additional MSBuild arguments to be passed through.
@ -90,11 +75,6 @@ param(
[switch]$Reinstall,
[string]$ConfigFile = $null,
[switch]$CI,
[string]$PackageVersionPropsUrl = $null,
[string]$AccessTokenSuffix = $null,
[string]$RestoreSources = $null,
[string]$AssetRootUrl = $null,
[string]$ProductBuildId = $null,
[Parameter(ValueFromRemainingArguments = $true)]
[string[]]$MSBuildArguments
)
@ -213,30 +193,6 @@ if (!$LockFile) { $LockFile = Join-Path $Path 'korebuild-lock.txt' }
if (!$Channel) { $Channel = 'master' }
if (!$ToolsSource) { $ToolsSource = 'https://aspnetcore.blob.core.windows.net/buildtools' }
if ($PackageVersionPropsUrl) {
$IntermediateDir = Join-Path $PSScriptRoot 'obj'
$PropsFilePath = Join-Path $IntermediateDir 'external-dependencies.props'
New-Item -ItemType Directory $IntermediateDir -ErrorAction Ignore | Out-Null
Get-RemoteFile "${PackageVersionPropsUrl}${AccessTokenSuffix}" $PropsFilePath
$MSBuildArguments += "-p:DotNetPackageVersionPropsPath=$PropsFilePath"
}
if ($RestoreSources) {
$MSBuildArguments += "-p:DotNetAdditionalRestoreSources=$RestoreSources"
}
if ($AssetRootUrl) {
$MSBuildArguments += "-p:DotNetAssetRootUrl=$AssetRootUrl"
}
if ($AccessTokenSuffix) {
$MSBuildArguments += "-p:DotNetAssetRootAccessTokenSuffix=$AccessTokenSuffix"
}
if ($ProductBuildId) {
$MSBuildArguments += "-p:DotNetProductBuildId=$ProductBuildId"
}
# Execute
$korebuildPath = Get-KoreBuild

64
run.sh
View File

@ -19,11 +19,6 @@ lockfile_path=''
channel=''
tools_source=''
ci=false
package_version_props_url=''
asset_root_url=''
access_token_suffix=''
restore_sources=''
product_build_id=''
msbuild_args=()
#
@ -44,10 +39,6 @@ __usage() {
echo " --path <PATH> The directory to build. Defaults to the directory containing the script."
echo " --lockfile <PATH> The path to the korebuild-lock.txt file. Defaults to \$repo_path/korebuild-lock.txt"
echo " -s|--tools-source|-ToolsSource <URL> The base url where build tools can be downloaded. Overrides the value from the config file."
echo " --package-version-props-url <URL> The url of the package versions props path containing dependency versions."
echo " --access-token <Token> The query string to append to any blob store access for PackageVersionPropsUrl, if any."
echo " --restore-sources <Sources> Semi-colon delimited list of additional NuGet feeds to use as part of restore."
echo " --product-build-id <ID> The product build ID for correlation with orchestrated builds."
echo " -u|--update Update to the latest KoreBuild even if the lock file is present."
echo " --reinstall Reinstall KoreBuild."
echo " --ci Apply CI specific settings and environment variables."
@ -187,36 +178,6 @@ while [[ $# -gt 0 ]]; do
tools_source="${1:-}"
[ -z "$tools_source" ] && __error "Missing value for parameter --tools-source" && __usage
;;
--package-version-props-url|-PackageVersionPropsUrl)
shift
# This parameter can be an empty string, but it should be set
[ -z "${1+x}" ] && __error "Missing value for parameter --package-version-props-url" && __usage
package_version_props_url="$1"
;;
--access-token-suffix|-AccessTokenSuffix)
shift
# This parameter can be an empty string, but it should be set
[ -z "${1+x}" ] && __error "Missing value for parameter --access-token-suffix" && __usage
access_token_suffix="$1"
;;
--restore-sources|-RestoreSources)
shift
# This parameter can be an empty string, but it should be set
[ -z "${1+x}" ] && __error "Missing value for parameter --restore-sources" && __usage
restore_sources="$1"
;;
--asset-root-url|-AssetRootUrl)
shift
# This parameter can be an empty string, but it should be set
[ -z "${1+x}" ] && __error "Missing value for parameter --asset-root-url" && __usage
asset_root_url="$1"
;;
--product-build-id|-ProductBuildId)
shift
# This parameter can be an empty string, but it should be set
[ -z "${1+x}" ] && __error "Missing value for parameter --product-build-id" && __usage
product_build_id="$1"
;;
-u|--update|-Update)
update=true
;;
@ -277,31 +238,6 @@ if [ -f "$config_file" ]; then
fi
[ -z "${DOTNET_HOME:-}" ] && DOTNET_HOME="$HOME/.dotnet"
if [ ! -z "$package_version_props_url" ]; then
intermediate_dir="$repo_path/obj"
props_file_path="$intermediate_dir/external-dependencies.props"
mkdir -p "$intermediate_dir"
__get_remote_file "$package_version_props_url" "$props_file_path"
msbuild_args[${#msbuild_args[*]}]="-p:DotNetPackageVersionPropsPath=$props_file_path"
fi
if [ ! -z "$restore_sources" ]; then
msbuild_args[${#msbuild_args[*]}]="-p:DotNetAdditionalRestoreSources=$restore_sources"
fi
if [ ! -z "$asset_root_url" ]; then
msbuild_args[${#msbuild_args[*]}]="-p:DotNetAssetRootUrl=$asset_root_url"
fi
if [ ! -z "$access_token_suffix" ]; then
msbuild_args[${#msbuild_args[*]}]="-p:DotNetAssetRootAccessTokenSuffix=$access_token_suffix"
fi
if [ ! -z "$product_build_id" ]; then
msbuild_args[${#msbuild_args[*]}]="-p:DotNetProductBuildId=$product_build_id"
fi
[ -z "$lockfile_path" ] && lockfile_path="$repo_path/korebuild-lock.txt"
[ -z "$channel" ] && channel='master'
[ -z "$tools_source" ] && tools_source='https://aspnetcore.blob.core.windows.net/buildtools'

View File

@ -15,9 +15,6 @@ param(
[string]$BuildNumber = 't000',
[switch]$IsFinalBuild,
[string]$SignType = '',
[string]$PackageVersionPropsUrl = $null,
[string]$AccessTokenSuffix = $null,
[string]$AssetRootUrl = $null,
[switch]$clean
)
@ -60,24 +57,6 @@ try {
$msbuildArgs += '-t:Clean'
}
if ($AssetRootUrl) {
$msbuildArgs += "-p:DotNetAssetRootUrl=$AssetRootUrl"
}
if ($AccessTokenSuffix) {
$msbuildArgs += "-p:DotNetAccessTokenSuffix=$AccessTokenSuffix"
}
if ($PackageVersionPropsUrl) {
$IntermediateDir = Join-Path $PSScriptRoot 'obj'
$PropsFilePath = Join-Path $IntermediateDir 'external-dependencies.props'
New-Item -ItemType Directory $IntermediateDir -ErrorAction Ignore | Out-Null
Get-RemoteFile "${PackageVersionPropsUrl}${AccessTokenSuffix}" $PropsFilePath
$msbuildArgs += "-p:DotNetPackageVersionPropsPath=$PropsFilePath"
}
$msbuildArgs += '-t:Build'
Invoke-Block { & $msbuild `
WindowsInstallers.proj `
-restore `
@ -92,6 +71,7 @@ try {
"-p:SignType=$SignType" `
"-p:IsFinalBuild=$IsFinalBuild" `
"-bl:$repoRoot/artifacts/logs/installers.msbuild.binlog" `
'-t:Build' `
@msbuildArgs
}
}