From fd023a66988bee9d90b7ceee10641145200285c2 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Fri, 19 Jul 2019 15:38:28 +0000 Subject: [PATCH 01/18] Merged PR 2157: Bump version of Microsoft.Data.OData to 5.8.4 Bump version of Microsoft.Data.OData to 5.8.4 Work item: https://dev.azure.com/dnceng/internal/_workitems/edit/222/ --- build/dependencies.props | 2 ++ build/external-dependencies.props | 3 +++ eng/Dependencies.props | 2 ++ eng/PatchConfig.props | 1 + .../Microsoft.AspNetCore.DataProtection.AzureStorage.csproj | 4 +++- ...rosoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj | 3 +++ 6 files changed, 14 insertions(+), 1 deletion(-) diff --git a/build/dependencies.props b/build/dependencies.props index 0b1adf4cf1..a9edc6f2b9 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -123,6 +123,8 @@ 2.8.0 2.8.0 4.5.0 + 5.8.4 + 5.8.4 1.7.0 0.2.0-beta-63019-01 1.0.0-rc3-003121 diff --git a/build/external-dependencies.props b/build/external-dependencies.props index f3bf216028..7e80a4cef6 100644 --- a/build/external-dependencies.props +++ b/build/external-dependencies.props @@ -93,6 +93,9 @@ + + + diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 2f7b478d68..ed562c8690 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -100,6 +100,8 @@ and are generated based on the last package release. + + diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 0965ea09da..8fa9474235 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -42,6 +42,7 @@ Later on, this will be checked using this condition: + Microsoft.AspNetCore.DataProtection.AzureStorage; diff --git a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj index d65f55a425..2e0d4c5dc4 100644 --- a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj +++ b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj @@ -1,16 +1,18 @@  - Microsoft Azure Blob storrage support as key store. + Microsoft Azure Blob storage support as key store. netstandard2.0 true true aspnetcore;dataprotection;azure;blob + true + diff --git a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj index c01bea99ff..d36ba9fbbe 100644 --- a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj +++ b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj @@ -3,12 +3,15 @@ netcoreapp2.1;net461 true + true + + From dd212d7029defa696dd0d58ec997178e79a4b255 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Fri, 19 Jul 2019 15:38:34 +0000 Subject: [PATCH 02/18] Merged PR 2184: rel/2.2 Bump version of Microsoft.Data.OData to 5.8.4 Bump version of Microsoft.Data.OData to 5.8.4 in the 2.2 branch Work item: https://dev.azure.com/dnceng/internal/_workitems/edit/222/ Related work items: #222 --- build/dependencies.props | 2 ++ build/external-dependencies.props | 2 ++ eng/Dependencies.props | 2 ++ .../Microsoft.AspNetCore.DataProtection.AzureStorage.csproj | 4 +++- ...rosoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj | 2 ++ 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/build/dependencies.props b/build/dependencies.props index 574bb8be33..abcfc1eac6 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -146,6 +146,8 @@ 2.8.0 2.8.0 4.5.0 + 5.8.4 + 5.8.4 1.7.0 0.2.0-beta-63019-01 1.0.0-rc3-003121 diff --git a/build/external-dependencies.props b/build/external-dependencies.props index 37b2379b42..d3398e91c4 100644 --- a/build/external-dependencies.props +++ b/build/external-dependencies.props @@ -96,6 +96,8 @@ + + diff --git a/eng/Dependencies.props b/eng/Dependencies.props index 2c0d8499f4..9ed0885937 100644 --- a/eng/Dependencies.props +++ b/eng/Dependencies.props @@ -110,6 +110,8 @@ and are generated based on the last package release. + + diff --git a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj index d65f55a425..2e0d4c5dc4 100644 --- a/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj +++ b/src/DataProtection/AzureStorage/src/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj @@ -1,16 +1,18 @@  - Microsoft Azure Blob storrage support as key store. + Microsoft Azure Blob storage support as key store. netstandard2.0 true true aspnetcore;dataprotection;azure;blob + true + diff --git a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj index b6926a12d2..01ac9713de 100644 --- a/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj +++ b/src/DataProtection/AzureStorage/test/Microsoft.AspNetCore.DataProtection.AzureStorage.Tests.csproj @@ -9,6 +9,8 @@ + + From 124b96b09d122c4c41bc60d291d6146618a6bafc Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Thu, 8 Aug 2019 15:29:45 +0000 Subject: [PATCH 03/18] Merged PR 2564: Update PatchConfig.props for 2.2.7 Update PatchConfig.props for 2.2.7 Note: It's very easy to forget this. I think we should implement an automated check. --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 196624c7d6..1f005216dc 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -75,6 +75,7 @@ Later on, this will be checked using this condition: + Microsoft.AspNetCore.DataProtection.AzureStorage; From d49d7d7e0a26340fb3f6ff099c974df349bce325 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Thu, 8 Aug 2019 22:24:48 +0000 Subject: [PATCH 04/18] Merged PR 2262: Fix encoding used in JS generated by prerenderer Fix encoding used in JS generated by prerenderer --- .../src/Prerendering/RenderToStringResult.cs | 13 ++-- ...rosoft.AspNetCore.SpaServices.Tests.csproj | 11 +++ .../RenderToStringResultTest.cs | 71 +++++++++++++++++++ 3 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs diff --git a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs index 1a2e156354..0cf02247a1 100644 --- a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs +++ b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Text; +using System.Text.Encodings.Web; namespace Microsoft.AspNetCore.SpaServices.Prerendering { @@ -49,12 +50,16 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering foreach (var property in Globals.Properties()) { - stringBuilder.AppendFormat("window.{0} = {1};", - property.Name, - property.Value.ToString(Formatting.None)); + var propertyNameJavaScriptString = JavaScriptEncoder.Default.Encode(property.Name); + var valueJson = property.Value.ToString(Formatting.None); + var valueJsonJavaScriptString = JavaScriptEncoder.Default.Encode(valueJson); + + stringBuilder.AppendFormat("window[\"{0}\"] = JSON.parse(\"{1}\");", + propertyNameJavaScriptString, + valueJsonJavaScriptString); } return stringBuilder.ToString(); } } -} \ No newline at end of file +} diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj new file mode 100644 index 0000000000..db1160878b --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp2.0 + + + + + + + diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs new file mode 100644 index 0000000000..77ce7a213c --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs @@ -0,0 +1,71 @@ +// 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.Collections.Generic; +using Microsoft.AspNetCore.SpaServices.Prerendering; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; + +namespace Microsoft.AspNetCore.SpaServices.Tests +{ + public class RenderToStringResultTest + { + [Fact] + public void HandlesNullGlobals() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = null; + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + Assert.Equal(string.Empty, actualScript); + } + + [Fact] + public void HandlesGlobalsWithMultipleProperties() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new + { + FirstProperty = "first value", + SecondProperty = new[] { "Array entry 0", "Array entry 1" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""FirstProperty""] = JSON.parse(""\u0022first value\u0022"");" + + @"window[""SecondProperty""] = JSON.parse(""[\u0022Array entry 0\u0022,\u0022Array entry 1\u0022]"");"; + Assert.Equal(expectedScript, actualScript); + } + + [Fact] + public void HandlesGlobalsWithCorrectStringEncoding() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new Dictionary + { + { "Va\"'}\u260E" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""Va\u003Cl\u0027u\u0022e""] = JSON.parse(""\u0022\u003C\/tag\u003E\\\u0022\u0027}\u260E\u0022"");"; + Assert.Equal(expectedScript, actualScript); + } + + private static JObject ToJObject(object value) + { + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(value)); + } + } +} From fc65b4fd86cb09d375a296ac5d68162ba72fefd5 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Fri, 9 Aug 2019 01:37:35 +0000 Subject: [PATCH 05/18] Merged PR 2264: Fix encoding used in JS generated by prerenderer Fix encoding used in JS generated by prerenderer --- .../src/Prerendering/RenderToStringResult.cs | 13 ++-- ...rosoft.AspNetCore.SpaServices.Tests.csproj | 11 +++ .../RenderToStringResultTest.cs | 71 +++++++++++++++++++ 3 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs diff --git a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs index 1a2e156354..0cf02247a1 100644 --- a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs +++ b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs @@ -1,6 +1,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Text; +using System.Text.Encodings.Web; namespace Microsoft.AspNetCore.SpaServices.Prerendering { @@ -49,12 +50,16 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering foreach (var property in Globals.Properties()) { - stringBuilder.AppendFormat("window.{0} = {1};", - property.Name, - property.Value.ToString(Formatting.None)); + var propertyNameJavaScriptString = JavaScriptEncoder.Default.Encode(property.Name); + var valueJson = property.Value.ToString(Formatting.None); + var valueJsonJavaScriptString = JavaScriptEncoder.Default.Encode(valueJson); + + stringBuilder.AppendFormat("window[\"{0}\"] = JSON.parse(\"{1}\");", + propertyNameJavaScriptString, + valueJsonJavaScriptString); } return stringBuilder.ToString(); } } -} \ No newline at end of file +} diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj new file mode 100644 index 0000000000..db1160878b --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/Microsoft.AspNetCore.SpaServices.Tests.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp2.0 + + + + + + + diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs new file mode 100644 index 0000000000..77ce7a213c --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests/RenderToStringResultTest.cs @@ -0,0 +1,71 @@ +// 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.Collections.Generic; +using Microsoft.AspNetCore.SpaServices.Prerendering; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; + +namespace Microsoft.AspNetCore.SpaServices.Tests +{ + public class RenderToStringResultTest + { + [Fact] + public void HandlesNullGlobals() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = null; + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + Assert.Equal(string.Empty, actualScript); + } + + [Fact] + public void HandlesGlobalsWithMultipleProperties() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new + { + FirstProperty = "first value", + SecondProperty = new[] { "Array entry 0", "Array entry 1" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""FirstProperty""] = JSON.parse(""\u0022first value\u0022"");" + + @"window[""SecondProperty""] = JSON.parse(""[\u0022Array entry 0\u0022,\u0022Array entry 1\u0022]"");"; + Assert.Equal(expectedScript, actualScript); + } + + [Fact] + public void HandlesGlobalsWithCorrectStringEncoding() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new Dictionary + { + { "Va\"'}\u260E" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""Va\u003Cl\u0027u\u0022e""] = JSON.parse(""\u0022\u003C\/tag\u003E\\\u0022\u0027}\u260E\u0022"");"; + Assert.Equal(expectedScript, actualScript); + } + + private static JObject ToJObject(object value) + { + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(value)); + } + } +} From e1426f6bdf0ca7501a5dc8258891075e6c7abe1c Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Mon, 12 Aug 2019 16:40:16 +0000 Subject: [PATCH 06/18] Merged PR 2582: Fixing merge conflict between release/2.2 and internal/release/2.2 Changes were made to the `PatchConfig.props` files in the internal and public branches. The change to the internal branch was made before the change in the public branch which caused the conflict and broke mirroring. --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 1f005216dc..ca3fab2ab2 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -76,6 +76,7 @@ Later on, this will be checked using this condition: Microsoft.AspNetCore.DataProtection.AzureStorage; + Microsoft.AspNetCore.Hosting; From be0a4a7f4cf06cbd6ec714bd1d9afee6bdb040a8 Mon Sep 17 00:00:00 2001 From: Andrew Stanton-Nurse Date: Tue, 13 Aug 2019 22:10:56 +0000 Subject: [PATCH 07/18] Merged PR 2631: Fix patch config in 2.2 I'll merge this ASAP once I'm confident it will resolve the issue --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index ca3fab2ab2..3f12fb1a02 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -77,6 +77,7 @@ Later on, this will be checked using this condition: Microsoft.AspNetCore.DataProtection.AzureStorage; Microsoft.AspNetCore.Hosting; + Microsoft.AspNetCore.SpaServices; From 2a6c96a684b0cd574b6fb6e867422d5d605663eb Mon Sep 17 00:00:00 2001 From: Andrew Stanton-Nurse Date: Tue, 13 Aug 2019 22:13:40 +0000 Subject: [PATCH 08/18] Merged PR 2630: Fix patch config for SpaServices MSRC I'll merge this ASAP once I'm confident it will fix the issue. --- eng/PatchConfig.props | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 8fa9474235..e433208e89 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -43,6 +43,7 @@ Later on, this will be checked using this condition: Microsoft.AspNetCore.DataProtection.AzureStorage; + Microsoft.AspNetCore.SpaServices; From b883ebac96598060cee89583dbeabcfac3fdaacc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sat, 7 Sep 2019 10:42:51 -0700 Subject: [PATCH 09/18] [release/3.0-preview9] Update dependencies from 4 repositories (#13753) * Update dependencies from https://github.com/dotnet/arcade build 20190906.10 - Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19456.10 - Microsoft.DotNet.GenAPI - 1.0.0-beta.19456.10 - Microsoft.DotNet.Helix.Sdk - 2.0.0-beta.19456.10 * Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190906.6 - Microsoft.NET.Sdk.Razor - 3.0.0-rc1.19456.6 - Microsoft.CodeAnalysis.Razor - 3.0.0-rc1.19456.6 - Microsoft.AspNetCore.Razor.Language - 3.0.0-rc1.19456.6 - Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.0.0-rc1.19456.6 * Update dependencies from https://github.com/aspnet/Blazor build 20190906.1 - Microsoft.AspNetCore.Blazor.Mono - 3.0.0-preview9.19456.1 * Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190906.14 - Microsoft.EntityFrameworkCore.Tools - 3.0.0-rc1.19456.14 - Microsoft.EntityFrameworkCore.SqlServer - 3.0.0-rc1.19456.14 - dotnet-ef - 3.0.0-rc1.19456.14 - Microsoft.EntityFrameworkCore - 3.0.0-rc1.19456.14 - Microsoft.EntityFrameworkCore.InMemory - 3.0.0-rc1.19456.14 - Microsoft.EntityFrameworkCore.Relational - 3.0.0-rc1.19456.14 - Microsoft.EntityFrameworkCore.Sqlite - 3.0.0-rc1.19456.14 Dependency coherency updates - Microsoft.AspNetCore.Analyzer.Testing - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.ActivatorUtilities.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Caching.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Caching.Memory - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Caching.SqlServer - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Caching.StackExchangeRedis - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.CommandLineUtils.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.AzureKeyVault - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.Binder - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.CommandLine - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.EnvironmentVariables - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.FileExtensions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.Ini - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.Json - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.KeyPerFile - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.UserSecrets - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration.Xml - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Configuration - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.DependencyInjection.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.DependencyInjection - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.DiagnosticAdapter - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Diagnostics.HealthChecks - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.FileProviders.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.FileProviders.Composite - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.FileProviders.Embedded - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.FileProviders.Physical - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.FileSystemGlobbing - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.HashCodeCombiner.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Hosting.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Hosting - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.HostFactoryResolver.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Http - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Localization.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Localization - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.Abstractions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.AzureAppServices - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.Configuration - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.Console - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.Debug - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.EventSource - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.EventLog - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.TraceSource - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Logging.Testing - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.ObjectPool - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Options.ConfigurationExtensions - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Options.DataAnnotations - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Options - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.ParameterDefaultValue.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.Primitives - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.TypeNameHelper.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.ValueStopwatch.Sources - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Extensions.WebEncoders - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Internal.Extensions.Refs - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.JSInterop - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Mono.WebAssembly.Interop - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Bcl.AsyncInterfaces - 1.0.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - Microsoft.NETCore.App.Runtime.win-x64 - 3.0.0-rc1-19456-20 (parent: Microsoft.Extensions.Logging) - Microsoft.Extensions.Logging - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.CSharp - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - Microsoft.Win32.Registry - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - Microsoft.Win32.SystemEvents - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.ComponentModel.Annotations - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Diagnostics.EventLog - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Drawing.Common - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.IO.Pipelines - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Net.Http.WinHttpHandler - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Net.WebSockets.WebSocketProtocol - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Reflection.Metadata - 1.7.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Runtime.CompilerServices.Unsafe - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Security.Cryptography.Cng - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Security.Cryptography.Pkcs - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Security.Cryptography.Xml - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Security.Permissions - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Security.Principal.Windows - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.ServiceProcess.ServiceController - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Text.Encodings.Web - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Text.Json - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Threading.Channels - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - System.Windows.Extensions - 4.6.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - Microsoft.Extensions.DependencyModel - 3.0.0-rc1-19456-20 (parent: Microsoft.Extensions.Logging) - Microsoft.NETCore.App.Ref - 3.0.0-rc1-19456-20 (parent: Microsoft.Extensions.Logging) - NETStandard.Library.Ref - 2.1.0-rc1-19456-20 (parent: Microsoft.Extensions.Logging) - Microsoft.NETCore.Platforms - 3.0.0-rc1.19456.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) - Internal.AspNetCore.Analyzers - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.AspNetCore.Testing - 3.0.0-rc1.19456.10 (parent: Microsoft.EntityFrameworkCore) - Microsoft.Net.Compilers.Toolset - 3.3.1-beta3-19454-05 (parent: Microsoft.Extensions.Logging) --- eng/Version.Details.xml | 416 +++++++++--------- eng/Versions.props | 204 ++++----- eng/common/build.ps1 | 4 + eng/common/performance/performance-setup.ps1 | 2 +- eng/common/performance/performance-setup.sh | 2 +- eng/common/sdl/execute-all-sdl-tools.ps1 | 17 +- eng/common/templates/job/job.yml | 5 +- eng/common/templates/job/performance.yml | 6 +- .../templates/job/publish-build-assets.yml | 7 + ...lic-dev-release.yml => netcore-dev-30.yml} | 84 ++-- .../post-build/channels/netcore-dev-31.yml | 133 ++++++ .../post-build/channels/netcore-dev-5.yml | 90 ++-- ...-servicing.yml => netcore-internal-30.yml} | 85 ++-- ...lic-release.yml => netcore-release-30.yml} | 82 ++-- .../channels/netcore-release-31.yml | 135 ++++++ .../channels/netcore-tools-latest.yml | 88 ++-- .../channels/public-validation-release.yml | 60 ++- .../templates/post-build/common-variables.yml | 32 +- .../templates/post-build/post-build.yml | 24 +- global.json | 4 +- 20 files changed, 824 insertions(+), 656 deletions(-) rename eng/common/templates/post-build/channels/{public-dev-release.yml => netcore-dev-30.yml} (64%) create mode 100644 eng/common/templates/post-build/channels/netcore-dev-31.yml rename eng/common/templates/post-build/channels/{internal-servicing.yml => netcore-internal-30.yml} (60%) rename eng/common/templates/post-build/channels/{public-release.yml => netcore-release-30.yml} (61%) create mode 100644 eng/common/templates/post-build/channels/netcore-release-31.yml diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 669ae28923..9d48dbd43b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,428 +9,428 @@ --> - + https://github.com/aspnet/Blazor - 46d4074b15672e7d6e576decdfaf0d37f4c36f8d + e6d5939369c38dbd913c3765f30327bb713a7d67 - + https://github.com/aspnet/AspNetCore-Tooling - 3187623392c21b80c33e3f4df1d135aaae66d530 + 5ca5f30f0848e3909787095da9c78924986ee095 - + https://github.com/aspnet/AspNetCore-Tooling - 3187623392c21b80c33e3f4df1d135aaae66d530 + 5ca5f30f0848e3909787095da9c78924986ee095 - + https://github.com/aspnet/AspNetCore-Tooling - 3187623392c21b80c33e3f4df1d135aaae66d530 + 5ca5f30f0848e3909787095da9c78924986ee095 - + https://github.com/aspnet/AspNetCore-Tooling - 3187623392c21b80c33e3f4df1d135aaae66d530 + 5ca5f30f0848e3909787095da9c78924986ee095 - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/EntityFrameworkCore - 7fa7c03a269273b62117d92b4191ef6d08a34a95 + d2654d9ef0db4b34f1b72cc25dfae3c81fbeccef - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/dotnet/core-setup - b9dd6c969c15a2734aecbd3e2aa83afed02040e4 + 8f5d7b1ba4f744199ba006cac38dfcb9a2408880 - + https://github.com/dotnet/core-setup - b9dd6c969c15a2734aecbd3e2aa83afed02040e4 + 8f5d7b1ba4f744199ba006cac38dfcb9a2408880 - + https://github.com/dotnet/core-setup - b9dd6c969c15a2734aecbd3e2aa83afed02040e4 + 8f5d7b1ba4f744199ba006cac38dfcb9a2408880 - + https://github.com/dotnet/core-setup - b9dd6c969c15a2734aecbd3e2aa83afed02040e4 + 8f5d7b1ba4f744199ba006cac38dfcb9a2408880 - + https://github.com/dotnet/corefx - ae488157a419935918d3364e843cf1632a2b4299 + 3da667af759d88b683ca851694ced073e8dc9960 - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/dotnet/arcade - 316c80d0c373be63f991cc4d586db85273c1c553 + 2d393243ba4a0c95c2c18aa266df6e0f43ffe22d - + https://github.com/dotnet/arcade - 316c80d0c373be63f991cc4d586db85273c1c553 + 2d393243ba4a0c95c2c18aa266df6e0f43ffe22d - + https://github.com/dotnet/arcade - 316c80d0c373be63f991cc4d586db85273c1c553 + 2d393243ba4a0c95c2c18aa266df6e0f43ffe22d - + https://github.com/aspnet/Extensions - 32764537039b4dd9ed01ff5f316ee7c60ae62312 + 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/dotnet/roslyn - fa8e2c9b566e4471a3509fc63d7baca0a2a6d30b + 3b423bd305daf81076d4d7b105101361c2490531 diff --git a/eng/Versions.props b/eng/Versions.props index 73c003ee79..c7ef3f67ba 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -53,116 +53,116 @@ --> - 1.0.0-beta.19430.3 + 1.0.0-beta.19456.10 - 3.3.1-beta3-19430-03 + 3.3.1-beta3-19454-05 - 3.0.0-rc1-19453-06 - 3.0.0-rc1-19453-06 - 3.0.0-rc1-19453-06 - 2.1.0-rc1-19453-06 + 3.0.0-rc1-19456-20 + 3.0.0-rc1-19456-20 + 3.0.0-rc1-19456-20 + 2.1.0-rc1-19456-20 - 1.0.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 1.7.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 - 4.6.0-rc1.19453.4 + 1.0.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 1.7.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 + 4.6.0-rc1.19456.4 - 3.0.0-rc1.19453.4 + 3.0.0-rc1.19456.4 - 3.0.0-preview9.19455.4 + 3.0.0-preview9.19456.1 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 - 3.0.0-rc1.19455.2 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 + 3.0.0-rc1.19456.10 - 3.0.0-rc1.19455.8 - 3.0.0-rc1.19455.8 - 3.0.0-rc1.19455.8 - 3.0.0-rc1.19455.8 - 3.0.0-rc1.19455.8 - 3.0.0-rc1.19455.8 - 3.0.0-rc1.19455.8 + 3.0.0-rc1.19456.14 + 3.0.0-rc1.19456.14 + 3.0.0-rc1.19456.14 + 3.0.0-rc1.19456.14 + 3.0.0-rc1.19456.14 + 3.0.0-rc1.19456.14 + 3.0.0-rc1.19456.14 - 3.0.0-rc1.19452.2 - 3.0.0-rc1.19452.2 - 3.0.0-rc1.19452.2 - 3.0.0-rc1.19452.2 + 3.0.0-rc1.19456.6 + 3.0.0-rc1.19456.6 + 3.0.0-rc1.19456.6 + 3.0.0-rc1.19456.6 From 8a8e98e1b2d744d2cec2071716de42291c827554 Mon Sep 17 00:00:00 2001 From: Artak <34246760+mkArtakMSFT@users.noreply.github.com> Date: Tue, 10 Sep 2019 14:30:52 -0700 Subject: [PATCH 14/18] Fix encoding used in JS generated by prerenderer (#13865) --- .../src/Prerendering/RenderToStringResult.cs | 11 ++- ...rosoft.AspNetCore.SpaServices.Tests.csproj | 11 +++ .../test/RenderToStringResultTests.cs | 71 +++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests.csproj create mode 100644 src/Middleware/SpaServices/test/RenderToStringResultTests.cs diff --git a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs index f6f5d77911..ce37c54fed 100644 --- a/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs +++ b/src/Middleware/SpaServices/src/Prerendering/RenderToStringResult.cs @@ -5,6 +5,7 @@ using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Text; +using System.Text.Encodings.Web; namespace Microsoft.AspNetCore.SpaServices.Prerendering { @@ -54,9 +55,13 @@ namespace Microsoft.AspNetCore.SpaServices.Prerendering foreach (var property in Globals.Properties()) { - stringBuilder.AppendFormat("window.{0} = {1};", - property.Name, - property.Value.ToString(Formatting.None)); + var propertyNameJavaScriptString = JavaScriptEncoder.Default.Encode(property.Name); + var valueJson = property.Value.ToString(Formatting.None); + var valueJsonJavaScriptString = JavaScriptEncoder.Default.Encode(valueJson); + + stringBuilder.AppendFormat("window[\"{0}\"] = JSON.parse(\"{1}\");", + propertyNameJavaScriptString, + valueJsonJavaScriptString); } return stringBuilder.ToString(); diff --git a/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests.csproj b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests.csproj new file mode 100644 index 0000000000..0d18e4e2a0 --- /dev/null +++ b/src/Middleware/SpaServices/test/Microsoft.AspNetCore.SpaServices.Tests.csproj @@ -0,0 +1,11 @@ + + + + netcoreapp3.0 + + + + + + + diff --git a/src/Middleware/SpaServices/test/RenderToStringResultTests.cs b/src/Middleware/SpaServices/test/RenderToStringResultTests.cs new file mode 100644 index 0000000000..e87312d211 --- /dev/null +++ b/src/Middleware/SpaServices/test/RenderToStringResultTests.cs @@ -0,0 +1,71 @@ +// 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.Collections.Generic; +using Microsoft.AspNetCore.SpaServices.Prerendering; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Xunit; + +namespace Microsoft.AspNetCore.SpaServices.Tests +{ + public class RenderToStringResultTest + { + [Fact] + public void HandlesNullGlobals() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = null; + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + Assert.Equal(string.Empty, actualScript); + } + + [Fact] + public void HandlesGlobalsWithMultipleProperties() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new + { + FirstProperty = "first value", + SecondProperty = new[] { "Array entry 0", "Array entry 1" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""FirstProperty""] = JSON.parse(""\u0022first value\u0022"");" + + @"window[""SecondProperty""] = JSON.parse(""[\u0022Array entry 0\u0022,\u0022Array entry 1\u0022]"");"; + Assert.Equal(expectedScript, actualScript); + } + + [Fact] + public void HandlesGlobalsWithCorrectStringEncoding() + { + // Arrange + var renderToStringResult = new RenderToStringResult(); + renderToStringResult.Globals = ToJObject(new Dictionary + { + { "Va\"'}\u260E" } + }); + + // Act + var actualScript = renderToStringResult.CreateGlobalsAssignmentScript(); + + // Assert + var expectedScript = @"window[""Va\u003Cl\u0027u\u0022e""] = JSON.parse(""\u0022\u003C/tag\u003E\\\u0022\u0027}\u260E\u0022"");"; + Assert.Equal(expectedScript, actualScript); + } + + private static JObject ToJObject(object value) + { + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(value)); + } + } +} From 1b83f7d4e4f1a8604a3c618fb00331fb2e0b1a55 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Wed, 11 Sep 2019 10:10:24 +1200 Subject: [PATCH 15/18] Update gRPC template to use 2.23.1 (#13791) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index e2b93be206..f10082bf69 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -225,7 +225,7 @@ 4.2.1 4.2.1 3.8.0 - 0.2.23-pre1 + 2.23.1 3.0.0 3.0.0 3.0.0 From 1fe84a6ded892af518ef86006516ef2d74431eba Mon Sep 17 00:00:00 2001 From: Chris R Date: Mon, 9 Sep 2019 15:53:19 -0700 Subject: [PATCH 16/18] Replace obsolete feeds --- build/sources.props | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build/sources.props b/build/sources.props index 7648381d3b..9567ad020c 100644 --- a/build/sources.props +++ b/build/sources.props @@ -14,12 +14,11 @@ $(RestoreSources); - https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json; https://dotnet.myget.org/F/aspnetcore-master/api/v3/index.json; https://dotnet.myget.org/F/roslyn/api/v3/index.json; - https://vside.myget.org/F/vssdk/api/v3/index.json; - https://vside.myget.org/F/vsmac/api/v3/index.json; + https://pkgs.dev.azure.com/azure-public/vside/_packaging/vssdk/nuget/v3/index.json; + https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-impl/nuget/v3/index.json; From 04705ee4f1ae72c839c63af2e281ad9526602b5e Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Tue, 10 Sep 2019 20:43:24 -0700 Subject: [PATCH 17/18] Use stages pipeline (#13040) - #11924 - change ci.yml to use stages and post-build.yml - add use of publish-build-assets.yml and post-build.yml - create manifests and push to artifacts in last build step of each job - pass more MSBuild properties into those builds - use Arcade to publish installers - use distinct `$(AssetManifestFileName)` values per job - set global property to override what's hard-coded in Publish.proj - change codesign-xplat.yml to use empty.proj and normal Arcade signing and publication process - remove XPlatPackageSigner.proj - change default-build.yml to use job.yml - remove unused parameters e.g. `matrix`, `poolName`, `variables` - use `enableMicrobuild` and `enablePublishTestResults` to eliminate duplicate build steps - add .dll's and .exe's as files to sign w/ Microsoft400 - add signcheck exclusions - remove custom manifest generation i.e. the `GenerateBuildAssetManifest` target and related artifacts - update docker infrastructure to use same paths in and out of the container - avoids problems adding to artifacts from within the builds - correct typo in build.sh - use `$env:DOTNET_INSTALL_DIR` in `DotNetCommands` - relax expectations that an arch-specific folder exists under (say) `$env:DOTNET_HOME` - avoids need to define `$env:DOTNET_HOME` in all jobs on CI - update dependencies from dotnet/arcade build '20190908.2' - upgrade to eg. Arcade SDK '1.0.0-beta.19458.2' package version - pick up dotnet/arcade@dd593acc8b08 fix - enable use of `%(PublishFlatContainer)` metadata and correct signing validation issues - use `$(DotNetFinalVersionKind)` in preparation for servicing builds - set `$(IsStableBuild)` for use in Arcade infrastructure - disable signing validation for now (see #13864) nits: - upload logs in first artifact - remove attempts to package non-existent VSIX - follow-up to 29cf7ecb80b1 - respect verbosity setting in build.sh - add more information to Artifacts.md - enable test signing in internal PRs --- .azure/pipelines/ci.yml | 1046 +++++++++-------- .azure/pipelines/jobs/codesign-xplat.yml | 29 +- .azure/pipelines/jobs/default-build.yml | 359 +++--- Directory.Build.props | 11 +- Directory.Build.targets | 3 +- build.sh | 6 +- dockerbuild.sh | 3 +- docs/Artifacts.md | 34 +- eng/AfterSolutionBuild.targets | 11 - eng/Publishing.props | 56 + eng/SignCheckExclusionsFile.txt | 4 + eng/Signing.props | 1 + eng/Version.Details.xml | 6 +- eng/Versions.props | 8 +- eng/docker/alpine.Dockerfile | 3 +- eng/docker/bionic.Dockerfile | 3 +- eng/docker/rhel.Dockerfile | 3 +- eng/docker/ubuntu-alpine37.Dockerfile | 3 +- eng/empty.proj | 5 + eng/tools/Maestro/Maestro.csproj | 38 - .../XplatPackageSigner.proj | 38 - .../XplatPackageSigner/sign-packages.cmd | 15 - global.json | 4 +- src/Components/Blazor/Directory.Build.props | 2 +- .../src/Common/DotNetCommands.cs | 25 +- 25 files changed, 886 insertions(+), 830 deletions(-) create mode 100644 eng/Publishing.props create mode 100644 eng/SignCheckExclusionsFile.txt create mode 100644 eng/empty.proj delete mode 100644 eng/tools/Maestro/Maestro.csproj delete mode 100644 eng/tools/XplatPackageSigner/XplatPackageSigner.proj delete mode 100644 eng/tools/XplatPackageSigner/sign-packages.cmd diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index 0a4e281655..ca0ef63a15 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -22,517 +22,573 @@ variables: value: true - name: _TeamName value: AspNetCore -- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - name: _BuildArgs - value: /p:TeamName=$(_TeamName) - /p:OfficialBuildId=$(Build.BuildNumber) -- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: +- name: _DotNetPublishToBlobFeed + value: true +- name: _PublishUsingPipelines + value: true +- name: _DotNetArtifactsCategory + value: .NETCORE +- name: _DotNetValidationArtifactsCategory + value: .NETCORE +- ${{ if ne(variables['System.TeamProject'], 'internal') }}: - name: _BuildArgs value: '' + - name: _PublishArgs + value: '' + - name: _SignType + value: '' +- ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + # DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1 + # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT + - group: DotNet-Blob-Feed + - group: Publish-Build-Assets -jobs: -# Code check -- template: jobs/default-build.yml - parameters: - jobName: Code_check - jobDisplayName: Code check - agentOs: Windows - steps: - - powershell: ./eng/scripts/CodeCheck.ps1 -ci - displayName: Run eng/scripts/CodeCheck.ps1 - artifacts: - - name: Code_Check_Logs - path: artifacts/log/ - publishOnError: true + - name: _BuildArgs + value: /p:TeamName=$(_TeamName) + /p:OfficialBuildId=$(Build.BuildNumber) + - name: _SignType + value: real -# Build Windows (x64/x86) -- template: jobs/default-build.yml - parameters: - codeSign: true - jobName: Windows_build - jobDisplayName: "Build: Windows x64/x86" - agentOs: Windows - steps: - - script: "echo ##vso[build.addbuildtag]daily-build" - condition: and(ne(variables['Build.Reason'], 'PullRequest'), notin(variables['DotNetFinalVersionKind'], 'release', 'prerelease')) - displayName: 'Set CI tags' - - script: "echo ##vso[build.addbuildtag]release-candidate" - condition: and(ne(variables['Build.Reason'], 'PullRequest'), in(variables['DotNetFinalVersionKind'], 'release', 'prerelease')) - displayName: 'Set CI tags' - # !!! NOTE !!! Some of these steps have disabled code signing. - # This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even - # if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing. - # The sign settings have been configured to + # The following extra properties are not set when testing. Use with final build.[cmd,sh] of asset-producing jobs. + - name: _PublishArgs + value: /p:Publish=true + /p:DotNetPublishBlobFeedKey=$(dotnetfeed-storage-access-key-1) + /p:DotNetPublishBlobFeedUrl=https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + /p:DotNetPublishToBlobFeed=$(_DotNetPublishToBlobFeed) + /p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines) + /p:DotNetArtifactsCategory=$(_DotNetArtifactsCategory) + - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - name: _BuildArgs + value: '' + - name: _SignType + valule: test + - name: _PublishArgs + value: '' - - script: ./build.cmd - -ci - -arch x64 - -pack - -all - -buildNative - /bl:artifacts/log/build.x64.binlog - $(_BuildArgs) - displayName: Build x64 - # TODO: make it possible to build for one Windows architecture at a time - # This is going to actually build x86 native assets. See https://github.com/aspnet/AspNetCore/issues/7196 +stages: +- stage: build + displayName: Build + jobs: + # Code check + - template: jobs/default-build.yml + parameters: + jobName: Code_check + jobDisplayName: Code check + agentOs: Windows + steps: + - powershell: ./eng/scripts/CodeCheck.ps1 -ci + displayName: Run eng/scripts/CodeCheck.ps1 + artifacts: + - name: Code_Check_Logs + path: artifacts/log/ + publishOnError: true - # Build the x86 shared framework - - script: ./build.cmd - -ci - -arch x86 - -pack - -all - -buildNative - -noBuildJava - /p:OnlyPackPlatformSpecificPackages=true - /bl:artifacts/log/build.x86.binlog + # Build Windows (x64/x86) + - template: jobs/default-build.yml + parameters: + codeSign: true + jobName: Windows_build + jobDisplayName: "Build: Windows x64/x86" + agentOs: Windows + steps: + - script: "echo ##vso[build.addbuildtag]daily-build" + condition: and(ne(variables['Build.Reason'], 'PullRequest'), notin(variables['DotNetFinalVersionKind'], 'release', 'prerelease')) + displayName: 'Set CI tags' + - script: "echo ##vso[build.addbuildtag]release-candidate" + condition: and(ne(variables['Build.Reason'], 'PullRequest'), in(variables['DotNetFinalVersionKind'], 'release', 'prerelease')) + displayName: 'Set CI tags' + + # !!! NOTE !!! Some of these steps have disabled code signing. + # This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even + # if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing. + # The sign settings have been configured to + + - script: ./build.cmd + -ci + -arch x64 + -pack + -all + -buildNative + /bl:artifacts/log/build.x64.binlog + $(_BuildArgs) + displayName: Build x64 + + # Build the x86 shared framework + # TODO: make it possible to build for one Windows architecture at a time + # This is going to actually build x86 native assets. See https://github.com/aspnet/AspNetCore/issues/7196 + - script: ./build.cmd + -ci + -arch x86 + -pack + -all + -buildNative + -noBuildJava + /p:OnlyPackPlatformSpecificPackages=true + /bl:artifacts/log/build.x86.binlog + $(_BuildArgs) + displayName: Build x86 + + # This is in a separate build step with -forceCoreMsbuild to workaround MAX_PATH limitations - https://github.com/Microsoft/msbuild/issues/53 + - script: .\src\SiteExtensions\build.cmd + -ci + -pack + -noBuildDeps + $(_BuildArgs) + displayName: Build SiteExtension + + # This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If https://github.com/dotnet/arcade/issues/1957 is resolved, + # consider running code-signing inline with the other previous steps. + # Sign check is disabled because it is run in a separate step below, after installers are built. + - script: ./build.cmd + -ci + -noBuild + -noRestore + -sign + /bl:artifacts/log/build.codesign.binlog + /p:DotNetSignType=$(_SignType) + $(_BuildArgs) + displayName: Code sign packages + + # Windows installers bundle both x86 and x64 assets + - script: ./build.cmd + -ci + -sign + -buildInstallers + /bl:artifacts/log/installers.msbuild.binlog + /p:DotNetSignType=$(_SignType) + /p:AssetManifestFileName=aspnetcore-win-x64-x86.xml + $(_BuildArgs) + $(_PublishArgs) + /p:PublishInstallerBaseVersion=true + displayName: Build Installers + + artifacts: + - name: Windows_Logs + path: artifacts/log/ + publishOnError: true + - name: Windows_Packages + path: artifacts/packages/ + + # Build Windows ARM + - template: jobs/default-build.yml + parameters: + codeSign: true + jobName: Windows_arm_build + jobDisplayName: "Build: Windows ARM" + agentOs: Windows + buildArgs: + -arch arm + -sign + -pack + -noBuildNodeJS + -noBuildJava + /bl:artifacts/log/build.win-arm.binlog + /p:DotNetSignType=$(_SignType) + /p:OnlyPackPlatformSpecificPackages=true + /p:AssetManifestFileName=aspnetcore-win-arm.xml + $(_BuildArgs) + $(_PublishArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: Windows_arm_Logs + path: artifacts/log/ + publishOnError: true + - name: Windows_arm_Packages + path: artifacts/packages/ + + # Build MacOS + - template: jobs/default-build.yml + parameters: + jobName: MacOs_x64_build + jobDisplayName: "Build: macOS" + agentOs: macOs + buildArgs: + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -bl:artifacts/log/build.macos.binlog + -p:AssetManifestFileName=aspnetcore-MacOS_x64.xml + $(_BuildArgs) + $(_PublishArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: MacOS_x64_Logs + path: artifacts/log/ + publishOnError: true + - name: MacOS_x64_Packages + path: artifacts/packages/ + - template: jobs/codesign-xplat.yml + parameters: + inputName: MacOS_x64 + + # Build Linux x64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_x64_build + jobDisplayName: "Build: Linux x64" + agentOs: Linux + steps: + - script: ./build.sh + --ci + --arch x64 + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -bl:artifacts/log/build.linux-x64.binlog $(_BuildArgs) - displayName: Build x86 - - # This is in a separate build step with -forceCoreMsbuild to workaround MAX_PATH limitations - https://github.com/Microsoft/msbuild/issues/53 - - script: .\src\SiteExtensions\build.cmd - -ci - -pack - -noBuildDeps + displayName: Run build.sh + - script: | + git clean -xfd src/**/obj/ + ./dockerbuild.sh bionic \ + --ci \ + --arch x64 \ + --build-installers \ + --no-build-deps \ + --no-build-nodejs \ + -p:OnlyPackPlatformSpecificPackages=true \ + -p:BuildRuntimeArchive=false \ + -p:LinuxInstallerType=deb \ + -bl:artifacts/log/build.deb.binlog \ $(_BuildArgs) - displayName: Build SiteExtension + displayName: Build Debian installers + - script: | + git clean -xfd src/**/obj/ + ./dockerbuild.sh rhel \ + --ci \ + --arch x64 \ + --build-installers \ + --no-build-deps \ + --no-build-nodejs \ + -p:OnlyPackPlatformSpecificPackages=true \ + -p:BuildRuntimeArchive=false \ + -p:LinuxInstallerType=rpm \ + -bl:artifacts/log/build.rpm.binlog \ + -p:AssetManifestFileName=aspnetcore-Linux_x64.xml \ + $(_BuildArgs) \ + $(_PublishArgs) + displayName: Build RPM installers + installNodeJs: false + installJdk: false + artifacts: + - name: Linux_x64_Logs + path: artifacts/log/ + publishOnError: true + - name: Linux_x64_Packages + path: artifacts/packages/ + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_x64 - # This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If https://github.com/dotnet/arcade/issues/1957 is resolved, - # consider running code-signing inline with the other previous steps. - # Sign check is disabled because it is run in a separate step below, after installers are built. - - script: ./build.cmd - -ci - -noBuild - -noRestore - -sign - /bl:artifacts/log/build.codesign.binlog - $(_BuildArgs) - displayName: Code sign packages + # Build Linux ARM + - template: jobs/default-build.yml + parameters: + jobName: Linux_arm_build + jobDisplayName: "Build: Linux ARM" + agentOs: Linux + buildArgs: + --arch arm + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -bl:artifacts/log/build.linux-arm.binlog + -p:AssetManifestFileName=aspnetcore-Linux_arm.xml + $(_BuildArgs) + $(_PublishArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: Linux_arm_Logs + path: artifacts/log/ + publishOnError: true + - name: Linux_arm_Packages + path: artifacts/packages/ + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_arm - # Windows installers bundle both x86 and x64 assets - - script: ./build.cmd - -ci - -sign - -buildInstallers - /bl:artifacts/log/installers.msbuild.binlog - $(_BuildArgs) - displayName: Build Installers + # Build Linux ARM64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_arm64_build + jobDisplayName: "Build: Linux ARM64" + agentOs: Linux + buildArgs: + --arch arm64 + --all + --pack + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -bl:artifacts/log/build.arm64.binlog + -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml + $(_BuildArgs) + $(_PublishArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: Linux_arm64_Logs + path: artifacts/log/ + publishOnError: true + - name: Linux_arm64_Packages + path: artifacts/packages/ + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_arm64 - artifacts: - - name: Windows_Logs - path: artifacts/log/ - publishOnError: true - - name: Windows_Packages - path: artifacts/packages/ - - name: Windows_Symbols - path: artifacts/symbols/ - - name: Windows_VSIX - path: artifacts/VSSetup/ - - name: Windows_Manifests - path: artifacts/manifests/ - - name: Windows_Installers - path: artifacts/installers/ + # Build Linux Musl x64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_musl_x64_build + jobDisplayName: "Build: Linux Musl x64" + agentOs: Linux + buildScript: ./dockerbuild.sh alpine + buildArgs: + --ci + --arch x64 + --os-name linux-musl + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -bl:artifacts/log/build.musl.binlog + -p:AssetManifestFileName=aspnetcore-Linux_musl_x64.xml + $(_BuildArgs) + $(_PublishArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: Linux_musl_x64_Logs + path: artifacts/log/ + publishOnError: true + - name: Linux_musl_x64_Packages + path: artifacts/packages/ + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_musl_x64 -# Build Windows ARM -- template: jobs/default-build.yml - parameters: - codeSign: true - jobName: Windows_arm_build - jobDisplayName: "Build: Windows ARM" - agentOs: Windows - buildArgs: - -arch arm - -sign - -pack - -noBuildNodeJS - -noBuildJava - /p:OnlyPackPlatformSpecificPackages=true - /bl:artifacts/log/build.win-arm.binlog - $(_BuildArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Windows_arm_Packages - path: artifacts/packages/ - - name: Windows_arm_Manifests - path: artifacts/manifests/ - - name: Windows_arm_Installers - path: artifacts/installers/ - - name: Windows_arm_Logs - path: artifacts/log/ - publishOnError: true + # Build Linux Musl ARM64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_musl_arm64_build + jobDisplayName: "Build: Linux Musl ARM64" + agentOs: Linux + buildScript: ./dockerbuild.sh ubuntu-alpine37 + buildArgs: + --ci + --arch arm64 + --os-name linux-musl + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -bl:artifacts/log/build.musl.binlog + -p:AssetManifestFileName=aspnetcore-Linux_musl_arm64.xml + $(_BuildArgs) + $(_PublishArgs) + installNodeJs: false + installJdk: false + artifacts: + - name: Linux_musl_arm64_Logs + path: artifacts/log/ + publishOnError: true + - name: Linux_musl_arm64_Packages + path: artifacts/packages/ + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_musl_arm64 -# Build MacOS -- template: jobs/default-build.yml - parameters: - jobName: MacOs_x64_build - jobDisplayName: "Build: macOS" - agentOs: macOs - buildArgs: - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -bl:artifacts/log/build.macos.binlog - $(_BuildArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: MacOS_x64_Packages - path: artifacts/packages/ - - name: MacOS_x64_Manifests - path: artifacts/manifests/ - - name: MacOS_x64_Installers - path: artifacts/installers/ - - name: MacOS_x64_Logs - path: artifacts/log/ - publishOnError: true -- template: jobs/codesign-xplat.yml - parameters: - inputName: MacOS_x64 + # Test jobs + - template: jobs/default-build.yml + parameters: + condition: ne(variables['SkipTests'], 'true') + jobName: Windows_Test + jobDisplayName: "Test: Windows Server 2016 x64" + agentOs: Windows + isTestingJob: true + buildArgs: -all -pack -test -BuildNative "/p:SkipIISNewHandlerTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false" + beforeBuild: + - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" + displayName: Setup IISExpress test certificates and schema + afterBuild: + - powershell: "& ./build.ps1 -CI -NoBuild -Test /p:RunFlakyTests=true" + displayName: Run Flaky Tests + continueOnError: true + artifacts: + - name: Windows_Test_Logs + path: artifacts/log/ + publishOnError: true + - name: Windows_Test_Results + path: artifacts/TestResults/ + publishOnError: true -# Build Linux x64 -- template: jobs/default-build.yml - parameters: - jobName: Linux_x64_build - jobDisplayName: "Build: Linux x64" - agentOs: Linux + - template: jobs/default-build.yml + parameters: + condition: ne(variables['SkipTests'], 'true') + jobName: Windows_Templates_Test + jobDisplayName: "Test: Templates - Windows Server 2016 x64" + agentOs: Windows + isTestingJob: true + steps: + - script: ./build.cmd -ci -all -pack + displayName: Build Repo + - script: ./src/ProjectTemplates/build.cmd -ci -pack -NoRestore -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.pack.binlog" + displayName: Pack Templates + - script: ./src/ProjectTemplates/build.cmd -ci -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.test.binlog" + displayName: Test Templates + artifacts: + - name: Windows_Test_Templates_Logs + path: artifacts/log/ + publishOnError: true + - name: Windows_Test_Templates_Results + path: artifacts/TestResults/ + publishOnError: true + + - template: jobs/default-build.yml + parameters: + condition: ne(variables['SkipTests'], 'true') + jobName: MacOS_Test + jobDisplayName: "Test: macOS 10.13" + agentOs: macOS + isTestingJob: true + buildArgs: --all --test "/p:RunTemplateTests=false" + beforeBuild: + - bash: "./eng/scripts/install-nginx-mac.sh" + displayName: Installing Nginx + afterBuild: + - bash: ./build.sh --ci --pack --no-build --no-restore --no-build-deps "/bl:artifacts/log/packages.pack.binlog" + displayName: Pack Packages (for Template tests) + - bash: ./src/ProjectTemplates/build.sh --ci --pack --no-restore --no-build-deps "/bl:artifacts/log/template.pack.binlog" + displayName: Pack Templates (for Template tests) + - bash: ./build.sh --no-build --ci --test -p:RunFlakyTests=true + displayName: Run Flaky Tests + continueOnError: true + artifacts: + - name: MacOS_Test_Logs + path: artifacts/log/ + publishOnError: true + - name: MacOS_Test_Results + path: artifacts/TestResults/ + publishOnError: true + + - template: jobs/default-build.yml + parameters: + condition: ne(variables['SkipTests'], 'true') + jobName: Linux_Test + jobDisplayName: "Test: Ubuntu 16.04 x64" + agentOs: Linux + isTestingJob: true + buildArgs: --all --test "/p:RunTemplateTests=false" + beforeBuild: + - bash: "./eng/scripts/install-nginx-linux.sh" + displayName: Installing Nginx + - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p" + displayName: Increase inotify limit + afterBuild: + - bash: ./build.sh --ci --pack --no-build --no-restore --no-build-deps "/bl:artifacts/log/packages.pack.binlog" + displayName: Pack Packages (for Template tests) + - bash: ./src/ProjectTemplates/build.sh --ci --pack --no-restore --no-build-deps "/bl:artifacts/log/template.pack.binlog" + displayName: Pack Templates (for Template tests) + - bash: ./build.sh --no-build --ci --test -p:RunFlakyTests=true + displayName: Run Flaky Tests + continueOnError: true + artifacts: + - name: Linux_Test_Logs + path: artifacts/log/ + publishOnError: true + - name: Linux_Test_Results + path: artifacts/TestResults/ + publishOnError: true + + # Source build + - job: Source_Build + displayName: 'Test: Linux Source Build' + container: centos:7 + pool: + vmImage: 'ubuntu-16.04' + variables: + DotNetCoreSdkDir: $(Agent.ToolsDirectory)/dotnet + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: true steps: - - script: ./build.sh - --ci - --arch x64 - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -bl:artifacts/log/build.linux-x64.binlog - $(_BuildArgs) - displayName: Run build.sh - script: | - git clean -xfd src/**/obj/ - ./dockerbuild.sh bionic \ - --ci \ - --arch x64 \ - --build-installers \ - --no-build-deps \ - --no-build-nodejs \ - -p:OnlyPackPlatformSpecificPackages=true \ - -p:BuildRuntimeArchive=false \ - -p:LinuxInstallerType=deb \ - -bl:artifacts/log/build.deb.binlog \ - $(_BuildArgs) - displayName: Build Debian installers - - script: | - git clean -xfd src/**/obj/ - ./dockerbuild.sh rhel \ - --ci \ - --arch x64 \ - --build-installers \ - --no-build-deps \ - --no-build-nodejs \ - -p:OnlyPackPlatformSpecificPackages=true \ - -p:BuildRuntimeArchive=false \ - -p:LinuxInstallerType=rpm \ - -bl:artifacts/log/build.rpm.binlog \ - $(_BuildArgs) - displayName: Build RPM installers - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_x64_Packages - path: artifacts/packages/ - - name: Linux_x64_Manifests - path: artifacts/manifests/ - - name: Linux_x64_Installers - path: artifacts/installers/ - - name: Linux_x64_Logs - path: artifacts/log/ - publishOnError: true -- template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_x64 - -# Build Linux ARM -- template: jobs/default-build.yml - parameters: - jobName: Linux_arm_build - jobDisplayName: "Build: Linux ARM" - agentOs: Linux - buildArgs: - --arch arm - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -bl:artifacts/log/build.linux-arm.binlog - $(_BuildArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_arm_Packages - path: artifacts/packages/ - - name: Linux_arm_Manifests - path: artifacts/manifests/ - - name: Linux_arm_Installers - path: artifacts/installers/ - - name: Linux_arm_Logs - path: artifacts/log/ - publishOnError: true -- template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_arm - -# Build Linux ARM64 -- template: jobs/default-build.yml - parameters: - jobName: Linux_arm64_build - jobDisplayName: "Build: Linux ARM64" - agentOs: Linux - buildArgs: - --arch arm64 - --all - --pack - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -bl:artifacts/log/build.arm64.binlog - $(_BuildArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_arm64_Packages - path: artifacts/packages/ - - name: Linux_arm64_Manifests - path: artifacts/manifests/ - - name: Linux_arm64_Installers - path: artifacts/installers/ - - name: Linux_arm64_Logs - path: artifacts/log/ - publishOnError: true -- template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_arm64 - -# Build Linux Musl x64 -- template: jobs/default-build.yml - parameters: - jobName: Linux_musl_x64_build - jobDisplayName: "Build: Linux Musl x64" - agentOs: Linux - buildScript: ./dockerbuild.sh alpine - buildArgs: - --ci - --arch x64 - --os-name linux-musl - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -bl:artifacts/log/build.musl.binlog - $(_BuildArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_musl_x64_Packages - path: artifacts/packages/ - - name: Linux_musl_x64_Manifests - path: artifacts/manifests/ - - name: Linux_musl_x64_Installers - path: artifacts/installers/ - - name: Linux_musl_x64_Logs - path: artifacts/log/ - publishOnError: true -- template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_musl_x64 - -# Build Linux Musl ARM64 -- template: jobs/default-build.yml - parameters: - jobName: Linux_musl_arm64_build - jobDisplayName: "Build: Linux Musl ARM64" - agentOs: Linux - buildScript: ./dockerbuild.sh ubuntu-alpine37 - buildArgs: - --ci - --arch arm64 - --os-name linux-musl - --pack - --all - --no-build-nodejs - --no-build-java - -p:OnlyPackPlatformSpecificPackages=true - -bl:artifacts/log/build.musl.binlog - $(_BuildArgs) - installNodeJs: false - installJdk: false - artifacts: - - name: Linux_musl_arm64_Packages - path: artifacts/packages/ - - name: Linux_musl_arm64_Manifests - path: artifacts/manifests/ - - name: Linux_musl_arm64_Installers - path: artifacts/installers/ - - name: Linux_musl_arm64_Logs - path: artifacts/log/ - publishOnError: true -- template: jobs/codesign-xplat.yml - parameters: - inputName: Linux_musl_arm64 - -# Test jobs -- template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: Windows_Test - jobDisplayName: "Test: Windows Server 2016 x64" - agentOs: Windows - isTestingJob: true - buildArgs: -all -pack -test -BuildNative "/p:SkipIISNewHandlerTests=true /p:SkipIISTests=true /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false" - beforeBuild: - - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" - displayName: Setup IISExpress test certificates and schema - afterBuild: - - powershell: "& ./build.ps1 -CI -NoBuild -Test /p:RunFlakyTests=true" - displayName: Run Flaky Tests + source eng/common/native/common-library.sh + mkdir -p $HOME/bin + GetFile https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $HOME/bin/jq + chmod +x $HOME/bin/jq + echo "##vso[task.prependpath]$HOME/bin" + displayName: Install jq + - task: UseDotNet@2 + displayName: 'Use .NET Core sdk' + inputs: + packageType: sdk + # The SDK version selected here is intentionally supposed to use the latest release + # For the purpose of building Linux distros, we can't depend on features of the SDK + # which may not exist in pre-built versions of the SDK + # Pinning to preview 8 since preview 9 has breaking changes + version: 3.0.100-preview8-013656 + installationPath: $(DotNetCoreSdkDir) + includePreviewVersions: true + - script: ./eng/scripts/ci-source-build.sh --ci --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false + displayName: Run ci-source-build.sh + - task: PublishBuildArtifacts@1 + displayName: Upload logs + condition: always() continueOnError: true - artifacts: - - name: Windows_Test_Logs - path: artifacts/log/ - publishOnError: true - - name: Windows_Test_Results - path: artifacts/TestResults/ - publishOnError: true + inputs: + pathtoPublish: artifacts/log/ + artifactName: Source_Build_Logs + artifactType: Container + parallel: true + - task: PublishBuildArtifacts@1 + displayName: Upload package artifacts + # Only capture source build artifacts in PRs for the sake of inspecting + # changes that impact source-build. The artifacts from this build pipeline are never actually used. + condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) + inputs: + pathtoPublish: artifacts/packages/ + artifactName: Source_Build_Packages + artifactType: Container + parallel: true -- template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: Windows_Templates_Test - jobDisplayName: "Test: Templates - Windows Server 2016 x64" - agentOs: Windows - isTestingJob: true - steps: - - script: ./build.cmd -ci -all -pack - displayName: Build Repo - - script: ./src/ProjectTemplates/build.cmd -ci -pack -NoRestore -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.pack.binlog" - displayName: Pack Templates - - script: ./src/ProjectTemplates/build.cmd -ci -test -NoRestore -NoBuild -NoBuilddeps "/p:RunTemplateTests=true /bl:artifacts/log/template.test.binlog" - displayName: Test Templates - artifacts: - - name: Windows_Test_Templates_Logs - path: artifacts/log/ - publishOnError: true - - name: Windows_Test_Templates_Results - path: artifacts/TestResults/ - publishOnError: true + # Publish to the BAR + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: /eng/common/templates/job/publish-build-assets.yml + parameters: + dependsOn: + - Windows_build + - Windows_arm_build + - CodeSign_Xplat_MacOS_x64 + - CodeSign_Xplat_Linux_x64 + - CodeSign_Xplat_Linux_arm + - CodeSign_Xplat_Linux_arm64 + - CodeSign_Xplat_Linux_musl_x64 + - CodeSign_Xplat_Linux_musl_arm64 + # In addition to the dependencies above, ensure the build was successful overall. + - Code_check + - Linux_Test + - MacOS_Test + - Source_Build + - Windows_Templates_Test + - Windows_Test + pool: + vmImage: vs2017-win2016 + publishUsingPipelines: ${{ variables._PublishUsingPipelines }} + enablePublishBuildArtifacts: true # publish artifacts/log files -- template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: MacOs_Test - jobDisplayName: "Test: macOS 10.13" - agentOs: macOs - isTestingJob: true - buildArgs: --all --test "/p:RunTemplateTests=false" - beforeBuild: - - bash: "./eng/scripts/install-nginx-mac.sh" - displayName: Installing Nginx - afterBuild: - - bash: ./build.sh --ci --pack --no-build --no-restore --no-build-deps "/bl:artifacts/log/packages.pack.binlog" - displayName: Pack Packages (for Template tests) - - bash: ./src/ProjectTemplates/build.sh --ci --pack --no-restore --no-build-deps "/bl:artifacts/log/template.pack.binlog" - displayName: Pack Templates (for Template tests) - - bash: ./build.sh --no-build --ci --test -p:RunFlakyTests=true - displayName: Run Flaky Tests - continueOnError: true - artifacts: - - name: MacOS_Test_Logs - path: artifacts/log/ - publishOnError: true - - name: MacOS_Test_Results - path: artifacts/TestResults/ - publishOnError: true - -- template: jobs/default-build.yml - parameters: - condition: ne(variables['SkipTests'], 'true') - jobName: Linux_Test - jobDisplayName: "Test: Ubuntu 16.04 x64" - agentOs: Linux - isTestingJob: true - buildArgs: --all --test "/p:RunTemplateTests=false" - beforeBuild: - - bash: "./eng/scripts/install-nginx-linux.sh" - displayName: Installing Nginx - - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p" - displayName: Increase inotify limit - afterBuild: - - bash: ./build.sh --ci --pack --no-build --no-restore --no-build-deps "/bl:artifacts/log/packages.pack.binlog" - displayName: Pack Packages (for Template tests) - - bash: ./src/ProjectTemplates/build.sh --ci --pack --no-restore --no-build-deps "/bl:artifacts/log/template.pack.binlog" - displayName: Pack Templates (for Template tests) - - bash: ./build.sh --no-build --ci --test -p:RunFlakyTests=true - displayName: Run Flaky Tests - continueOnError: true - artifacts: - - name: Linux_Test_Logs - path: artifacts/log/ - publishOnError: true - - name: Linux_Test_Results - path: artifacts/TestResults/ - publishOnError: true - -# Source build -- job: Source_Build - displayName: 'Test: Linux Source Build' - container: centos:7 - pool: - vmImage: 'ubuntu-16.04' - variables: - DotNetCoreSdkDir: $(Agent.ToolsDirectory)/dotnet - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: true - steps: - - script: | - source eng/common/native/common-library.sh - mkdir -p $HOME/bin - GetFile https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64 $HOME/bin/jq - chmod +x $HOME/bin/jq - echo "##vso[task.prependpath]$HOME/bin" - displayName: Install jq - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk' - inputs: - packageType: sdk - # The SDK version selected here is intentionally supposed to use the latest release - # For the purpose of building Linux distros, we can't depend on features of the SDK - # which may not exist in pre-built versions of the SDK - # Pinning to preview 8 since preview 9 has breaking changes - # version: 3.0.x - version: 3.0.100-preview8-013656 - installationPath: $(DotNetCoreSdkDir) - includePreviewVersions: true - - script: ./eng/scripts/ci-source-build.sh --ci --configuration Release /p:BuildManaged=true /p:BuildNodeJs=false - displayName: Run ci-source-build.sh - - task: PublishBuildArtifacts@1 - displayName: Upload logs - condition: always() - continueOnError: true - inputs: - pathtoPublish: artifacts/log/ - artifactName: Source_Build_Logs - artifactType: Container - parallel: true - - task: PublishBuildArtifacts@1 - displayName: Upload package artifacts - # Only capture source build artifacts in PRs for the sake of inspecting - # changes that impact source-build. The artifacts from this build pipeline are never actually used. - condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) - inputs: - pathtoPublish: artifacts/packages/ - artifactName: Source_Build_Packages - artifactType: Container - parallel: true +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: /eng/common/templates/post-build/post-build.yml + parameters: + # See https://github.com/dotnet/arcade/issues/2871 + enableSymbolValidation: false + enableSigningValidation: false + publishInstallersAndChecksums: true diff --git a/.azure/pipelines/jobs/codesign-xplat.yml b/.azure/pipelines/jobs/codesign-xplat.yml index b2a683d63e..b0d9a584ea 100644 --- a/.azure/pipelines/jobs/codesign-xplat.yml +++ b/.azure/pipelines/jobs/codesign-xplat.yml @@ -19,13 +19,30 @@ jobs: displayName: Download ${{ parameters.inputName }} artifacts inputs: artifactName: ${{ parameters.inputName }}_Packages - downloadPath: $(Build.StagingDirectory)/deps/ + downloadPath: $(Build.StagingDirectory)/downloaded_packages/ itemPattern: '**/*.nupkg' - - task: MSBuild@1 - displayName: Code-sign .nupkg files + - task: CopyFiles@2 + displayName: Copy packages to ArtifactsShippingPackagesDir inputs: - solution: eng\tools\XplatPackageSigner\XplatPackageSigner.proj - msbuildArguments: /p:SignType=$(_SignType) /p:DirectoryToSign=$(Build.StagingDirectory)\deps\${{ parameters.inputName }}_Packages\ + sourceFolder: $(Build.StagingDirectory)/downloaded_packages/ + contents: '**/*.nupkg' + targetFolder: $(Build.SourcesDirectory)/artifacts/packages/$(BuildConfiguration)/shipping/ + flattenFolders: true + - powershell: .\eng\common\build.ps1 + -ci + -restore + -sign + -publish + -configuration $(BuildConfiguration) + -projects $(Build.SourcesDirectory)/eng/empty.proj + /p:AssetManifestFileName=aspnetcore-${{ parameters.inputName }}-signed.xml + /p:DotNetSignType=$(_SignType) + $(_BuildArgs) + $(_PublishArgs) + displayName: Sign and publish packages artifacts: + - name: CodeSign_Xplat_${{ parameters.inputName }}_Logs + path: artifacts/log/ + publishOnError: true - name: ${{ parameters.inputName }}_Packages_Signed - path: $(Build.StagingDirectory)\deps\${{ parameters.inputName }}_Packages\ + path: artifacts/packages/ diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 2c47005dfc..45d7bc6184 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -5,10 +5,6 @@ # The name of the job. Defaults to the name of the OS. No spaces allowed # jobDisplayName: string # The friendly job name to display in the UI. Defaults to the name of the OS. -# poolName: string -# The name of the Azure DevOps agent pool to use. -# poolVmImage: string -# The name of a virtual machine image to use. Primarily of interest when using the Hosted pools. # agentOs: string # Used in templates to define variables which are OS specific. Typically from the set { Windows, Linux, macOS } # buildArgs: string @@ -21,20 +17,18 @@ # afterBuild: [steps] # Additional steps to run after build.sh/cmd # artifacts: [array] -# - path: string -# The file path to artifacts output -# includeForks: boolean -# Should artifacts from forks be published -# name: string +# name: string # The name of the artifact container -# variables: { string: string } -# A map of custom variables -# matrix: { string: { string: string } } -# A map of matrix configurations and variables. https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#job +# - path: string +# The file path to artifacts output +# includeForks: boolean +# Should artifacts from forks be published? +# publishOnError: boolean +# Should artifacts be published if previous step failed? # dependsOn: string | [ string ] -# For fan-out/fan-in. https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#job +# For fan-out/fan-in. https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#job # condition: string -# A condition which can be used to skip the job completely +# A condition which can be used to skip the job completely # codeSign: boolean # This build definition is enabled for code signing. (Only applies to Windows) # buildDirectory: string @@ -48,20 +42,16 @@ parameters: agentOs: 'Windows' - poolName: '' - poolVmImage: '' buildArgs: '' configuration: 'Release' beforeBuild: [] # steps: [] don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.steps)" afterBuild: [] codeSign: false - variables: {} dependsOn: '' condition: '' # jobName: '' - use agentOs by default. # jobDisplayName: '' - use agentOs by default. - # matrix: {} - don't define an empty object default because there is no way in template expression yet to check "if isEmpty(parameters.matrix)" artifacts: [] buildDirectory: '' buildScript: '' @@ -75,182 +65,159 @@ parameters: cancelTimeoutInMinutes: 15 jobs: -- job: ${{ coalesce(parameters.jobName, parameters.agentOs) }} - displayName: ${{ coalesce(parameters.jobDisplayName, parameters.agentOs) }} - dependsOn: ${{ parameters.dependsOn }} - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - workspace: - clean: all - strategy: - ${{ if ne(parameters.matrix, '') }}: - maxParallel: 8 - matrix: ${{ parameters.matrix }} - # Map friendly OS names to the right queue - # See https://github.com/dotnet/arcade/blob/master/Documentation/ChoosingAMachinePool.md - pool: - ${{ if ne(parameters.poolVmImage, '') }}: - vmImage: ${{ parameters.poolVmImage }} - ${{ if and(eq(parameters.poolVmImage, ''), eq(parameters.agentOs, 'macOS')) }}: - vmImage: macOS-10.13 - ${{ if and(eq(parameters.poolVmImage, ''), eq(parameters.agentOs, 'Linux')) }}: - vmImage: ubuntu-16.04 - ${{ if ne(parameters.poolName, '') }}: - name: ${{ parameters.poolName }} - ${{ if and(eq(parameters.poolName, ''), eq(parameters.agentOs, 'Windows')) }}: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: NetCorePublic-Pool - ${{ if ne(parameters.isTestingJob, true) }}: - # Visual Studio Build Tools - queue: BuildPool.Windows.10.Amd64.VS2019.BT.Open - ${{ if eq(parameters.isTestingJob, true) }}: +- template: /eng/common/templates/job/job.yml + parameters: + name: ${{ coalesce(parameters.jobName, parameters.agentOs) }} + displayName: ${{ coalesce(parameters.jobDisplayName, parameters.agentOs) }} + dependsOn: ${{ parameters.dependsOn }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} + ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}: + enableMicrobuild: true + enablePublishBuildAssets: true + enablePublishUsingPipelines: ${{ variables._PublishUsingPipelines }} + enablePublishTestResults: true # publish test results to AzDO (populates AzDO Tests tab) + enableTelemetry: true + helixRepo: aspnet/AspNetCore + helixType: build.product/ + workspace: + clean: all + # Map friendly OS names to the right queue + # See https://github.com/dotnet/arcade/blob/master/Documentation/ChoosingAMachinePool.md + pool: + ${{ if eq(parameters.agentOs, 'macOS') }}: + vmImage: macOS-10.13 + ${{ if eq(parameters.agentOs, 'Linux') }}: + vmImage: ubuntu-16.04 + ${{ if eq(parameters.agentOs, 'Windows') }}: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: NetCorePublic-Pool + ${{ if ne(parameters.isTestingJob, true) }}: + # Visual Studio Build Tools + queue: BuildPool.Windows.10.Amd64.VS2019.BT.Open + ${{ if eq(parameters.isTestingJob, true) }}: + # Visual Studio Enterprise - contains some stuff, like SQL Server and IIS Express, that we use for testing + queue: BuildPool.Windows.10.Amd64.VS2019.Open + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: NetCoreInternal-Pool # Visual Studio Enterprise - contains some stuff, like SQL Server and IIS Express, that we use for testing - queue: BuildPool.Windows.10.Amd64.VS2019.Open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: NetCoreInternal-Pool - # Visual Studio Enterprise - contains some stuff, like SQL Server and IIS Express, that we use for testing - queue: BuildPool.Windows.10.Amd64.VS2019 - variables: - AgentOsName: ${{ parameters.agentOs }} - ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping - DOTNET_HOME: $(Build.SourcesDirectory)/.dotnet - BuildScript: ${{ parameters.buildScript }} - BuildScriptArgs: ${{ parameters.buildArgs }} - BuildConfiguration: ${{ parameters.configuration }} - BuildDirectory: ${{ parameters.buildDirectory }} - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true - TeamName: AspNetCore - ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}: - JAVA_HOME: $(Agent.BuildDirectory)\.tools\jdk\win-x64 - ${{ if or(ne(parameters.codeSign, true), ne(variables['System.TeamProject'], 'internal')) }}: - _SignType: '' - ${{ if and(eq(parameters.codeSign, true), eq(variables['System.TeamProject'], 'internal')) }}: - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: - _SignType: real - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: - _SignType: test - ${{ insert }}: ${{ parameters.variables }} - steps: - - checkout: self - clean: true - - ${{ if eq(parameters.installNodeJs, 'true') }}: - - task: NodeTool@0 - displayName: Install Node 10.x - inputs: - versionSpec: 10.x - - ${{ if eq(parameters.agentOs, 'Windows') }}: - - task: NuGetCommand@2 - displayName: 'Clear NuGet caches' - condition: succeeded() - inputs: - command: custom - arguments: 'locals all -clear' - - ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}: - - powershell: ./eng/scripts/InstallJdk.ps1 - displayName: Install JDK 11 + queue: BuildPool.Windows.10.Amd64.VS2019 + variables: + - AgentOsName: ${{ parameters.agentOs }} + - ASPNETCORE_TEST_LOG_MAXPATH: "200" # Keep test log file name length low enough for artifact zipping + - BuildScript: ${{ parameters.buildScript }} + - BuildScriptArgs: ${{ parameters.buildArgs }} + - _BuildConfig: ${{ parameters.configuration }} + - BuildConfiguration: ${{ parameters.configuration }} + - BuildDirectory: ${{ parameters.buildDirectory }} + - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true + - TeamName: AspNetCore + - ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}: + - JAVA_HOME: $(Agent.BuildDirectory)\.tools\jdk\win-x64 + - ${{ if or(ne(parameters.codeSign, true), ne(variables['System.TeamProject'], 'internal')) }}: + - _SignType: '' + - ${{ if and(eq(parameters.codeSign, true), eq(variables['System.TeamProject'], 'internal')) }}: + - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + - _SignType: real + - ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - _SignType: test + steps: + - checkout: self + clean: true + - ${{ if eq(parameters.installNodeJs, 'true') }}: + - task: NodeTool@0 + displayName: Install Node 10.x + inputs: + versionSpec: 10.x + - ${{ if eq(parameters.agentOs, 'Windows') }}: + - task: NuGetCommand@2 + displayName: 'Clear NuGet caches' + condition: succeeded() + inputs: + command: custom + arguments: 'locals all -clear' + - ${{ if and(eq(parameters.installJdk, 'true'), eq(parameters.agentOs, 'Windows')) }}: + - powershell: ./eng/scripts/InstallJdk.ps1 + displayName: Install JDK 11 + - ${{ if eq(parameters.isTestingJob, true) }}: + - powershell: | + Write-Host "##vso[task.setvariable variable=SeleniumProcessTrackingFolder]$(BuildDirectory)\artifacts\tmp\selenium\" + ./eng/scripts/InstallGoogleChrome.ps1 + displayName: Install Chrome + + - ${{ parameters.beforeBuild }} + + - ${{ if ne(parameters.steps, '')}}: + - ${{ parameters.steps }} + - ${{ if eq(parameters.steps, '')}}: + - ${{ if eq(parameters.buildScript, '') }}: + - ${{ if eq(parameters.agentOs, 'Windows') }}: + - script: .\$(BuildDirectory)\build.cmd -ci /p:DotNetSignType=$(_SignType) -Configuration $(BuildConfiguration) $(BuildScriptArgs) + displayName: Run build.cmd + - ${{ if ne(parameters.agentOs, 'Windows') }}: + - script: ./$(BuildDirectory)/build.sh -ci -configuration $(BuildConfiguration) $(BuildScriptArgs) + displayName: Run build.sh + - ${{ if ne(parameters.buildScript, '') }}: + - script: $(BuildScript) -Configuration $(BuildConfiguration) $(BuildScriptArgs) + displayName: run $(BuildScript) + + - ${{ parameters.afterBuild }} + + - ${{ if eq(parameters.agentOs, 'Windows') }}: + - powershell: eng\scripts\KillProcesses.ps1 + displayName: Kill processes + continueOnError: true + condition: always() + - ${{ if ne(parameters.agentOs, 'Windows') }}: + - script: eng/scripts/KillProcesses.sh + displayName: Kill processes + continueOnError: true + condition: always() + + - ${{ each artifact in parameters.artifacts }}: + - task: PublishBuildArtifacts@1 + displayName: Upload artifacts from ${{ artifact.path }} + condition: and(or(succeeded(), eq('${{ artifact.publishOnError }}', 'true')), or(eq(variables['system.pullrequest.isfork'], false), eq('${{ artifact.includeForks }}', 'true'))) + continueOnError: true + inputs: + ${{ if eq(parameters.buildDirectory, '') }}: + pathtoPublish: ${{ artifact.path }} + ${{ if ne(parameters.buildDirectory, '') }}: + pathtoPublish: ${{ parameters.buildDirectory }}\${{ artifact.path }} + ${{ if eq(artifact.name, '') }}: + artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration) + ${{ if ne(artifact.name, '') }}: + artifactName: ${{ artifact.name }} + artifactType: Container + parallel: true + - ${{ if eq(parameters.isTestingJob, true) }}: - - powershell: | - Write-Host "##vso[task.setvariable variable=SeleniumProcessTrackingFolder]$(BuildDirectory)\artifacts\tmp\selenium\" - ./eng/scripts/InstallGoogleChrome.ps1 - displayName: Install Chrome - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows'), eq(parameters.codeSign, 'true')) }}: - - task: MicroBuildSigningPlugin@1 - displayName: Install MicroBuild Signing plugin - condition: and(succeeded(), in(variables['_SignType'], 'test', 'real')) - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - - - ${{ parameters.beforeBuild }} - - - ${{ if ne(parameters.steps, '')}}: - - ${{ parameters.steps }} - - ${{ if eq(parameters.steps, '')}}: - - ${{ if eq(parameters.buildScript, '') }}: - - ${{ if eq(parameters.agentOs, 'Windows') }}: - - script: .\$(BuildDirectory)\build.cmd -ci /p:DotNetSignType=$(_SignType) -Configuration $(BuildConfiguration) $(BuildScriptArgs) - displayName: Run build.cmd - - ${{ if ne(parameters.agentOs, 'Windows') }}: - - script: ./$(BuildDirectory)/build.sh -ci -configuration $(BuildConfiguration) $(BuildScriptArgs) - displayName: Run build.sh - - ${{ if ne(parameters.buildScript, '') }}: - - script: $(BuildScript) -Configuration $(BuildConfiguration) $(BuildScriptArgs) - displayName: run $(BuildScript) - - - ${{ parameters.afterBuild }} - - - ${{ if eq(parameters.agentOs, 'Windows') }}: - - powershell: eng\scripts\KillProcesses.ps1 - displayName: Kill processes - continueOnError: true - condition: always() - - ${{ if ne(parameters.agentOs, 'Windows') }}: - - script: eng/scripts/KillProcesses.sh - displayName: Kill processes - continueOnError: true - condition: always() - - - ${{ each artifact in parameters.artifacts }}: - - task: PublishBuildArtifacts@1 - displayName: Upload artifacts from ${{ artifact.path }} - condition: and(or(succeeded(), eq('${{ artifact.publishOnError }}', 'true')), or(eq(variables['system.pullrequest.isfork'], false), eq('${{ artifact.includeForks }}', 'true'))) - continueOnError: true - inputs: - ${{ if eq(parameters.buildDirectory, '') }}: - pathtoPublish: ${{ artifact.path }} - ${{ if ne(parameters.buildDirectory, '') }}: - pathtoPublish: ${{ parameters.buildDirectory }}\${{ artifact.path }} - ${{ if eq(artifact.name, '') }}: - artifactName: artifacts-$(AgentOsName)-$(BuildConfiguration) - ${{ if ne(artifact.name, '') }}: - artifactName: ${{ artifact.name }} - artifactType: Container - parallel: true - - - ${{ if eq(parameters.isTestingJob, true) }}: - - task: PublishTestResults@2 - displayName: Publish test results - condition: always() - continueOnError: true - inputs: - testRunTitle: $(AgentOsName)-$(BuildConfiguration) - testRunner: vstest - testResultsFiles: '**/artifacts/**/*.trx' - mergeTestResults: true - buildConfiguration: $(BuildConfiguration) - buildPlatform: $(AgentOsName) - - task: PublishTestResults@2 - displayName: Publish test results - condition: always() - continueOnError: true - inputs: - testRunTitle: $(AgentOsName)-$(BuildConfiguration) - testRunner: xunit - testResultsFiles: '**/artifacts/TestResults/**/*.xml' - mergeTestResults: true - buildConfiguration: $(BuildConfiguration) - buildPlatform: $(AgentOsName) - - task: PublishTestResults@2 - displayName: Publish js test results - condition: always() - inputs: - testRunner: junit - testResultsFiles: '**/artifacts/log/**/*.junit.xml' - buildConfiguration: $(BuildConfiguration) - buildPlatform: $(AgentOsName) - - task: PublishTestResults@2 - displayName: Publish Java test results - condition: always() - inputs: - testRunner: junit - testResultsFiles: '**/TEST-com.microsoft.signalr*.xml' - buildConfiguration: $(BuildConfiguration) - buildPlatform: $(AgentOsName) - - - - ${{ if and(eq(variables['System.TeamProject'], 'internal'), eq(parameters.agentOs, 'Windows')) }}: - - task: MicroBuildCleanup@1 - displayName: Cleanup MicroBuild tasks - condition: always() + - task: PublishTestResults@2 + displayName: Publish VSTest test results + condition: always() + continueOnError: true + inputs: + testRunTitle: $(AgentOsName)-$(BuildConfiguration) + testRunner: vstest + testResultsFiles: '**/artifacts/**/*.trx' + mergeTestResults: true + buildConfiguration: $(BuildConfiguration) + buildPlatform: $(AgentOsName) + - task: PublishTestResults@2 + displayName: Publish js test results + condition: always() + inputs: + testRunner: junit + testResultsFiles: '**/artifacts/log/**/*.junit.xml' + buildConfiguration: $(BuildConfiguration) + buildPlatform: $(AgentOsName) + - task: PublishTestResults@2 + displayName: Publish Java test results + condition: always() + inputs: + testRunner: junit + testResultsFiles: '**/TEST-com.microsoft.signalr*.xml' + buildConfiguration: $(BuildConfiguration) + buildPlatform: $(AgentOsName) diff --git a/Directory.Build.props b/Directory.Build.props index 06e288aa81..4017184d04 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -21,6 +21,15 @@ true true false + + + false + true @@ -119,7 +128,7 @@ false - + $(ArtifactsDir)installers\$(Configuration)\ $(ArtifactsDir)symbols\$(Configuration)\ diff --git a/Directory.Build.targets b/Directory.Build.targets index f5b217f365..b3faf802c6 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -30,7 +30,8 @@ - $(PreReleaseBrandingLabel) Build $(VersionSuffix) + + $(PreReleaseBrandingLabel) Build $(VersionSuffix) $(VersionPrefix) $(PackageBrandingVersion) $(BrandingVersionSuffix.Trim()) diff --git a/build.sh b/build.sh index ad4ce2c1c8..05e1628368 100755 --- a/build.sh +++ b/build.sh @@ -221,7 +221,7 @@ if [ "$build_deps" = false ]; then msbuild_args[${#msbuild_args[*]}]="-p:BuildProjectReferences=false" fi -if [ "$build_managed" = true ] || (["$build_all" = true ] && [ "$build_managed" != false ]); then +if [ "$build_managed" = true ] || ([ "$build_all" = true ] && [ "$build_managed" != false ]); then if [ -z "$build_nodejs" ]; then if [ -x "$(command -v node)" ]; then __warn "Building of C# project is enabled and has dependencies on NodeJS projects. Building of NodeJS projects is enabled since node is detected on PATH." @@ -266,6 +266,10 @@ if [ -z "$configuration" ]; then fi msbuild_args[${#msbuild_args[*]}]="-p:Configuration=$configuration" +# Set verbosity +echo "Setting msbuild verbosity to $verbosity" +msbuild_args[${#msbuild_args[*]}]="-verbosity:$verbosity" + # Initialize global variables need to be set before the import of Arcade is imported restore=$run_restore diff --git a/dockerbuild.sh b/dockerbuild.sh index 10ce8e9d08..f73a017491 100755 --- a/dockerbuild.sh +++ b/dockerbuild.sh @@ -124,6 +124,7 @@ docker build "$(dirname "$dockerfile")" \ --build-arg "USER=$(whoami)" \ --build-arg "USER_ID=$(id -u)" \ --build-arg "GROUP_ID=$(id -g)" \ + --build-arg "WORKDIR=$DIR" \ --tag $tagname \ -f "$dockerfile" @@ -138,7 +139,7 @@ docker run \ -e BUILD_SOURCEBRANCH \ -e DOTNET_CLI_TELEMETRY_OPTOUT \ -e Configuration \ - -v "$DIR:/code/build" \ + -v "$DIR:$DIR" \ ${docker_args[@]+"${docker_args[@]}"} \ $tagname \ ./build.sh \ diff --git a/docs/Artifacts.md b/docs/Artifacts.md index 450d19f627..6417210cd6 100644 --- a/docs/Artifacts.md +++ b/docs/Artifacts.md @@ -3,22 +3,36 @@ Artifacts Building this repo produces build artifacts in the directory structure described below. Build outputs are organized into logical groups based on artifact type and the intended usage of the artifacts. +See also https://github.com/dotnet/arcade/blob/master/Documentation/ArcadeSdk.md This repo follows _most_ of the conventions described there. + ``` artifacts/ installers/ $(Configuration)/ - *.msi = Windows installers - *.deb, *.rpm = Linux installers - *.zip, *.tar.gz = archives versions of installers + *.msi = Windows installers + *.deb, *.rpm = Linux installers + *.zip, *.tar.gz = archives versions of installers + log/ + runningProcesses*.txt = Process list from just before build completed + runningProcesses*.bak = Process list from two minutes before runningProcesses*.txt files were written + *.binlog = Binary logs for a few build phases e.g. site extension build + **/ + *.log = Log files for test runs and individual tests + $(Configuration)/ + *.binlog = Binary logs for most build phases packages/ $(Configuration)/ - Shipping/ = Packages which are intended for use by customers. These, along with installers, represent the 'product'. - *.nupkg = NuGet packages which ship to nuget.org - *.jar = Java packages which ship to Maven Central and others - *.tgz = NPM packages which ship to npmjs.org - NonShipping/ - *.nupkg = NuGet packages for internal use only. Used to hand off bits to Microsoft partner teams. Not intended for use by customers. + Shipping/ = Packages which are intended for use by customers. These, along with installers, represent the 'product'. + *.nupkg = NuGet packages which ship to nuget.org + *.jar = Java packages which ship to Maven Central and others + *.tgz = NPM packages which ship to npmjs.org + NonShipping/ + *.nupkg = NuGet packages for internal use only. Used to hand off bits to Microsoft partner teams. Not intended for use by customers. + symbols/ + $(Configuration)/ + $(TargetFramework)/ + *.pdb = Loose symbol files for symbol server publication. Special cases where *.symbols.nupkg packaging is cumbersome. VSSetup/ $(Configuration)/ - *.vsix = Visual Studio extensions + *.vsix = Visual Studio extensions. None currently exist. ``` diff --git a/eng/AfterSolutionBuild.targets b/eng/AfterSolutionBuild.targets index 24f5a1b8b2..c82553612f 100644 --- a/eng/AfterSolutionBuild.targets +++ b/eng/AfterSolutionBuild.targets @@ -17,15 +17,4 @@ SharedFrameworkTargetFramework="netcoreapp$(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion)" /> - - - - - - - diff --git a/eng/Publishing.props b/eng/Publishing.props new file mode 100644 index 0000000000..0b01250bff --- /dev/null +++ b/eng/Publishing.props @@ -0,0 +1,56 @@ + + + + $(ArtifactsDir.Substring(0, $([MSBuild]::Subtract($(ArtifactsDir.Length), 1)))) + + $(PublishDependsOnTargets);_PublishInstallers + + <_UploadPathRoot>aspnetcore + + + + + + + + + <_InstallersToPublish Remove="@(_InstallersToPublish)" /> + <_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.jar" UploadPathSegment="jar" /> + <_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.pom" UploadPathSegment="jar" /> + <_InstallersToPublish Include="$(ArtifactsDir)\packages\**\*.tgz" UploadPathSegment="npm" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.deb" UploadPathSegment="Runtime" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.exe" UploadPathSegment="Runtime" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.msi" UploadPathSegment="Runtime" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.rpm" UploadPathSegment="Runtime" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.tar.gz" UploadPathSegment="Runtime" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.version" UploadPathSegment="Runtime" + Condition=" '$(PublishInstallerBaseVersion)' == 'true' " /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.wixlib" UploadPathSegment="Runtime" /> + <_InstallersToPublish Include="$(ArtifactsDir)\installers\**\*.zip" UploadPathSegment="Runtime" /> + + + + + + + + + + <_PackageVersion>@(_ResolvedPackageVersionInfo->'%(PackageVersion)') + + + + + + + + false + NonShipping=true;ShipInstaller=dotnetcli + true + $(_UploadPathRoot)/%(_InstallersToPublish.UploadPathSegment)/$(_PackageVersion)/%(Filename)%(Extension) + + + + diff --git a/eng/SignCheckExclusionsFile.txt b/eng/SignCheckExclusionsFile.txt new file mode 100644 index 0000000000..e047f630ec --- /dev/null +++ b/eng/SignCheckExclusionsFile.txt @@ -0,0 +1,4 @@ +apphost.exe;; Exclude the apphost because this is expected to be code-signed by customers after the SDK modifies it. +.js;; We do not sign JavaScript files. +.binlog;; MSBuild binary logs are not signed though they are sometimes placed where validation thinks they should be. +WixUIWixca|WixDepCA;; We do not sign WiX content in our installers. diff --git a/eng/Signing.props b/eng/Signing.props index 829cd569e9..3b61e9205f 100644 --- a/eng/Signing.props +++ b/eng/Signing.props @@ -21,6 +21,7 @@ --> + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9d48dbd43b..eeb594008c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -412,15 +412,15 @@ https://github.com/aspnet/Extensions 73c259904d5db01bbeede15df2a72d1b94cb3306 - + https://github.com/dotnet/arcade 2d393243ba4a0c95c2c18aa266df6e0f43ffe22d - + https://github.com/dotnet/arcade 2d393243ba4a0c95c2c18aa266df6e0f43ffe22d - + https://github.com/dotnet/arcade 2d393243ba4a0c95c2c18aa266df6e0f43ffe22d diff --git a/eng/Versions.props b/eng/Versions.props index f10082bf69..382d049479 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -10,8 +10,10 @@ 0 0 2 - rc$(PreReleasePreviewNumber) - Release Candidate $(PreReleasePreviewNumber) + true + false + rc$(PreReleasePreviewNumber) + Release Candidate $(PreReleasePreviewNumber) 9 preview$(BlazorClientPreReleasePreviewNumber) @@ -53,7 +55,7 @@ --> - 1.0.0-beta.19456.10 + 1.0.0-beta.19458.2 3.3.1-beta3-19454-05 diff --git a/eng/docker/alpine.Dockerfile b/eng/docker/alpine.Dockerfile index ae9cbab56f..bc1547d1df 100644 --- a/eng/docker/alpine.Dockerfile +++ b/eng/docker/alpine.Dockerfile @@ -2,8 +2,9 @@ FROM microsoft/dotnet:2.1.0-preview1-runtime-deps-alpine ARG USER ARG USER_ID ARG GROUP_ID +ARG WORKDIR -WORKDIR /code/build +WORKDIR ${WORKDIR} RUN mkdir -p "/home/$USER" && chown "${USER_ID}:${GROUP_ID}" "/home/$USER" ENV HOME "/home/$USER" diff --git a/eng/docker/bionic.Dockerfile b/eng/docker/bionic.Dockerfile index c8ad159119..9fe672137a 100644 --- a/eng/docker/bionic.Dockerfile +++ b/eng/docker/bionic.Dockerfile @@ -3,8 +3,9 @@ FROM microsoft/dotnet:2.1-runtime-deps-bionic ARG USER ARG USER_ID ARG GROUP_ID +ARG WORKDIR -WORKDIR /code/build +WORKDIR ${WORKDIR} RUN mkdir -p "/home/$USER" && chown "${USER_ID}:${GROUP_ID}" "/home/$USER" ENV HOME "/home/$USER" diff --git a/eng/docker/rhel.Dockerfile b/eng/docker/rhel.Dockerfile index 0ddc49837b..d42ab7b389 100644 --- a/eng/docker/rhel.Dockerfile +++ b/eng/docker/rhel.Dockerfile @@ -5,8 +5,9 @@ FROM mcr.microsoft.com/dotnet-buildtools/prereqs:rhel-7-rpmpkg-e1b4a89-201753110 ARG USER ARG USER_ID ARG GROUP_ID +ARG WORKDIR -WORKDIR /code/build +WORKDIR ${WORKDIR} RUN useradd -m ${USER} --uid ${USER_ID} -g root RUN echo '${USER} ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers diff --git a/eng/docker/ubuntu-alpine37.Dockerfile b/eng/docker/ubuntu-alpine37.Dockerfile index fcce8aab56..859098f04e 100644 --- a/eng/docker/ubuntu-alpine37.Dockerfile +++ b/eng/docker/ubuntu-alpine37.Dockerfile @@ -2,8 +2,9 @@ FROM mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine ARG USER ARG USER_ID ARG GROUP_ID +ARG WORKDIR -WORKDIR /code/build +WORKDIR ${WORKDIR} RUN mkdir -p "/home/$USER" && chown "${USER_ID}:${GROUP_ID}" "/home/$USER" ENV HOME "/home/$USER" diff --git a/eng/empty.proj b/eng/empty.proj new file mode 100644 index 0000000000..b952792fdc --- /dev/null +++ b/eng/empty.proj @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/eng/tools/Maestro/Maestro.csproj b/eng/tools/Maestro/Maestro.csproj deleted file mode 100644 index 67a5210bc4..0000000000 --- a/eng/tools/Maestro/Maestro.csproj +++ /dev/null @@ -1,38 +0,0 @@ - - - - - netcoreapp3.0 - true - $(ArtifactsDir)manifests\ - true - - - - - - - - - - - - NonShipping=true - - - - - - - - - - diff --git a/eng/tools/XplatPackageSigner/XplatPackageSigner.proj b/eng/tools/XplatPackageSigner/XplatPackageSigner.proj deleted file mode 100644 index 493b463c48..0000000000 --- a/eng/tools/XplatPackageSigner/XplatPackageSigner.proj +++ /dev/null @@ -1,38 +0,0 @@ - - - - $([MSBuild]::ValueOrDefault($(SignType),'real')) - - - - - - - - $([MSBuild]::NormalizeDirectory($(DirectoryToSign))) - $(BaseIntermediateOutputPath) - - - - - - NuGet - - - - - - - - - - - - - diff --git a/eng/tools/XplatPackageSigner/sign-packages.cmd b/eng/tools/XplatPackageSigner/sign-packages.cmd deleted file mode 100644 index b5a689dfc0..0000000000 --- a/eng/tools/XplatPackageSigner/sign-packages.cmd +++ /dev/null @@ -1,15 +0,0 @@ -@ECHO OFF - -SET DirToSign=%1 - -IF "%DirToSign%"=="" ( - echo Error^: Expected argument ^ - echo Usage^: sign-packages.cmd ^ - - exit /b 1 -) - -SET RepoRoot=%~dp0..\..\.. -SET Project=%~dp0XplatPackageSigner.proj - -%RepoRoot%\build.cmd -NoRestore -projects %project% /p:DirectoryToSign=%DirToSign% /bl:%RepoRoot%\artifacts\log\XplatSign.binlog diff --git a/global.json b/global.json index 016cf261c7..abdd56300f 100644 --- a/global.json +++ b/global.json @@ -24,7 +24,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.15.2", - "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19456.10", - "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19456.10" + "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19458.2", + "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19458.2" } } diff --git a/src/Components/Blazor/Directory.Build.props b/src/Components/Blazor/Directory.Build.props index dd413c575c..baeb85b7d4 100644 --- a/src/Components/Blazor/Directory.Build.props +++ b/src/Components/Blazor/Directory.Build.props @@ -4,6 +4,6 @@ $(BlazorClientPreReleaseVersionLabel) - + diff --git a/src/Hosting/Server.IntegrationTesting/src/Common/DotNetCommands.cs b/src/Hosting/Server.IntegrationTesting/src/Common/DotNetCommands.cs index 5533834014..1bc54b4d55 100644 --- a/src/Hosting/Server.IntegrationTesting/src/Common/DotNetCommands.cs +++ b/src/Hosting/Server.IntegrationTesting/src/Common/DotNetCommands.cs @@ -16,8 +16,13 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting // Compare to https://github.com/aspnet/BuildTools/blob/314c98e4533217a841ff9767bb38e144eb6c93e4/tools/KoreBuild.Console/Commands/CommandContext.cs#L76 public static string GetDotNetHome() { + // runtest.* scripts throughout the repo define $env:DOTNET_HOME var dotnetHome = Environment.GetEnvironmentVariable("DOTNET_HOME"); + // /activate.* and runtest.* scripts define $env:DOTNET_ROOT and (for /activate.*) $env:{DOTNET_ROOT(x86)} var dotnetRoot = Environment.GetEnvironmentVariable("DOTNET_ROOT"); + // /eng/common/tools.* scripts define $env:DOTNET_INSTALL_DIR + var dotnetInstallDir = Environment.GetEnvironmentVariable("DOTNET_INSTALL_DIR"); + var userProfile = Environment.GetEnvironmentVariable("USERPROFILE"); var home = Environment.GetEnvironmentVariable("HOME"); @@ -28,8 +33,19 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting } else if (!string.IsNullOrEmpty(dotnetRoot)) { - // DOTNET_ROOT has x64 appended to the path, which we append again in GetDotNetInstallDir - result = dotnetRoot.Substring(0, dotnetRoot.Length - 3); + if (dotnetRoot.EndsWith("x64")) + { + // DOTNET_ROOT has x64 appended to the path, which we append again in GetDotNetInstallDir + result = dotnetRoot[0..^3]; + } + else + { + result = dotnetRoot; + } + } + else if (!string.IsNullOrEmpty(dotnetInstallDir)) + { + result = dotnetInstallDir; } else if (!string.IsNullOrEmpty(userProfile)) { @@ -46,9 +62,10 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting public static string GetDotNetInstallDir(RuntimeArchitecture arch) { var dotnetDir = DotNetHome; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + var archSpecificDir = Path.Combine(dotnetDir, arch.ToString()); + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && Directory.Exists(archSpecificDir)) { - dotnetDir = Path.Combine(dotnetDir, arch.ToString()); + dotnetDir = archSpecificDir; } return dotnetDir; From cd7775d7205e8f7742a4681e2e6499c18d467bb3 Mon Sep 17 00:00:00 2001 From: Doug Bunting <6431421+dougbu@users.noreply.github.com> Date: Wed, 11 Sep 2019 09:13:04 -0700 Subject: [PATCH 18/18] Regen a ref/ project --- .../ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj b/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj index 07cb2861f0..5da79e220f 100644 --- a/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj +++ b/src/DataProtection/AzureStorage/ref/Microsoft.AspNetCore.DataProtection.AzureStorage.csproj @@ -7,5 +7,6 @@ +