From 28cab4f12f37b16df8a708179b5a2b6533ecb0ec Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 4 Nov 2025 20:21:38 +0000 Subject: [PATCH 001/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251104.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.22 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25528.1 -> To Version 8.0.23-servicing.25554.3 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index abc30a9e231f..afc2292a9f83 100644 --- a/NuGet.config +++ b/NuGet.config @@ -26,7 +26,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 715649bf2151..579dfd0158f7 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -228,21 +228,21 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf From c40eda0f2f804a9292f245dfc5eedf3e651d03ea Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 4 Nov 2025 20:21:47 +0000 Subject: [PATCH 002/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251104.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.22 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25528.1 -> To Version 8.0.23-servicing.25554.3 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7e8297337878..276ebea72111 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -64,7 +64,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b530de494272..d654a7311f6d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -228,21 +228,21 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 4519b9f0e25cae3c6d06cbd80cae9d6bd5fb90f7 + 642451a62a0adf3370083747ab8bf3453f889311 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf From 3ff05633eb5f03989537c5eaae98923228dbacf7 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 6 Nov 2025 04:50:29 +0000 Subject: [PATCH 003/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251105.15 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25527.7 -> To Version 8.0.23-servicing.25555.15 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.22 -> To Version 8.0.23 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100 From Version 8.0.22 -> To Version 8.0.22 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 6 +++--- eng/Version.Details.xml | 38 +++++++++++++++++++------------------- eng/Versions.props | 12 ++++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/NuGet.config b/NuGet.config index afc2292a9f83..ea741fc63b18 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,7 +3,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -59,7 +59,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 579dfd0158f7..0fc61adcc0c1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -14,46 +14,46 @@ 56b6fd07951fa6733694ed06accb8da0722f4c19 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 81cabf2857a01351e5ab578947c7403a5b128ad1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 https://github.com/dotnet/emsdk - 9e37ff5ebf5f464d80bdae6ad9d24e7a01ee11f8 + 81d2833ee1bf80f65cae9957c1926993ce1a299f https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted @@ -200,9 +200,9 @@ https://github.com/microsoft/vstest aa59400b11e1aeee2e8af48928dbd48748a8bef9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 3aabc0a546b8..f77efd4b347e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -49,18 +49,18 @@ - 8.0.22 - 8.0.22-servicing.25527.7 - 8.0.22 + 8.0.23 + 8.0.23-servicing.25555.15 + 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 - 8.0.22 - 8.0.22-servicing.25527.7 + 8.0.23 + 8.0.23-servicing.25555.15 8.0.0 8.0.1 8.0.3 8.0.1 - 8.0.22 + 8.0.23 8.0.0 8.0.0 8.0.22 From 49c6fbd65ceff7e006f3805f464e06e9d3f49ea1 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 6 Nov 2025 04:50:33 +0000 Subject: [PATCH 004/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251105.15 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25527.7 -> To Version 8.0.23-servicing.25555.15 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.22 -> To Version 8.0.23 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100 From Version 8.0.22 -> To Version 8.0.22 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 6 +++--- eng/Version.Details.xml | 38 +++++++++++++++++++------------------- eng/Versions.props | 12 ++++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/NuGet.config b/NuGet.config index 276ebea72111..40a4eb738eff 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + @@ -61,7 +61,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d654a7311f6d..1f5e7252cc11 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -14,46 +14,46 @@ d5ddb7f6ee6f52c8e8ff512eca1cce7730b38c51 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 81cabf2857a01351e5ab578947c7403a5b128ad1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 https://github.com/dotnet/emsdk - 9e37ff5ebf5f464d80bdae6ad9d24e7a01ee11f8 + 81d2833ee1bf80f65cae9957c1926993ce1a299f https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted @@ -200,9 +200,9 @@ https://github.com/microsoft/vstest 7855c9b221686104532ebf3380f2d45b3613b369 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a2266c728f63a494ccb6786d794da2df135030be + 2f6e04bea8740e3925c3f88137c6a6ee48acc903 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index fa01eac2630f..b5519c580c29 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -51,19 +51,19 @@ - 8.0.22 - 8.0.22-servicing.25527.7 - 8.0.22 + 8.0.23 + 8.0.23-servicing.25555.15 + 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 - 8.0.22 - 8.0.22-servicing.25527.7 + 8.0.23 + 8.0.23-servicing.25555.15 8.0.0 $(MicrosoftExtensionsDependencyModelPackageVersion) 8.0.1 8.0.3 8.0.1 - 8.0.22 + 8.0.23 8.0.0 8.0.0 8.0.22 From e9ccdc3cc9f18a353033487087c8acb1de14471c Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 7 Nov 2025 02:24:05 +0000 Subject: [PATCH 005/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251106.6 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25556.6 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 72 ++++++++++++++++++++--------------------- eng/Versions.props | 16 ++++----- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/NuGet.config b/NuGet.config index 40a4eb738eff..ad96876fd993 100644 --- a/NuGet.config +++ b/NuGet.config @@ -14,7 +14,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1f5e7252cc11..d22fffe0152a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn bc1c3011064a493b0ca527df6fb7215e2e5cfa96 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://github.com/nuget/nuget.client @@ -248,50 +248,50 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-wpf 925e025a1ad14f0b6f094e5b2d5cc9f62ada294c - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://github.com/dotnet/razor @@ -306,21 +306,21 @@ https://github.com/dotnet/razor c937db618f8c8739c6fa66ab4ca541344a468fdc - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://github.com/dotnet/xdt @@ -437,9 +437,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index b5519c580c29..a39793f33c98 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,7 +66,7 @@ 8.0.23 8.0.0 8.0.0 - 8.0.22 + 8.0.23 8.0.0 8.0.0 8.0.0 @@ -171,13 +171,13 @@ - 8.0.22 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22 + 8.0.23 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23 From 5a58fa50ceb01b55b1857ee89dc0c6061e6de093 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 7 Nov 2025 02:24:12 +0000 Subject: [PATCH 006/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251106.6 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25556.6 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 72 ++++++++++++++++++++--------------------- eng/Versions.props | 16 ++++----- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/NuGet.config b/NuGet.config index ea741fc63b18..b0931754d5ba 100644 --- a/NuGet.config +++ b/NuGet.config @@ -13,7 +13,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0fc61adcc0c1..187a07b44469 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn a77b6e41d030878096fa496e00e4c0dffe5af9f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -248,50 +248,50 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-wpf 925e025a1ad14f0b6f094e5b2d5cc9f62ada294c - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://github.com/dotnet/razor @@ -306,21 +306,21 @@ https://github.com/dotnet/razor 4c8bb4ff79523da1aa8ffbf2834ede5118f73d60 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://github.com/dotnet/xdt @@ -437,9 +437,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ee417479933278bb5aadc5944706a96b5ef74a5d + 75b46925d4627997cda6be9550ce7b5b52f5d9a9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index f77efd4b347e..a594bfa8eed5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -63,7 +63,7 @@ 8.0.23 8.0.0 8.0.0 - 8.0.22 + 8.0.23 8.0.0 8.0.0 8.0.0 @@ -170,13 +170,13 @@ - 8.0.22 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22-servicing.25528.8 - 8.0.22 + 8.0.23 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.6 + 8.0.23 From 0b623a2a8c652631e56eccadde72ccb6c36152cf Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 7 Nov 2025 05:26:14 +0000 Subject: [PATCH 007/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251106.12 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25556.12 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index ad96876fd993..37f9bc5a82dd 100644 --- a/NuGet.config +++ b/NuGet.config @@ -14,7 +14,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d22fffe0152a..3f6004cf8425 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn bc1c3011064a493b0ca527df6fb7215e2e5cfa96 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index a39793f33c98..5161bc39de4b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 8.0.23 From 00153ab5211097de753e3eac9bdfea4a9cc0465b Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 7 Nov 2025 05:26:20 +0000 Subject: [PATCH 008/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251106.12 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25556.12 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index b0931754d5ba..9013189c686e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -13,7 +13,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 187a07b44469..723d1b3bccae 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn a77b6e41d030878096fa496e00e4c0dffe5af9f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 75b46925d4627997cda6be9550ce7b5b52f5d9a9 + cb26fd19215d539f43e3766d2abe9a413e1d4530 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index a594bfa8eed5..d3b7ccb52a23 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 - 8.0.23-servicing.25556.6 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 + 8.0.23-servicing.25556.12 8.0.23 From 8c02c1ac11d0866a883be72db6b4a5adc5f91f41 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 7 Nov 2025 18:34:22 +0000 Subject: [PATCH 009/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251107.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.22 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25528.1 -> To Version 8.0.23-servicing.25557.2 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.22-servicing.25528.2 -> To Version 8.0.23-servicing.25556.3 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9013189c686e..37830367930b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -26,7 +26,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 723d1b3bccae..c5bcbcaf6527 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 925e025a1ad14f0b6f094e5b2d5cc9f62ada294c + a60810132c016f0aba3898c67927feef3491264a https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index d3b7ccb52a23..7c9b7cd2561b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -186,7 +186,7 @@ - 8.0.22-servicing.25528.2 + 8.0.23-servicing.25556.3 From 8b3f6bfc5c2a80efc2d77d66123d6b3a0f2e8d63 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 7 Nov 2025 18:34:23 +0000 Subject: [PATCH 010/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251107.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.22 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25528.1 -> To Version 8.0.23-servicing.25557.2 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.22-servicing.25528.2 -> To Version 8.0.23-servicing.25556.3 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index 37f9bc5a82dd..6a967335df41 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -64,7 +64,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3f6004cf8425..5e4ca8949235 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 642451a62a0adf3370083747ab8bf3453f889311 + a0339fddada06465ca501505ddfa569f3fbd5160 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 925e025a1ad14f0b6f094e5b2d5cc9f62ada294c + a60810132c016f0aba3898c67927feef3491264a https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index 5161bc39de4b..63e685753f26 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,7 +187,7 @@ - 8.0.22-servicing.25528.2 + 8.0.23-servicing.25556.3 From a37e0ea1739a30c6766da3f50862575b609d7f29 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Nov 2025 02:15:50 +0000 Subject: [PATCH 011/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251111.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.22 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25528.1 -> To Version 8.0.23-servicing.25561.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6a967335df41..0b68eea3ef8c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -64,7 +64,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5e4ca8949235..db464ffe588f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,19 +230,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf From 4350dfcf7a37141d73400bc43ec986baeb8e66be Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Nov 2025 02:15:53 +0000 Subject: [PATCH 012/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251111.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.22 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.22-servicing.25528.1 -> To Version 8.0.23-servicing.25561.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/NuGet.config b/NuGet.config index 37830367930b..c806baa89406 100644 --- a/NuGet.config +++ b/NuGet.config @@ -26,7 +26,7 @@ - + @@ -62,7 +62,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c5bcbcaf6527..c4011cb56808 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,19 +230,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a0339fddada06465ca501505ddfa569f3fbd5160 + 8b84eee3aa75060f4f7916822c3da0fc40cfe229 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf From 02b273d8b44d0f857f31c22fccbc41ad8393e41f Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Nov 2025 02:37:05 +0000 Subject: [PATCH 013/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251111.10 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25561.10 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0b68eea3ef8c..ddf633cb155a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -14,7 +14,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index db464ffe588f..29f68d968176 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn bc1c3011064a493b0ca527df6fb7215e2e5cfa96 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 63e685753f26..001232769940 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 8.0.23 From acfedc1fc385ca3819a4f825ea32a59c612ba717 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Nov 2025 02:37:16 +0000 Subject: [PATCH 014/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251111.10 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25561.10 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index c806baa89406..3b49702eb7a0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -13,7 +13,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c4011cb56808..26c3362db960 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn a77b6e41d030878096fa496e00e4c0dffe5af9f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - cb26fd19215d539f43e3766d2abe9a413e1d4530 + 10a8f3b30618f89d105c792210f6522584a4d235 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 7c9b7cd2561b..2ab90281af01 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 - 8.0.23-servicing.25556.12 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 + 8.0.23-servicing.25561.10 8.0.23 From 83fbcfba67c1b2d8be5766c7fe4c62a6720b28c0 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Nov 2025 23:03:22 +0000 Subject: [PATCH 015/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251112.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25562.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index ddf633cb155a..627d73876578 100644 --- a/NuGet.config +++ b/NuGet.config @@ -14,7 +14,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 29f68d968176..14af2d1c6462 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn bc1c3011064a493b0ca527df6fb7215e2e5cfa96 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 001232769940..570177d97658 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 8.0.23 From 6e7e51233cb5950c00bb27fb817599a295e6a90d Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Nov 2025 23:03:23 +0000 Subject: [PATCH 016/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251112.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.22-servicing.25528.8 -> To Version 8.0.23-servicing.25562.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.22 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 3b49702eb7a0..5d81b18a7319 100644 --- a/NuGet.config +++ b/NuGet.config @@ -13,7 +13,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 26c3362db960..268d500db8db 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn a77b6e41d030878096fa496e00e4c0dffe5af9f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 10a8f3b30618f89d105c792210f6522584a4d235 + 4077b49215a8b76f632147ccdcc61f3db7b895a3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 2ab90281af01..e7a516b6ab99 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 - 8.0.23-servicing.25561.10 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 + 8.0.23-servicing.25562.9 8.0.23 From c5f02803ceda46c6a5902e11fe6bb23630382d06 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 24 Nov 2025 19:02:45 +0000 Subject: [PATCH 017/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251124.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.23 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25561.2 -> To Version 8.0.23-servicing.25574.3 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.23-servicing.25556.3 -> To Version 8.0.23-servicing.25570.3 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 5 ++--- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index 4f06e4715ae7..44e92378e031 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,7 +3,6 @@ - @@ -27,7 +26,7 @@ - + @@ -63,7 +62,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 69195a820e9f..d8288a598b6f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - a60810132c016f0aba3898c67927feef3491264a + 5ad26cb9d7420532ea7dabb3ce4eae39051f12b7 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index a3a157345fc7..c08b58d16a32 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -186,7 +186,7 @@ - 8.0.23-servicing.25556.3 + 8.0.23-servicing.25570.3 From 947bf7a78e32de1716ebf0b6e9d550934d7cf13d Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 24 Nov 2025 19:02:46 +0000 Subject: [PATCH 018/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251124.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.23 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25561.2 -> To Version 8.0.23-servicing.25574.3 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.23-servicing.25556.3 -> To Version 8.0.23-servicing.25570.3 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 5 ++--- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index 765ee73ab06c..dee24cf51d00 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,6 @@ - @@ -27,7 +26,7 @@ - + @@ -64,7 +63,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 14cf61dd059c..40ed37d2648b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 8b84eee3aa75060f4f7916822c3da0fc40cfe229 + cfa425b55483bd857f7108d8025623dc1074202d - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - a60810132c016f0aba3898c67927feef3491264a + 5ad26cb9d7420532ea7dabb3ce4eae39051f12b7 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index ba4818ea9b29..7551a05bd6b0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,7 +187,7 @@ - 8.0.23-servicing.25556.3 + 8.0.23-servicing.25570.3 From ad11b34fd2c08840d14ab2e5fd0066e2a938cc37 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 24 Nov 2025 19:06:49 +0000 Subject: [PATCH 019/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251120.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25562.9 -> To Version 8.0.23-servicing.25570.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 44e92378e031..b0848a17f977 100644 --- a/NuGet.config +++ b/NuGet.config @@ -12,7 +12,7 @@ - + @@ -51,7 +51,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d8288a598b6f..632220001d65 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn a77b6e41d030878096fa496e00e4c0dffe5af9f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index c08b58d16a32..cf3000dc16c2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 8.0.23 From 631f30a9417ba76f3f05f579e6d55312e7e5201e Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 24 Nov 2025 19:06:55 +0000 Subject: [PATCH 020/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251120.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25562.9 -> To Version 8.0.23-servicing.25570.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index dee24cf51d00..75c9093ae933 100644 --- a/NuGet.config +++ b/NuGet.config @@ -13,7 +13,7 @@ - + @@ -53,7 +53,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 40ed37d2648b..de13dcb5f819 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn bc1c3011064a493b0ca527df6fb7215e2e5cfa96 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 4077b49215a8b76f632147ccdcc61f3db7b895a3 + d927412377d8ada49dfa2832dde74244a1c8feef https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 7551a05bd6b0..4cb045be3bbe 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 - 8.0.23-servicing.25562.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 + 8.0.23-servicing.25570.9 8.0.23 From bc26284f7fa6ad5967c0bd32c305642a5e9d6106 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 26 Nov 2025 21:32:33 +0000 Subject: [PATCH 021/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251126.7 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25555.15 -> To Version 8.0.23-servicing.25576.7 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index 54afeec061b3..b99fa0b35820 100644 --- a/NuGet.config +++ b/NuGet.config @@ -16,7 +16,7 @@ - + @@ -55,7 +55,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 74dea6d1b5e2..db15981e0617 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,7 +49,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://github.com/dotnet/emsdk @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 63c318f31277..dd24307c55dc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -50,12 +50,12 @@ 8.0.23 - 8.0.23-servicing.25555.15 + 8.0.23-servicing.25576.7 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25555.15 + 8.0.23-servicing.25576.7 8.0.0 8.0.1 8.0.3 From 2c308e31157d8d963dd7ffc1fc357fe3d6e4b4ba Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 26 Nov 2025 21:32:34 +0000 Subject: [PATCH 022/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251126.7 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25555.15 -> To Version 8.0.23-servicing.25576.7 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index 2ce4c9e3ee68..a3fcd43ed7c8 100644 --- a/NuGet.config +++ b/NuGet.config @@ -16,7 +16,7 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7b3f2f45e813..2dccf895a927 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,7 +49,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://github.com/dotnet/emsdk @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f6e04bea8740e3925c3f88137c6a6ee48acc903 + 3423649721e677e2789b5b84f09460258c865ab7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 6e0c6f96eaa1..1e583012533c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -52,12 +52,12 @@ 8.0.23 - 8.0.23-servicing.25555.15 + 8.0.23-servicing.25576.7 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25555.15 + 8.0.23-servicing.25576.7 8.0.0 $(MicrosoftExtensionsDependencyModelPackageVersion) 8.0.1 From c0e7212fff313a8e58f91c5b7e83b279da6322f1 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 26 Nov 2025 23:39:39 +0000 Subject: [PATCH 023/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251126.11 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25555.15 -> To Version 8.0.23-servicing.25576.11 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index b99fa0b35820..607fe57bcd88 100644 --- a/NuGet.config +++ b/NuGet.config @@ -16,7 +16,7 @@ - + @@ -55,7 +55,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index db15981e0617..42b7a309a4fa 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,7 +49,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://github.com/dotnet/emsdk @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index dd24307c55dc..ea212c19e86a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -50,12 +50,12 @@ 8.0.23 - 8.0.23-servicing.25576.7 + 8.0.23-servicing.25576.11 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25576.7 + 8.0.23-servicing.25576.11 8.0.0 8.0.1 8.0.3 From 5632dfdad9032a2d47947fabb1af9465a21f72c6 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 26 Nov 2025 23:39:40 +0000 Subject: [PATCH 024/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251126.11 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25555.15 -> To Version 8.0.23-servicing.25576.11 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index a3fcd43ed7c8..d31a0758e683 100644 --- a/NuGet.config +++ b/NuGet.config @@ -16,7 +16,7 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2dccf895a927..928c3b7360c1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,7 +49,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://github.com/dotnet/emsdk @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3423649721e677e2789b5b84f09460258c865ab7 + 06f15fd947d0235d30adab97aa915211af489520 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 1e583012533c..2dd71b47f226 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -52,12 +52,12 @@ 8.0.23 - 8.0.23-servicing.25576.7 + 8.0.23-servicing.25576.11 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25576.7 + 8.0.23-servicing.25576.11 8.0.0 $(MicrosoftExtensionsDependencyModelPackageVersion) 8.0.1 From 43093b6ea818454cb164bebbaf300cfffe22a4f8 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 4 Dec 2025 22:24:43 +0000 Subject: [PATCH 025/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251204.14 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25555.15 -> To Version 8.0.23-servicing.25604.14 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index 607fe57bcd88..be1144172885 100644 --- a/NuGet.config +++ b/NuGet.config @@ -16,7 +16,7 @@ - + @@ -55,7 +55,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 42b7a309a4fa..3e019485d38a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,7 +49,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://github.com/dotnet/emsdk @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index ea212c19e86a..5d847b374003 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -50,12 +50,12 @@ 8.0.23 - 8.0.23-servicing.25576.11 + 8.0.23-servicing.25604.14 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25576.11 + 8.0.23-servicing.25604.14 8.0.0 8.0.1 8.0.3 From cf2870a65de1d32304b8f8a4a8e753e260c9bc48 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 4 Dec 2025 22:24:44 +0000 Subject: [PATCH 026/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251204.14 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25555.15 -> To Version 8.0.23-servicing.25604.14 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index d31a0758e683..c977d3ecd043 100644 --- a/NuGet.config +++ b/NuGet.config @@ -16,7 +16,7 @@ - + @@ -56,7 +56,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 928c3b7360c1..5cd5e45ad6cf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,7 +49,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://github.com/dotnet/emsdk @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 06f15fd947d0235d30adab97aa915211af489520 + 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 2dd71b47f226..17c174b50fe8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -52,12 +52,12 @@ 8.0.23 - 8.0.23-servicing.25576.11 + 8.0.23-servicing.25604.14 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25576.11 + 8.0.23-servicing.25604.14 8.0.0 $(MicrosoftExtensionsDependencyModelPackageVersion) 8.0.1 From 86be6059b34be34b6379fabaac860b3f07c3024d Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 4 Dec 2025 22:33:21 +0000 Subject: [PATCH 027/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251204.5 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25570.9 -> To Version 8.0.23-servicing.25604.5 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index be1144172885..e0b11f082984 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,7 +8,7 @@ - + @@ -47,7 +47,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3e019485d38a..ca53e033dc1f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 38896ab4e7cee896fcde8a4e26914a777c794e3b - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 5d847b374003..8c69af06b4f5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 8.0.23 From ef60cd50ebf58c8923eba4685d657a67f0be014f Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 4 Dec 2025 22:33:22 +0000 Subject: [PATCH 028/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251204.5 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25570.9 -> To Version 8.0.23-servicing.25604.5 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index c977d3ecd043..e1612a442034 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -49,7 +49,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5cd5e45ad6cf..99559c9030cb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 3fb752d448006a3144a60ccf181d745e555422f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d927412377d8ada49dfa2832dde74244a1c8feef + ab2bbaeb1de821489b7f3b2a84171becbe7f3563 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 17c174b50fe8..fbbe75e66901 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 - 8.0.23-servicing.25570.9 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.5 8.0.23 From cec0727915bdcaeb0a79ab0345662aa0e05f95f6 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 4 Dec 2025 23:24:36 +0000 Subject: [PATCH 029/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251204.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.23 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25574.3 -> To Version 8.0.23-servicing.25604.3 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.23-servicing.25570.3 -> To Version 8.0.23-servicing.25604.5 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index e1612a442034..072cc15d4920 100644 --- a/NuGet.config +++ b/NuGet.config @@ -22,7 +22,7 @@ - + @@ -59,7 +59,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 99559c9030cb..9713e506fc49 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 5ad26cb9d7420532ea7dabb3ce4eae39051f12b7 + 5e01ea78bc84fcfcb6efef9ca2fde4d598a2ea88 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index fbbe75e66901..94b2d433e49a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,7 +187,7 @@ - 8.0.23-servicing.25570.3 + 8.0.23-servicing.25604.5 From c40d06c871533ccc9b24b00715a0f4d23844b1aa Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 4 Dec 2025 23:24:36 +0000 Subject: [PATCH 030/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251204.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.23 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25574.3 -> To Version 8.0.23-servicing.25604.3 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.23-servicing.25570.3 -> To Version 8.0.23-servicing.25604.5 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index e0b11f082984..55ef9a463d84 100644 --- a/NuGet.config +++ b/NuGet.config @@ -22,7 +22,7 @@ - + @@ -58,7 +58,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ca53e033dc1f..e2022c578ab2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - cfa425b55483bd857f7108d8025623dc1074202d + b913cde8b86485bfaf159cbdb3fe48b28819206a - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 5ad26cb9d7420532ea7dabb3ce4eae39051f12b7 + 5e01ea78bc84fcfcb6efef9ca2fde4d598a2ea88 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index 8c69af06b4f5..0add51ad64d3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -186,7 +186,7 @@ - 8.0.23-servicing.25570.3 + 8.0.23-servicing.25604.5 From 5d7be50ba35e8bcac8cb828a0eacaca6d7e6335c Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 5 Dec 2025 01:10:28 +0000 Subject: [PATCH 031/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251204.11 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25570.9 -> To Version 8.0.23-servicing.25604.11 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 072cc15d4920..57e8b784b33a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -49,7 +49,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9713e506fc49..5dc946064608 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 3fb752d448006a3144a60ccf181d745e555422f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 94b2d433e49a..a16cbd167fa9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 8.0.23 From f55d1bf0f3d0baa2ca5a294e6f63f50060e5e0dd Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 5 Dec 2025 01:10:30 +0000 Subject: [PATCH 032/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251204.11 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25570.9 -> To Version 8.0.23-servicing.25604.11 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 55ef9a463d84..1928b5bac4f4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,7 +8,7 @@ - + @@ -47,7 +47,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e2022c578ab2..e3da4c66b3d9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 38896ab4e7cee896fcde8a4e26914a777c794e3b - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ab2bbaeb1de821489b7f3b2a84171becbe7f3563 + c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 0add51ad64d3..8507cb0a40dd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 - 8.0.23-servicing.25604.5 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.11 8.0.23 From 03cea17a8b5743f2b9105d23bdc6805d597e8a71 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 5 Dec 2025 04:00:53 +0000 Subject: [PATCH 033/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251204.17 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25570.9 -> To Version 8.0.23-servicing.25604.17 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 57e8b784b33a..0a3f822a6112 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -49,7 +49,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5dc946064608..cc4eadd2f7c3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 3fb752d448006a3144a60ccf181d745e555422f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index a16cbd167fa9..8f79914bcd2b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 8.0.23 From 686b1a671c88a15bfd4ea160269f20dfd83156e4 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 5 Dec 2025 04:01:02 +0000 Subject: [PATCH 034/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251204.17 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25570.9 -> To Version 8.0.23-servicing.25604.17 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1928b5bac4f4..71e3b7c1dc63 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,7 +8,7 @@ - + @@ -47,7 +47,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e3da4c66b3d9..56b721d5a8a2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 38896ab4e7cee896fcde8a4e26914a777c794e3b - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - c449cb8951dd0a58df46f4cfb2cb4bd06bbc78ea + ba36999317e30bc67bab0ea8387e3bc3c609e855 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 8507cb0a40dd..3d1f785b76dc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 - 8.0.23-servicing.25604.11 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 + 8.0.23-servicing.25604.17 8.0.23 From 9924b6155c6dfa469d9f83617de8278ce711b2de Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Fri, 5 Dec 2025 18:47:55 +0000 Subject: [PATCH 035/133] Merged PR 55868: Configure SB leg to use container The source build leg in the CI pipeline is failing in the `Generate delegation SAS Token` step: ``` ##[error]Azure CLI 2.x is not installed on this machine. ##[error]Script failed with error: Error: Unable to locate executable file: 'az'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable. ``` This is caused by switch in the distro version of the agent from Mariner 2.0 to Azure Linux 3.0 and the Azure Linux 3.0 image doesn't contain the Azure CLI. However, the job should really be using the SB container image, not directly on the build agent. These changes fix the configuration to run the job in a container. It was misconfigured before because the image needs to be defined as a pipeline resource. ---- #### AI description (iteration 1) #### PR Classification Configuration update to utilize containers for the SB leg in the CI pipeline. #### PR Summary This PR restructures the CI configuration by defining a container alias and updating its usage in the platform settings. - `.vsts-ci.yml`: Added a `containers` section with the `sourceBuildManagedContainer` definition. - `.vsts-ci.yml`: Modified the platform configuration to reference `sourceBuildManagedContainer` instead of a direct image URL. --- .vsts-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index df58ec2eb3aa..0f03e03a8e12 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -64,6 +64,9 @@ extends: name: $(DncEngInternalBuildPool) image: 1es-windows-2022 os: windows + containers: + sourceBuildManagedContainer: + image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9 stages: - stage: build displayName: Build @@ -120,7 +123,7 @@ extends: enableInternalSources: true platform: name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' + container: sourceBuildManagedContainer - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: - template: /eng/build.yml@self parameters: From a0e924d11b332bc15f3be3ce57eae15c7e56cb17 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 8 Dec 2025 22:04:45 +0000 Subject: [PATCH 036/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251208.2 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25604.17 -> To Version 8.0.23-servicing.25608.2 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index bf2304fb9099..74a73435a56a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,7 +8,7 @@ - + @@ -47,7 +47,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 098bbbcec7a4..2d2deb7c0526 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 38896ab4e7cee896fcde8a4e26914a777c794e3b - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 646e8b721728..96941fe9fb1e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 8.0.23 From fde61e7181999ec8aac18fb389ff20533a82c0bc Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 8 Dec 2025 22:04:50 +0000 Subject: [PATCH 037/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251208.2 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25604.17 -> To Version 8.0.23-servicing.25608.2 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 923c8a5a2b09..69ff3835e72a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -49,7 +49,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ea66c83ba3aa..a5dd68439a68 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 3fb752d448006a3144a60ccf181d745e555422f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - ba36999317e30bc67bab0ea8387e3bc3c609e855 + 6b7eb7c417e1c31e459c4899adef06844cfba703 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index bb9757686bb2..6aa5a7d524f1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 - 8.0.23-servicing.25604.17 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.2 8.0.23 From ef2c48da76723706bb28567741c9805fe7fb85b7 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 9 Dec 2025 00:45:41 +0000 Subject: [PATCH 038/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251206.7 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25604.14 -> To Version 8.0.23-servicing.25606.7 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100 From Version 8.0.22 -> To Version 8.0.23 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 5 +++-- eng/Version.Details.xml | 30 +++++++++++++++--------------- eng/Versions.props | 6 +++--- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/NuGet.config b/NuGet.config index 74a73435a56a..5b413a9802ed 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,6 +3,7 @@ + @@ -16,7 +17,7 @@ - + @@ -55,7 +56,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2d2deb7c0526..7b0e28b0b54a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,11 +49,11 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://github.com/dotnet/emsdk - 81d2833ee1bf80f65cae9957c1926993ce1a299f + 87f89d77d2eb70ed29b3e0f37cfbf28bfd49c536 https://github.com/dotnet/msbuild @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 96941fe9fb1e..53cfabc5e38c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -50,12 +50,12 @@ 8.0.23 - 8.0.23-servicing.25604.14 + 8.0.23-servicing.25606.7 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25604.14 + 8.0.23-servicing.25606.7 8.0.0 8.0.1 8.0.3 @@ -230,7 +230,7 @@ - 8.0.22 + 8.0.23 $(MicrosoftNETWorkloadEmscriptenCurrentManifest80100PackageVersion) 8.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`)) From 44e74d49ae60bd57e5bc00d8e3c5fbc43718a7c8 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 9 Dec 2025 00:45:47 +0000 Subject: [PATCH 039/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20251206.7 On relative base path root Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.8.0 , VS.Redist.Common.NetCore.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25604.14 -> To Version 8.0.23-servicing.25606.7 Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.DotNetHostResolver From Version 8.0.23 -> To Version 8.0.23 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100 From Version 8.0.22 -> To Version 8.0.23 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 5 +++-- eng/Version.Details.xml | 30 +++++++++++++++--------------- eng/Versions.props | 6 +++--- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/NuGet.config b/NuGet.config index 69ff3835e72a..13c4f0bddfa8 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,6 +4,7 @@ + @@ -16,7 +17,7 @@ - + @@ -56,7 +57,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a5dd68439a68..fbbeb6181f81 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -16,32 +16,32 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -49,11 +49,11 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 - + https://github.com/dotnet/emsdk - 81d2833ee1bf80f65cae9957c1926993ce1a299f + 87f89d77d2eb70ed29b3e0f37cfbf28bfd49c536 https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted @@ -202,7 +202,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1c1ec94ea2a2583b20af6b042c61bf8b108248b3 + c96cd11cb2f0c204f272b2280082a329aee24cf7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 6aa5a7d524f1..70144abbabac 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -52,12 +52,12 @@ 8.0.23 - 8.0.23-servicing.25604.14 + 8.0.23-servicing.25606.7 8.0.23 $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) 8.0.2 8.0.23 - 8.0.23-servicing.25604.14 + 8.0.23-servicing.25606.7 8.0.0 $(MicrosoftExtensionsDependencyModelPackageVersion) 8.0.1 @@ -231,7 +231,7 @@ - 8.0.22 + 8.0.23 $(MicrosoftNETWorkloadEmscriptenCurrentManifest80100PackageVersion) 8.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`)) From a5361811e6ba01af81f7bf6f1e0accc8b28e30a9 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 9 Dec 2025 03:41:28 +0000 Subject: [PATCH 040/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251208.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25604.17 -> To Version 8.0.23-servicing.25608.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 5b413a9802ed..1e95064f87bc 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -48,7 +48,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7b0e28b0b54a..88d87b942b3d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 38896ab4e7cee896fcde8a4e26914a777c794e3b - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 53cfabc5e38c..959566177fd6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 8.0.23 From 060088aafda086ebd0d2573e5c90c49006d712ee Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 9 Dec 2025 03:41:28 +0000 Subject: [PATCH 041/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251208.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25604.17 -> To Version 8.0.23-servicing.25608.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 13c4f0bddfa8..9cb7395d007e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -10,7 +10,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index fbbeb6181f81..c5da4c2f9e8d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 3fb752d448006a3144a60ccf181d745e555422f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 6b7eb7c417e1c31e459c4899adef06844cfba703 + 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 70144abbabac..cfd643c87d36 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 - 8.0.23-servicing.25608.2 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 + 8.0.23-servicing.25608.9 8.0.23 From c266609b1ca3ad5b82e08c924875d12877c73f86 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 9 Dec 2025 20:16:14 +0000 Subject: [PATCH 042/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251209.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.23 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25604.3 -> To Version 8.0.23-servicing.25609.2 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.23-servicing.25604.5 -> To Version 8.0.23-servicing.25609.4 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1e95064f87bc..16b9dd160443 100644 --- a/NuGet.config +++ b/NuGet.config @@ -23,7 +23,7 @@ - + @@ -59,7 +59,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 88d87b942b3d..266d68261739 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 5e01ea78bc84fcfcb6efef9ca2fde4d598a2ea88 + b132b33a48ebc857db94785fdd86d671d123911a https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index 959566177fd6..3b716a2af89a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -186,7 +186,7 @@ - 8.0.23-servicing.25604.5 + 8.0.23-servicing.25609.4 From 23b0c6d1174802a0e7240cc3d97ccda2bec1e08c Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 9 Dec 2025 20:16:18 +0000 Subject: [PATCH 043/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251209.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 8.0.23 -> To Version 8.0.23 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.8.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.8.0 From Version 8.0.23-servicing.25604.3 -> To Version 8.0.23-servicing.25609.2 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 8.0.23-servicing.25604.5 -> To Version 8.0.23-servicing.25609.4 (parent: Microsoft.WindowsDesktop.App.Ref) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9cb7395d007e..386a5ce83e70 100644 --- a/NuGet.config +++ b/NuGet.config @@ -23,7 +23,7 @@ - + @@ -60,7 +60,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c5da4c2f9e8d..8ffbd9ddba15 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -230,23 +230,23 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - b913cde8b86485bfaf159cbdb3fe48b28819206a + 0167058c735054c0f948ca3925c693a958875427 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 5e01ea78bc84fcfcb6efef9ca2fde4d598a2ea88 + b132b33a48ebc857db94785fdd86d671d123911a https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index cfd643c87d36..c1395b5693b4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,7 +187,7 @@ - 8.0.23-servicing.25604.5 + 8.0.23-servicing.25609.4 From a6918566f0dd78ae1c558495cf8cd4412508c3ce Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 10 Dec 2025 17:49:00 +0000 Subject: [PATCH 044/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251209.5 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25608.9 -> To Version 8.0.23-servicing.25609.5 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 16b9dd160443..ecd9226c537e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -48,7 +48,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 276e09997350..dcea8529c988 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 38896ab4e7cee896fcde8a4e26914a777c794e3b - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 7de0123edbc2..14173d1b31d7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -171,11 +171,11 @@ 8.0.23 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 8.0.23 From df04d4880acfd04831b9bdfa608f315f24c8a1ae Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 10 Dec 2025 17:49:06 +0000 Subject: [PATCH 045/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20251209.5 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.8.0 From Version 8.0.23-servicing.25608.9 -> To Version 8.0.23-servicing.25609.5 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 8.0.23 -> To Version 8.0.23 --- NuGet.config | 4 +-- eng/Version.Details.xml | 56 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++---- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/NuGet.config b/NuGet.config index 386a5ce83e70..6fea2ba2a09d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -10,7 +10,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8ffbd9ddba15..ea4f608dfaa2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -111,13 +111,13 @@ https://github.com/dotnet/roslyn 3fb752d448006a3144a60ccf181d745e555422f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://github.com/nuget/nuget.client @@ -250,48 +250,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://github.com/dotnet/razor @@ -308,19 +308,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://github.com/dotnet/xdt @@ -439,7 +439,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5fb2dbe1ec6e5cdd560714349bb5bde1ad4cff80 + 568fff703254def7dcd35fda9892bf702d4c81d3 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index c1395b5693b4..5a37f0dc4cec 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -172,11 +172,11 @@ 8.0.23 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 - 8.0.23-servicing.25608.9 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 + 8.0.23-servicing.25609.5 8.0.23 From 8c675f2afddfa6db3df4af42109e7ebbb1e00495 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 12 Dec 2025 03:02:44 +0000 Subject: [PATCH 046/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251211.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.12 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.12-servicing.25611.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 50413cb3314d..c9c9cd942a4f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7dbb41b59fd6..a2fd4dbe2e23 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -252,20 +252,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index 9e6f35395540..535a368f2a3e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -132,8 +132,8 @@ - 9.0.12-servicing.25609.4 - 9.0.12-servicing.25609.4 + 9.0.12-servicing.25611.2 + 9.0.12-servicing.25611.2 9.0.12 9.0.12 From 133c32dc7cb5dcfcfeea69bc9e5300ab25c4f69b Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 12 Dec 2025 03:02:44 +0000 Subject: [PATCH 047/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251211.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.12 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.12-servicing.25611.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9e74d041bb7d..0ef3ad61c038 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 320aeb563a9a..7b61a6d132cf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -256,20 +256,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 98f0a2e200069ec2eb9193f877ece097b89b4e7d https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index abb0c763c408..cae1b5eb6985 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -130,8 +130,8 @@ - 9.0.12-servicing.25609.4 - 9.0.12-servicing.25609.4 + 9.0.12-servicing.25611.2 + 9.0.12-servicing.25611.2 9.0.12 9.0.12 From b351969753fba5238b927744136303b20f228106 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Sat, 27 Dec 2025 03:02:17 +0000 Subject: [PATCH 048/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251226.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.12 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.12-servicing.25626.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index c9c9cd942a4f..fdf9b195a89c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a2fd4dbe2e23..4fecacdf5f1a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -252,20 +252,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index 535a368f2a3e..8dff4c666ab7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -132,8 +132,8 @@ - 9.0.12-servicing.25611.2 - 9.0.12-servicing.25611.2 + 9.0.12-servicing.25626.2 + 9.0.12-servicing.25626.2 9.0.12 9.0.12 From 709d3dbd50945ccbda9a8d84bed795c8131629c7 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Sat, 27 Dec 2025 03:02:18 +0000 Subject: [PATCH 049/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20251226.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.12 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.12-servicing.25626.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0ef3ad61c038..80380811b7ea 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7b61a6d132cf..9042d8fa2fc5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -256,20 +256,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 98f0a2e200069ec2eb9193f877ece097b89b4e7d + 6f3910a302cf76f3da7babe3d38749d2250246f1 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index cae1b5eb6985..b592c0247ab5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -130,8 +130,8 @@ - 9.0.12-servicing.25611.2 - 9.0.12-servicing.25611.2 + 9.0.12-servicing.25626.2 + 9.0.12-servicing.25626.2 9.0.12 9.0.12 From 3bb33dd9c6752cf6e87f0562e013413ef797fd02 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 5 Jan 2026 20:06:40 +0000 Subject: [PATCH 050/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260105.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.13-servicing.26055.3 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/NuGet.config b/NuGet.config index fdf9b195a89c..572954ab9440 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4fecacdf5f1a..03d9c7e1c605 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -250,22 +250,22 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index 8dff4c666ab7..3a9094bf069d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -132,10 +132,10 @@ - 9.0.12-servicing.25626.2 - 9.0.12-servicing.25626.2 - 9.0.12 - 9.0.12 + 9.0.13-servicing.26055.3 + 9.0.13-servicing.26055.3 + 9.0.13 + 9.0.13 From 7d0a0eebb3a347ac14baddb4ef85c3087950b989 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 5 Jan 2026 20:06:48 +0000 Subject: [PATCH 051/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260105.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.13-servicing.26055.3 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/NuGet.config b/NuGet.config index 80380811b7ea..254bfc58aebb 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9042d8fa2fc5..bbb1e05899b2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -254,22 +254,22 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 6f3910a302cf76f3da7babe3d38749d2250246f1 + a56140130423592bf449d7e725e7efbaa19e383b https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index b592c0247ab5..beb56c645abd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -130,10 +130,10 @@ - 9.0.12-servicing.25626.2 - 9.0.12-servicing.25626.2 - 9.0.12 - 9.0.12 + 9.0.13-servicing.26055.3 + 9.0.13-servicing.26055.3 + 9.0.13 + 9.0.13 From f596a3296efb23e6237bfcabb642ca29eed8a262 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 6 Jan 2026 20:57:31 +0000 Subject: [PATCH 052/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260106.5 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26056.5 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 76 ++++++++++++++++++++--------------------- eng/Versions.props | 26 +++++++------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9e74d041bb7d..29b0d7468b3d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 320aeb563a9a..ece0f6721a58 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn c795154af418b5473d67f053aec5d290a3e5c410 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 https://github.com/nuget/nuget.client @@ -275,54 +275,54 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-wpf 58060180f2776452976616ae4894118dfd21f8d5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 @@ -343,21 +343,21 @@ 2920c71a15b90cb85e1847a32dfe9f13b1d77da2 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 https://github.com/dotnet/test-templates @@ -539,9 +539,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index abb0c763c408..f2b22e5c713f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -215,19 +215,19 @@ - 9.0.12 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12 - 9.0.12 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 + 9.0.13 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13 + 9.0.13 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 From a06e083ccd436f29a83c524524ce6ad0f275786d Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 6 Jan 2026 20:57:32 +0000 Subject: [PATCH 053/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260106.5 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26056.5 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 76 ++++++++++++++++++++--------------------- eng/Versions.props | 26 +++++++------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/NuGet.config b/NuGet.config index 572954ab9440..8e2f90aa24c5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 03d9c7e1c605..01824cd33b26 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,13 +131,13 @@ https://github.com/dotnet/roslyn 8cafac4760a78176ef0e167bea66b97b65437930 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 https://github.com/nuget/nuget.client @@ -271,54 +271,54 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-wpf 58060180f2776452976616ae4894118dfd21f8d5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 @@ -339,21 +339,21 @@ fd1e96f4650a3d0bffa73556f46ab1328a70da92 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 @@ -505,9 +505,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 641c01e0bc6ce164c05a42ac2786465a24586357 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 3a9094bf069d..94ddb9ddaafa 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -217,19 +217,19 @@ - 9.0.12 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12 - 9.0.12 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 + 9.0.13 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13 + 9.0.13 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 + 9.0.13-servicing.26056.5 From c3ac222188ac9faf0875604fdf0dab72ab9bb3e7 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 9 Jan 2026 03:08:53 +0000 Subject: [PATCH 054/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260108.7 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26058.7 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 8e2f90aa24c5..1276439a058d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 01824cd33b26..b051a23fff02 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,13 +131,13 @@ https://github.com/dotnet/roslyn 8cafac4760a78176ef0e167bea66b97b65437930 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://github.com/nuget/nuget.client @@ -273,52 +273,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 @@ -341,19 +341,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 @@ -507,7 +507,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 94ddb9ddaafa..bbfd5b72ccde 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -218,18 +218,18 @@ 9.0.13 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 9.0.13 9.0.13 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 From 84f2eab7bbf3faee5c7dc4e333c9b9a78846ac23 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 9 Jan 2026 03:08:56 +0000 Subject: [PATCH 055/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260108.7 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26058.7 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 29b0d7468b3d..f01f9f0e358b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ece0f6721a58..291b08b9565b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn c795154af418b5473d67f053aec5d290a3e5c410 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://github.com/nuget/nuget.client @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 641c01e0bc6ce164c05a42ac2786465a24586357 + 5005edb648243ada96c3ebb68191dac627bdd335 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index f2b22e5c713f..2eaaf8e3f907 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.13 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 9.0.13 9.0.13 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 - 9.0.13-servicing.26056.5 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.7 From 5c6d8de31a66144744e34b03af63a71342e80c7d Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 9 Jan 2026 05:55:09 +0000 Subject: [PATCH 056/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260108.12 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26058.12 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index f01f9f0e358b..af230c7e6691 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 291b08b9565b..4f8260b98a99 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn c795154af418b5473d67f053aec5d290a3e5c410 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://github.com/nuget/nuget.client @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 2eaaf8e3f907..a6d896c226c2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.13 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 9.0.13 9.0.13 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 From c0ca81a07e0c5e2b3d6f3d6f7c6b75d60f717764 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 9 Jan 2026 05:55:09 +0000 Subject: [PATCH 057/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260108.12 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26058.12 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1276439a058d..1a466524dece 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b051a23fff02..3593be353737 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,13 +131,13 @@ https://github.com/dotnet/roslyn 8cafac4760a78176ef0e167bea66b97b65437930 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://github.com/nuget/nuget.client @@ -273,52 +273,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 @@ -341,19 +341,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 @@ -507,7 +507,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 5005edb648243ada96c3ebb68191dac627bdd335 + e0fb594a3acc10bb7b33bb3e237e6c303220fe23 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index bbfd5b72ccde..8c31822daefb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -218,18 +218,18 @@ 9.0.13 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 9.0.13 9.0.13 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 - 9.0.13-servicing.26058.7 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 + 9.0.13-servicing.26058.12 From edf8002f91e5e8e4ad03efc370a2bb86fabe7d54 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 12 Jan 2026 19:54:45 +0000 Subject: [PATCH 058/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260112.3 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26062.3 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index af230c7e6691..7c9e61fa7cf6 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4f8260b98a99..24134a8d01cf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn c795154af418b5473d67f053aec5d290a3e5c410 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://github.com/nuget/nuget.client @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index a6d896c226c2..e11a8b21592a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.13 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 9.0.13 9.0.13 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 From 7d7f6d3a94fca72fa6fe863ca9ab7549fc368c17 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 12 Jan 2026 19:54:48 +0000 Subject: [PATCH 059/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260112.3 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26062.3 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1a466524dece..2c76ac59707c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3593be353737..a7079a010a0b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,13 +131,13 @@ https://github.com/dotnet/roslyn 8cafac4760a78176ef0e167bea66b97b65437930 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://github.com/nuget/nuget.client @@ -273,52 +273,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 @@ -341,19 +341,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 @@ -507,7 +507,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - e0fb594a3acc10bb7b33bb3e237e6c303220fe23 + d7ce21bcaf2ca47f9667dda99aefbd925be3c661 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 8c31822daefb..24064c0dcd82 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -218,18 +218,18 @@ 9.0.13 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 9.0.13 9.0.13 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 - 9.0.13-servicing.26058.12 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.3 From 1a5a749e771a1b9e61aca4ef6662b9afb9e73957 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 13 Jan 2026 03:00:09 +0000 Subject: [PATCH 060/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260112.8 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26062.8 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 2c76ac59707c..287f7515f2a5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a7079a010a0b..b7d597ea14f3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,13 +131,13 @@ https://github.com/dotnet/roslyn 8cafac4760a78176ef0e167bea66b97b65437930 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://github.com/nuget/nuget.client @@ -273,52 +273,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 @@ -341,19 +341,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 @@ -507,7 +507,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 24064c0dcd82..e693483cb5c0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -218,18 +218,18 @@ 9.0.13 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 9.0.13 9.0.13 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 From 996bda3423ae47d65f323a26a88f7112d5222d06 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 13 Jan 2026 03:00:10 +0000 Subject: [PATCH 061/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260112.8 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.12-servicing.25609.3 -> To Version 9.0.13-servicing.26062.8 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.12 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7c9e61fa7cf6..03b949890f46 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 24134a8d01cf..0a1e14baa6bc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn c795154af418b5473d67f053aec5d290a3e5c410 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://github.com/nuget/nuget.client @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d7ce21bcaf2ca47f9667dda99aefbd925be3c661 + d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index e11a8b21592a..26b0ed240c81 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.13 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 9.0.13 9.0.13 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 - 9.0.13-servicing.26062.3 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 + 9.0.13-servicing.26062.8 From 08e7aee79121d098fbacf6ba3110d2cc52580ebe Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 13 Jan 2026 03:23:16 +0000 Subject: [PATCH 062/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260112.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.13-servicing.26062.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 287f7515f2a5..2934c8c1bd50 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b7d597ea14f3..963e182fe49a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -252,20 +252,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index e693483cb5c0..46317d59511f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -132,8 +132,8 @@ - 9.0.13-servicing.26055.3 - 9.0.13-servicing.26055.3 + 9.0.13-servicing.26062.2 + 9.0.13-servicing.26062.2 9.0.13 9.0.13 From 5a9a17d58f9a6502e4cf4c82cf3be66c1083c622 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 13 Jan 2026 03:23:16 +0000 Subject: [PATCH 063/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260112.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.13-servicing.26062.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 254bfc58aebb..27ff04d3c4be 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bbb1e05899b2..6ce98b4bc98c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -256,20 +256,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - a56140130423592bf449d7e725e7efbaa19e383b + 20b7e87f69971347947044588e39673526274573 https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index beb56c645abd..8badb4b6286c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -130,8 +130,8 @@ - 9.0.13-servicing.26055.3 - 9.0.13-servicing.26055.3 + 9.0.13-servicing.26062.2 + 9.0.13-servicing.26062.2 9.0.13 9.0.13 From 5a52b17117a153e89c752aab0013874a11f4a3c1 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 14 Jan 2026 01:54:44 +0000 Subject: [PATCH 064/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20260113.17 On relative base path root Microsoft.Bcl.AsyncInterfaces , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.FileProviders.Abstractions , Microsoft.Extensions.FileSystemGlobbing , Microsoft.Extensions.Logging , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging.Console , Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.Win32.SystemEvents , System.CodeDom , System.Composition.AttributedModel , System.Composition.Convention , System.Composition.Hosting , System.Composition.Runtime , System.Composition.TypedParts , System.Configuration.ConfigurationManager , System.Formats.Asn1 , System.Reflection.MetadataLoadContext , System.Resources.Extensions , System.Security.Cryptography.Pkcs , System.Security.Cryptography.ProtectedData , System.Security.Cryptography.Xml , System.Security.Permissions , System.ServiceProcess.ServiceController , System.Text.Encoding.CodePages , System.Text.Json , System.Windows.Extensions From Version 9.0.12 -> To Version 9.0.13 Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.9.0 , VS.Redist.Common.NetCore.TargetingPack.x64.9.0 , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 9.0.12-servicing.25606.9 -> To Version 9.0.13-servicing.26063.17 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport,Microsoft.SourceBuild.Intermediate.emsdk From Version 9.0.12-servicing.25602.39 -> To Version 9.0.13-servicing.26056.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 From Version 9.0.12 -> To Version 9.0.13 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 6 +- eng/Version.Details.xml | 152 ++++++++++++++++++++-------------------- eng/Versions.props | 72 +++++++++---------- 3 files changed, 115 insertions(+), 115 deletions(-) diff --git a/NuGet.config b/NuGet.config index 64a6b6a6d0e4..7475e32cb7bf 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,7 +24,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -73,7 +73,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d08305d6613b..4fcbd8844374 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -15,42 +15,42 @@ 9887f549bbf4a5eb3796e3d783826a3758b6b1a9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 @@ -59,18 +59,18 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 @@ -230,29 +230,29 @@ bc9161306b23641b0364b8f93d546da4d48da1eb - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop @@ -503,89 +503,89 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 @@ -619,9 +619,9 @@ 7d6bcdd1e851735273e4eed39e40366d48f335c9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://github.com/dotnet/arcade-services diff --git a/eng/Versions.props b/eng/Versions.props index 10a472949a42..4575049e57cd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -86,47 +86,47 @@ - 9.0.12 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.0-rc.1.23414.4 - 9.0.12-servicing.25606.9 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13-servicing.26063.17 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 2.1.0 - 9.0.12 + 9.0.13 8.0.0 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.0 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.5 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 @@ -317,8 +317,8 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 - 9.0.12 + 9.0.13-servicing.26056.4 + 9.0.13 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) From 6646358d2367348a0092b5d076e89367273df736 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 14 Jan 2026 01:54:45 +0000 Subject: [PATCH 065/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20260113.17 On relative base path root Microsoft.Bcl.AsyncInterfaces , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.FileProviders.Abstractions , Microsoft.Extensions.FileSystemGlobbing , Microsoft.Extensions.Logging , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging.Console , Microsoft.NET.ILLink.Tasks , Microsoft.NETCore.App.Host.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.Win32.SystemEvents , System.CodeDom , System.Composition.AttributedModel , System.Composition.Convention , System.Composition.Hosting , System.Composition.Runtime , System.Composition.TypedParts , System.Configuration.ConfigurationManager , System.Formats.Asn1 , System.Reflection.MetadataLoadContext , System.Resources.Extensions , System.Security.Cryptography.Pkcs , System.Security.Cryptography.ProtectedData , System.Security.Cryptography.Xml , System.Security.Permissions , System.ServiceProcess.ServiceController , System.Text.Encoding.CodePages , System.Text.Json , System.Windows.Extensions From Version 9.0.12 -> To Version 9.0.13 Microsoft.NET.HostModel , Microsoft.NETCore.Platforms , VS.Redist.Common.NetCore.SharedFramework.x64.9.0 , VS.Redist.Common.NetCore.TargetingPack.x64.9.0 , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 9.0.12-servicing.25606.9 -> To Version 9.0.13-servicing.26063.17 Dependency coherency updates On relative base path root Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100 From Version 9.0.12 -> To Version 9.0.13 (parent: Microsoft.NETCore.App.Runtime.win-x64) Microsoft.SourceBuild.Intermediate.emsdk From Version 9.0.12-servicing.25602.39 -> To Version 9.0.13-servicing.26056.4 (parent: Microsoft.NETCore.App.Runtime.win-x64) --- NuGet.config | 6 +- eng/Version.Details.xml | 148 ++++++++++++++++++++-------------------- eng/Versions.props | 70 +++++++++---------- 3 files changed, 112 insertions(+), 112 deletions(-) diff --git a/NuGet.config b/NuGet.config index 2934c8c1bd50..5d0edfdcb9ce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,7 +24,7 @@ - + @@ -37,7 +37,7 @@ - + @@ -75,7 +75,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 963e182fe49a..0b21f87c5284 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -15,42 +15,42 @@ b73682307aa0128c5edbec94c2e6a070d13ae6bb - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 @@ -59,14 +59,14 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 @@ -226,29 +226,29 @@ 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop @@ -469,89 +469,89 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 @@ -585,9 +585,9 @@ 0890ca08513391dafe556fb326c73c6c5c6cb329 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://github.com/dotnet/arcade-services diff --git a/eng/Versions.props b/eng/Versions.props index 46317d59511f..aac9227273ae 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -85,50 +85,50 @@ - 9.0.12 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.0-rc.1.23414.4 - 9.0.12-servicing.25606.9 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13-servicing.26063.17 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 2.1.0 - 9.0.12 + 9.0.13 8.0.0 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.0 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 4.5.1 4.5.5 8.0.5 4.5.4 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 @@ -319,7 +319,7 @@ 15.0.9617 18.0.9617 - 9.0.12 + 9.0.13 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) From fc43347eb7e78e2d5c62c4c9e34a83a4fb312225 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 14 Jan 2026 03:35:07 +0000 Subject: [PATCH 066/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260113.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.13-servicing.26063.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 5d0edfdcb9ce..d1d6f4a60db7 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0b21f87c5284..aeebbe7d2445 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -252,20 +252,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index aac9227273ae..6aa7fccb8263 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -132,8 +132,8 @@ - 9.0.13-servicing.26062.2 - 9.0.13-servicing.26062.2 + 9.0.13-servicing.26063.2 + 9.0.13-servicing.26063.2 9.0.13 9.0.13 From 1758aa83a1c484935cbde505af96fec1829e6f52 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 14 Jan 2026 03:35:30 +0000 Subject: [PATCH 067/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260113.2 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.12 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.12-servicing.25609.4 -> To Version 9.0.13-servicing.26063.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 27ff04d3c4be..8e91ae8c5056 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6ce98b4bc98c..7a33fa36c63b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -256,20 +256,20 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 20b7e87f69971347947044588e39673526274573 + 76c6ef06082a87d17f0ea2a17c8af6f259f745dd https://dev.azure.com/dnceng/internal/_git/dotnet-wpf diff --git a/eng/Versions.props b/eng/Versions.props index 8badb4b6286c..9e3cbc27114c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -130,8 +130,8 @@ - 9.0.13-servicing.26062.2 - 9.0.13-servicing.26062.2 + 9.0.13-servicing.26063.2 + 9.0.13-servicing.26063.2 9.0.13 9.0.13 From 7a5391d7c919b6f4532455066c3c0edaebe2a5a6 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:37:35 -0800 Subject: [PATCH 068/133] [release/8.0.1xx] Update dependencies from dotnet/razor (#52454) Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 94e58efffbea..f3cd3e4d8422 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -293,18 +293,18 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore ee417479933278bb5aadc5944706a96b5ef74a5d - + https://github.com/dotnet/razor - a36694712be3000f238f25e52f11e6225dda5f9b + e137c0322ddb9e3d4f4a5de385647baa9719f9a6 - + https://github.com/dotnet/razor - a36694712be3000f238f25e52f11e6225dda5f9b + e137c0322ddb9e3d4f4a5de385647baa9719f9a6 - + https://github.com/dotnet/razor - a36694712be3000f238f25e52f11e6225dda5f9b + e137c0322ddb9e3d4f4a5de385647baa9719f9a6 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore diff --git a/eng/Versions.props b/eng/Versions.props index 1b62ad7f049c..67b55868c06a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -180,9 +180,9 @@ - 7.0.0-preview.25628.11 - 7.0.0-preview.25628.11 - 7.0.0-preview.25628.11 + 7.0.0-preview.26064.3 + 7.0.0-preview.26064.3 + 7.0.0-preview.26064.3 From 1c8d25e2b4b5e232305ddf65d662ca106d128f6e Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 14 Jan 2026 21:21:28 +0000 Subject: [PATCH 069/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260114.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.13-servicing.26062.8 -> To Version 9.0.13-servicing.26064.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.13 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0f3ab00819e1..caf77a765e56 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 86bcbda31af9..7c1ebe88458c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -135,13 +135,13 @@ https://github.com/dotnet/roslyn fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://github.com/nuget/nuget.client @@ -277,52 +277,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 @@ -345,19 +345,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://github.com/dotnet/test-templates @@ -541,7 +541,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 6321f2306926..7ff1db6eae05 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -216,18 +216,18 @@ 9.0.13 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 9.0.13 9.0.13 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 From 9b34d703fe1799441841d9fe3a4d4fafc0a3d006 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 14 Jan 2026 21:21:52 +0000 Subject: [PATCH 070/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore build 20260114.9 On relative base path root dotnet-dev-certs , dotnet-user-jwts , dotnet-user-secrets , Microsoft.AspNetCore.Analyzers , Microsoft.AspNetCore.App.Ref.Internal , Microsoft.AspNetCore.Components.SdkAnalyzers , Microsoft.AspNetCore.DeveloperCertificates.XPlat , Microsoft.AspNetCore.Mvc.Analyzers , Microsoft.AspNetCore.Mvc.Api.Analyzers , VS.Redist.Common.AspNetCore.SharedFramework.x64.9.0 , Microsoft.SourceBuild.Intermediate.aspnetcore From Version 9.0.13-servicing.26062.8 -> To Version 9.0.13-servicing.26064.9 Microsoft.AspNetCore.App.Ref , Microsoft.AspNetCore.App.Runtime.win-x64 , Microsoft.AspNetCore.Authorization , Microsoft.AspNetCore.Components.Web , Microsoft.AspNetCore.TestHost , Microsoft.Extensions.FileProviders.Embedded , Microsoft.Extensions.ObjectPool , Microsoft.JSInterop From Version 9.0.13 -> To Version 9.0.13 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 689527edbf85..77998fa0072f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,7 +27,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f8c4c17bbc46..b24781fd333e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -131,13 +131,13 @@ https://github.com/dotnet/roslyn 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://github.com/nuget/nuget.client @@ -273,52 +273,52 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 @@ -341,19 +341,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 @@ -507,7 +507,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - d8f5c55b1ed8dcc9b7822b3ae626c54399e07ce8 + 087328de5f1e0067be48d87295ae8d92064a1535 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 8c71a6a7b1fb..4b956f9a3e05 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -218,18 +218,18 @@ 9.0.13 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 9.0.13 9.0.13 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 - 9.0.13-servicing.26062.8 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 From 27d9b2f9f84ff0592e126d53442aa710ae8a02ed Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 Jan 2026 01:44:50 +0000 Subject: [PATCH 071/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260115.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.13 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.13-servicing.26063.2 -> To Version 9.0.13-servicing.26065.3 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26062.4 (parent: Microsoft.WindowsDesktop.App.Ref) Microsoft.DotNet.Wpf.ProjectTemplates From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26062.4 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 20 ++++++++++---------- eng/Versions.props | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/NuGet.config b/NuGet.config index 77998fa0072f..e6d08983ffe2 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b24781fd333e..98bf00ecccd8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -252,24 +252,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 58060180f2776452976616ae4894118dfd21f8d5 + 9e4e0208793a39e0df563c2de6209848c178007d https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -360,9 +360,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-winforms b05fe71693c6c70b537911f88865ea456a9015f5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 58060180f2776452976616ae4894118dfd21f8d5 + 9e4e0208793a39e0df563c2de6209848c178007d https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index 4b956f9a3e05..bb8853a351cf 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -132,8 +132,8 @@ - 9.0.13-servicing.26063.2 - 9.0.13-servicing.26063.2 + 9.0.13-servicing.26065.3 + 9.0.13-servicing.26065.3 9.0.13 9.0.13 @@ -239,8 +239,8 @@ - 9.0.12-rtm.25609.3 - 9.0.12-rtm.25609.3 + 9.0.13-rtm.26062.4 + 9.0.13-rtm.26062.4 From 8c508a2e09a85ae1149cb0de395d609e213ef23a Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 Jan 2026 01:44:51 +0000 Subject: [PATCH 072/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260115.3 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.13 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.13-servicing.26063.2 -> To Version 9.0.13-servicing.26065.3 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26062.4 (parent: Microsoft.WindowsDesktop.App.Ref) Microsoft.DotNet.Wpf.ProjectTemplates From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26062.4 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 20 ++++++++++---------- eng/Versions.props | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0f3ab00819e1..a03fee338621 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 86bcbda31af9..0c2088f0c6e1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -256,24 +256,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 76c6ef06082a87d17f0ea2a17c8af6f259f745dd + 78287477e2b0c7b115b6be1895e22128bc73f4f8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 58060180f2776452976616ae4894118dfd21f8d5 + 9e4e0208793a39e0df563c2de6209848c178007d https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -394,9 +394,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-winforms b05fe71693c6c70b537911f88865ea456a9015f5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 58060180f2776452976616ae4894118dfd21f8d5 + 9e4e0208793a39e0df563c2de6209848c178007d https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index 6321f2306926..c785b133995f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -130,8 +130,8 @@ - 9.0.13-servicing.26063.2 - 9.0.13-servicing.26063.2 + 9.0.13-servicing.26065.3 + 9.0.13-servicing.26065.3 9.0.13 9.0.13 @@ -237,8 +237,8 @@ - 9.0.12-rtm.25609.3 - 9.0.12-rtm.25609.3 + 9.0.13-rtm.26062.4 + 9.0.13-rtm.26062.4 From a9784528844626e7966c96067efbb1accb223a28 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 Jan 2026 18:01:34 +0000 Subject: [PATCH 073/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260115.7 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.13 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.13-servicing.26063.2 -> To Version 9.0.13-servicing.26065.7 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26065.1 (parent: Microsoft.WindowsDesktop.App.Ref) Microsoft.Dotnet.WinForms.ProjectTemplates From Version 9.0.12-servicing.25608.3 -> To Version 9.0.13-servicing.26064.3 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) Microsoft.DotNet.Wpf.ProjectTemplates From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26065.1 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 24 ++++++++++++------------ eng/Versions.props | 10 +++++----- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/NuGet.config b/NuGet.config index e6d08983ffe2..1c484cdcda0a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -43,7 +43,7 @@ - + @@ -78,7 +78,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 98bf00ecccd8..05c14d9bde69 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -252,24 +252,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 9e4e0208793a39e0df563c2de6209848c178007d + 86af53614f2e96919c6daa97a0d20037e1d1814d https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -356,13 +356,13 @@ 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - b05fe71693c6c70b537911f88865ea456a9015f5 + 585a409cea7aef1ccb4a66f9c3999e8079ae9c1e - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 9e4e0208793a39e0df563c2de6209848c178007d + 86af53614f2e96919c6daa97a0d20037e1d1814d https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index bb8853a351cf..4444857772da 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -81,7 +81,7 @@ - 9.0.12-servicing.25608.3 + 9.0.13-servicing.26064.3 @@ -132,8 +132,8 @@ - 9.0.13-servicing.26065.3 - 9.0.13-servicing.26065.3 + 9.0.13-servicing.26065.7 + 9.0.13-servicing.26065.7 9.0.13 9.0.13 @@ -239,8 +239,8 @@ - 9.0.13-rtm.26062.4 - 9.0.13-rtm.26062.4 + 9.0.13-rtm.26065.1 + 9.0.13-rtm.26065.1 From 18577897147e26b5b0e3ce83aade01839ef61cbe Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 Jan 2026 18:01:35 +0000 Subject: [PATCH 074/133] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop build 20260115.7 On relative base path root Microsoft.WindowsDesktop.App.Ref , Microsoft.WindowsDesktop.App.Runtime.win-x64 From Version 9.0.13 -> To Version 9.0.13 VS.Redist.Common.WindowsDesktop.SharedFramework.x64.9.0 , VS.Redist.Common.WindowsDesktop.TargetingPack.x64.9.0 From Version 9.0.13-servicing.26063.2 -> To Version 9.0.13-servicing.26065.7 Dependency coherency updates On relative base path root Microsoft.NET.Sdk.WindowsDesktop From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26065.1 (parent: Microsoft.WindowsDesktop.App.Ref) Microsoft.Dotnet.WinForms.ProjectTemplates From Version 9.0.12-servicing.25608.3 -> To Version 9.0.13-servicing.26064.3 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) Microsoft.DotNet.Wpf.ProjectTemplates From Version 9.0.12-rtm.25609.3 -> To Version 9.0.13-rtm.26065.1 (parent: Microsoft.WindowsDesktop.App.Runtime.win-x64) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 24 ++++++++++++------------ eng/Versions.props | 10 +++++----- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/NuGet.config b/NuGet.config index a03fee338621..6fd06d7b6bba 100644 --- a/NuGet.config +++ b/NuGet.config @@ -41,7 +41,7 @@ - + @@ -76,7 +76,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0c2088f0c6e1..8c72730d2fea 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -256,24 +256,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 78287477e2b0c7b115b6be1895e22128bc73f4f8 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 9e4e0208793a39e0df563c2de6209848c178007d + 86af53614f2e96919c6daa97a0d20037e1d1814d https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -390,13 +390,13 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - b05fe71693c6c70b537911f88865ea456a9015f5 + 585a409cea7aef1ccb4a66f9c3999e8079ae9c1e - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 9e4e0208793a39e0df563c2de6209848c178007d + 86af53614f2e96919c6daa97a0d20037e1d1814d https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index c785b133995f..5f4dc49354f8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -77,7 +77,7 @@ - 9.0.12-servicing.25608.3 + 9.0.13-servicing.26064.3 @@ -130,8 +130,8 @@ - 9.0.13-servicing.26065.3 - 9.0.13-servicing.26065.3 + 9.0.13-servicing.26065.7 + 9.0.13-servicing.26065.7 9.0.13 9.0.13 @@ -237,8 +237,8 @@ - 9.0.13-rtm.26062.4 - 9.0.13-rtm.26062.4 + 9.0.13-rtm.26065.1 + 9.0.13-rtm.26065.1 From 6f9b68e2f1e6a9d19c7e3ef72ba275310a027a17 Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Sun, 18 Jan 2026 10:59:33 -0500 Subject: [PATCH 075/133] Disable workload resolver tests on Full Framework for 8.0 --- .../WorkloadTests.cs | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs b/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs index aa93bbfd6667..b4f588b76aef 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs @@ -11,7 +11,8 @@ public WorkloadTests(ITestOutputHelper log) : base(log) { } - [Fact] + // Changing these tests to core MSBuild only for 8.0 since there were weird test failures and the Full Framework resolver doesn't ship from 8.0 into Visual Studio anymore. + [CoreMSBuildOnlyFact] public void It_should_build_with_workload() { var testProject = new TestProject() @@ -29,7 +30,7 @@ public void It_should_build_with_workload() .Pass(); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_without_workload() { var testProject = new TestProject() @@ -49,7 +50,7 @@ public void It_should_fail_without_workload() .HaveStdOutContaining("NETSDK1147"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_create_suggested_workload_items() { var testProject = new TestProject() @@ -80,7 +81,7 @@ public void It_should_create_suggested_workload_items() .BeEquivalentTo(new[] { ("microsoft-net-sdk-missingtestworkload", "microsoft.net.sdk.missingtestworkload") }); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_to_restore_without_workload_when_multitargeted() { var testProject = new TestProject() @@ -107,7 +108,7 @@ public void It_should_fail_to_restore_without_workload_when_multitargeted() // .HaveStdOutContaining("android"); } - [Fact(Skip = "https://github.com/dotnet/sdk/issues/19866")] + [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/19866")] public void It_should_fail_to_build_without_workload_when_multitargeted() { var testProject = new TestProject() @@ -129,7 +130,7 @@ public void It_should_fail_to_build_without_workload_when_multitargeted() .HaveStdOutContaining("android"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_to_build_when_multitargeted_to_unknown_platforms() { var testProject = new TestProject() @@ -150,7 +151,7 @@ public void It_should_fail_to_build_when_multitargeted_to_unknown_platforms() } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_with_resolver_disabled() { var testProject = new TestProject() @@ -172,7 +173,7 @@ public void It_should_fail_with_resolver_disabled() .HaveStdOutContaining("NETSDK1208"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_import_AutoImports_for_installed_workloads() { var testProject = new TestProject() @@ -198,7 +199,7 @@ public void It_should_import_AutoImports_for_installed_workloads() .BeEquivalentTo("true"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_import_aliased_pack() { var testProject = new TestProject() @@ -227,7 +228,7 @@ public void It_should_import_aliased_pack() .BeEquivalentTo("true"); } - [Fact(Skip = "https://github.com/dotnet/sdk/issues/19866")] + [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/19866")] public void It_should_get_suggested_workload_by_GetRequiredWorkloads_target() { var mainProject = new TestProject() @@ -255,7 +256,7 @@ public void It_should_get_suggested_workload_by_GetRequiredWorkloads_target() .BeEquivalentTo("android"); } - [Theory(Skip = "https://github.com/dotnet/installer/issues/13361")] + [CoreMSBuildOnlyTheory(Skip = "https://github.com/dotnet/installer/issues/13361")] [InlineData($"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "android;android-aot")] [InlineData(ToolsetInfo.CurrentTargetFramework, $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "macos;android-aot")] [InlineData($"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android", "macos;android-aot")] From 68307ba9bafc2ae0aa55fe505e399240ead8174e Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Sun, 18 Jan 2026 10:59:33 -0500 Subject: [PATCH 076/133] Disable workload resolver tests on Full Framework for 8.0 --- .../WorkloadTests.cs | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs b/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs index aa93bbfd6667..b4f588b76aef 100644 --- a/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs +++ b/src/Tests/Microsoft.NET.Build.Tests/WorkloadTests.cs @@ -11,7 +11,8 @@ public WorkloadTests(ITestOutputHelper log) : base(log) { } - [Fact] + // Changing these tests to core MSBuild only for 8.0 since there were weird test failures and the Full Framework resolver doesn't ship from 8.0 into Visual Studio anymore. + [CoreMSBuildOnlyFact] public void It_should_build_with_workload() { var testProject = new TestProject() @@ -29,7 +30,7 @@ public void It_should_build_with_workload() .Pass(); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_without_workload() { var testProject = new TestProject() @@ -49,7 +50,7 @@ public void It_should_fail_without_workload() .HaveStdOutContaining("NETSDK1147"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_create_suggested_workload_items() { var testProject = new TestProject() @@ -80,7 +81,7 @@ public void It_should_create_suggested_workload_items() .BeEquivalentTo(new[] { ("microsoft-net-sdk-missingtestworkload", "microsoft.net.sdk.missingtestworkload") }); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_to_restore_without_workload_when_multitargeted() { var testProject = new TestProject() @@ -107,7 +108,7 @@ public void It_should_fail_to_restore_without_workload_when_multitargeted() // .HaveStdOutContaining("android"); } - [Fact(Skip = "https://github.com/dotnet/sdk/issues/19866")] + [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/19866")] public void It_should_fail_to_build_without_workload_when_multitargeted() { var testProject = new TestProject() @@ -129,7 +130,7 @@ public void It_should_fail_to_build_without_workload_when_multitargeted() .HaveStdOutContaining("android"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_to_build_when_multitargeted_to_unknown_platforms() { var testProject = new TestProject() @@ -150,7 +151,7 @@ public void It_should_fail_to_build_when_multitargeted_to_unknown_platforms() } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_fail_with_resolver_disabled() { var testProject = new TestProject() @@ -172,7 +173,7 @@ public void It_should_fail_with_resolver_disabled() .HaveStdOutContaining("NETSDK1208"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_import_AutoImports_for_installed_workloads() { var testProject = new TestProject() @@ -198,7 +199,7 @@ public void It_should_import_AutoImports_for_installed_workloads() .BeEquivalentTo("true"); } - [Fact] + [CoreMSBuildOnlyFact] public void It_should_import_aliased_pack() { var testProject = new TestProject() @@ -227,7 +228,7 @@ public void It_should_import_aliased_pack() .BeEquivalentTo("true"); } - [Fact(Skip = "https://github.com/dotnet/sdk/issues/19866")] + [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/19866")] public void It_should_get_suggested_workload_by_GetRequiredWorkloads_target() { var mainProject = new TestProject() @@ -255,7 +256,7 @@ public void It_should_get_suggested_workload_by_GetRequiredWorkloads_target() .BeEquivalentTo("android"); } - [Theory(Skip = "https://github.com/dotnet/installer/issues/13361")] + [CoreMSBuildOnlyTheory(Skip = "https://github.com/dotnet/installer/issues/13361")] [InlineData($"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "android;android-aot")] [InlineData(ToolsetInfo.CurrentTargetFramework, $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "macos;android-aot")] [InlineData($"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android", "macos;android-aot")] From 36f21ac1819e5f9a1d04781d8eab898b1fc52af6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:19:13 +0000 Subject: [PATCH 077/133] Reset files to release/9.0.1xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 52 +- eng/Version.Details.xml | 669 +++++++++++------- eng/Versions.props | 375 ++++++---- eng/common/SetupNugetSources.ps1 | 54 +- eng/common/SetupNugetSources.sh | 62 +- eng/common/build.cmd | 3 + eng/common/build.ps1 | 3 + eng/common/build.sh | 15 +- eng/common/core-templates/job/job.yml | 253 +++++++ eng/common/core-templates/job/onelocbuild.yml | 121 ++++ .../job/publish-build-assets.yml | 172 +++++ .../core-templates/job/source-build.yml | 99 +++ .../job/source-index-stage1.yml | 81 +++ .../core-templates/jobs/codeql-build.yml | 33 + eng/common/core-templates/jobs/jobs.yml | 123 ++++ .../core-templates/jobs/source-build.yml | 63 ++ .../post-build/common-variables.yml | 22 + .../core-templates/post-build/post-build.yml | 327 +++++++++ .../post-build/setup-maestro-vars.yml | 74 ++ .../steps/component-governance.yml | 16 + .../steps/enable-internal-runtimes.yml | 32 + .../steps/enable-internal-sources.yml | 47 ++ .../core-templates/steps/generate-sbom.yml | 54 ++ .../steps/get-delegation-sas.yml | 55 ++ .../steps/get-federated-access-token.yml | 42 ++ .../steps/publish-build-artifacts.yml | 20 + .../core-templates/steps/publish-logs.yml | 58 ++ .../steps/publish-pipeline-artifacts.yml | 20 + .../core-templates/steps/retain-build.yml | 28 + .../core-templates/steps/send-to-helix.yml | 93 +++ .../core-templates/steps/source-build.yml | 137 ++++ .../variables/pool-providers.yml | 8 + eng/common/cross/build-android-rootfs.sh | 8 +- eng/common/cross/build-rootfs.sh | 262 +++++-- eng/common/cross/riscv64/tizen/tizen.patch | 9 + eng/common/cross/tizen-build-rootfs.sh | 21 + eng/common/cross/tizen-fetch.sh | 19 +- eng/common/cross/toolchain.cmake | 25 +- eng/common/darc-init.ps1 | 2 +- eng/common/darc-init.sh | 2 +- eng/common/dotnet-install.sh | 5 +- eng/common/generate-sbom-prep.sh | 2 +- eng/common/helixpublish.proj | 1 + eng/common/internal/Directory.Build.props | 7 + eng/common/internal/NuGet.config | 3 + eng/common/internal/Tools.csproj | 14 +- eng/common/native/CommonLibrary.psm1 | 3 +- eng/common/native/init-compiler.sh | 117 +-- eng/common/native/init-distro-rid.sh | 76 +- eng/common/native/init-os-and-arch.sh | 7 +- .../post-build/check-channel-consistency.ps1 | 12 +- eng/common/post-build/nuget-validation.ps1 | 9 +- eng/common/post-build/nuget-verification.ps1 | 2 +- eng/common/post-build/publish-using-darc.ps1 | 15 +- eng/common/post-build/redact-logs.ps1 | 89 +++ .../post-build/sourcelink-validation.ps1 | 10 +- eng/common/post-build/symbols-validation.ps1 | 2 - eng/common/sdl/NuGet.config | 4 +- eng/common/sdl/execute-all-sdl-tools.ps1 | 4 +- eng/common/sdl/init-sdl.ps1 | 8 + eng/common/sdl/packages.config | 2 +- eng/common/sdl/sdl.ps1 | 4 +- eng/common/sdl/trim-assets-version.ps1 | 2 +- eng/common/template-guidance.md | 133 ++++ eng/common/templates-official/job/job.yml | 340 ++------- .../templates-official/job/onelocbuild.yml | 115 +-- .../job/publish-build-assets.yml | 180 +---- .../templates-official/job/source-build.yml | 82 +-- .../job/source-index-stage1.yml | 86 +-- .../templates-official/jobs/codeql-build.yml | 32 +- eng/common/templates-official/jobs/jobs.yml | 104 +-- .../templates-official/jobs/source-build.yml | 62 +- .../post-build/common-variables.yml | 26 +- .../post-build/post-build.yml | 295 +------- .../post-build/setup-maestro-vars.yml | 74 +- .../steps/component-governance.yml | 18 +- .../steps/enable-internal-runtimes.yml | 31 +- .../steps/enable-internal-sources.yml | 7 + .../steps/generate-sbom.yml | 51 +- .../steps/get-delegation-sas.yml | 55 +- .../steps/get-federated-access-token.yml | 45 +- .../steps/publish-build-artifacts.yml | 41 ++ .../templates-official/steps/publish-logs.yml | 26 +- .../steps/publish-pipeline-artifacts.yml | 28 + .../templates-official/steps/retain-build.yml | 33 +- .../steps/send-to-helix.yml | 97 +-- .../templates-official/steps/source-build.yml | 138 +--- eng/common/templates/job/job.yml | 319 ++------- eng/common/templates/job/onelocbuild.yml | 112 +-- .../templates/job/publish-build-assets.yml | 176 +---- eng/common/templates/job/source-build.yml | 81 +-- .../templates/job/source-index-stage1.yml | 85 +-- eng/common/templates/jobs/codeql-build.yml | 32 +- eng/common/templates/jobs/jobs.yml | 104 +-- eng/common/templates/jobs/source-build.yml | 62 +- .../templates/post-build/common-variables.yml | 26 +- .../templates/post-build/post-build.yml | 291 +------- .../post-build/setup-maestro-vars.yml | 74 +- .../templates/steps/component-governance.yml | 18 +- .../steps/enable-internal-runtimes.yml | 30 +- .../steps/enable-internal-sources.yml | 7 + eng/common/templates/steps/generate-sbom.yml | 51 +- .../templates/steps/get-delegation-sas.yml | 55 +- .../steps/get-federated-access-token.yml | 45 +- .../steps/publish-build-artifacts.yml | 40 ++ eng/common/templates/steps/publish-logs.yml | 26 +- .../steps/publish-pipeline-artifacts.yml | 34 + eng/common/templates/steps/retain-build.yml | 33 +- eng/common/templates/steps/send-to-helix.yml | 97 +-- eng/common/templates/steps/source-build.yml | 138 +--- .../templates/variables/pool-providers.yml | 56 +- eng/common/tools.ps1 | 73 +- eng/common/tools.sh | 39 +- global.json | 13 +- 114 files changed, 4007 insertions(+), 4166 deletions(-) create mode 100644 eng/common/build.cmd create mode 100644 eng/common/core-templates/job/job.yml create mode 100644 eng/common/core-templates/job/onelocbuild.yml create mode 100644 eng/common/core-templates/job/publish-build-assets.yml create mode 100644 eng/common/core-templates/job/source-build.yml create mode 100644 eng/common/core-templates/job/source-index-stage1.yml create mode 100644 eng/common/core-templates/jobs/codeql-build.yml create mode 100644 eng/common/core-templates/jobs/jobs.yml create mode 100644 eng/common/core-templates/jobs/source-build.yml create mode 100644 eng/common/core-templates/post-build/common-variables.yml create mode 100644 eng/common/core-templates/post-build/post-build.yml create mode 100644 eng/common/core-templates/post-build/setup-maestro-vars.yml create mode 100644 eng/common/core-templates/steps/component-governance.yml create mode 100644 eng/common/core-templates/steps/enable-internal-runtimes.yml create mode 100644 eng/common/core-templates/steps/enable-internal-sources.yml create mode 100644 eng/common/core-templates/steps/generate-sbom.yml create mode 100644 eng/common/core-templates/steps/get-delegation-sas.yml create mode 100644 eng/common/core-templates/steps/get-federated-access-token.yml create mode 100644 eng/common/core-templates/steps/publish-build-artifacts.yml create mode 100644 eng/common/core-templates/steps/publish-logs.yml create mode 100644 eng/common/core-templates/steps/publish-pipeline-artifacts.yml create mode 100644 eng/common/core-templates/steps/retain-build.yml create mode 100644 eng/common/core-templates/steps/send-to-helix.yml create mode 100644 eng/common/core-templates/steps/source-build.yml create mode 100644 eng/common/core-templates/variables/pool-providers.yml create mode 100644 eng/common/cross/riscv64/tizen/tizen.patch create mode 100644 eng/common/post-build/redact-logs.ps1 create mode 100644 eng/common/template-guidance.md create mode 100644 eng/common/templates-official/steps/enable-internal-sources.yml create mode 100644 eng/common/templates-official/steps/publish-build-artifacts.yml create mode 100644 eng/common/templates-official/steps/publish-pipeline-artifacts.yml create mode 100644 eng/common/templates/steps/enable-internal-sources.yml create mode 100644 eng/common/templates/steps/publish-build-artifacts.yml create mode 100644 eng/common/templates/steps/publish-pipeline-artifacts.yml diff --git a/NuGet.config b/NuGet.config index a15c8be96590..2ef14a275645 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,30 +3,46 @@ + + + + + + + + + + + + + + + + + + + + - + - - - - + + - + - + - + - - @@ -34,6 +50,9 @@ + + + @@ -43,26 +62,21 @@ - - - + - - + - + - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3e075aa26930..b7bd622c29fc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,521 +1,664 @@ - + https://github.com/dotnet/templating - 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 + 49f403f06033a1d28efd68d72aac1aab949721ce - + https://github.com/dotnet/templating - 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 + 49f403f06033a1d28efd68d72aac1aab949721ce - + + https://github.com/dotnet/templating - 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 + 49f403f06033a1d28efd68d72aac1aab949721ce - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 - + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 + + + + + + https://github.com/dotnet/core-setup + 7d57652f33493fa022125b7f63aad0d70c52d810 + + + https://github.com/dotnet/emsdk + f364bf26bf50d8cbdd8652d284d25a8ccb55039a + + + https://github.com/dotnet/emsdk + f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + + https://github.com/dotnet/emsdk - 87f89d77d2eb70ed29b3e0f37cfbf28bfd49c536 + f364bf26bf50d8cbdd8652d284d25a8ccb55039a + - - https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted - 02bf66295b64ab368d12933041f7281aad186a2d + + https://github.com/dotnet/msbuild + f42d88d8b1ac5dbe867e66278c5f4d9573eec65b - - https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted - 02bf66295b64ab368d12933041f7281aad186a2d + + https://github.com/dotnet/msbuild + f42d88d8b1ac5dbe867e66278c5f4d9573eec65b - - https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted - 02bf66295b64ab368d12933041f7281aad186a2d + + + https://github.com/dotnet/msbuild + f42d88d8b1ac5dbe867e66278c5f4d9573eec65b - + https://github.com/dotnet/fsharp - e11d7079bebc6f101c5313fe0d1de9e3d38a7c02 + 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 - + + https://github.com/dotnet/fsharp - e11d7079bebc6f101c5313fe0d1de9e3d38a7c02 + 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 - - https://github.com/dotnet/format - b7d483d5a0ce4e96a3468514f3f4a98f3c371434 - + + https://github.com/dotnet/roslyn + fc52718eccdb37693a40a518b1178b1e23114e68 - + + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + + https://github.com/dotnet/roslyn + fc52718eccdb37693a40a518b1178b1e23114e68 + + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/microsoft/vstest - 7855c9b221686104532ebf3380f2d45b3613b369 - + bc9161306b23641b0364b8f93d546da4d48da1eb - + https://github.com/microsoft/vstest - 7855c9b221686104532ebf3380f2d45b3613b369 + bc9161306b23641b0364b8f93d546da4d48da1eb - + https://github.com/microsoft/vstest - 7855c9b221686104532ebf3380f2d45b3613b369 + bc9161306b23641b0364b8f93d546da4d48da1eb - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + + + https://github.com/microsoft/vstest + bc9161306b23641b0364b8f93d546da4d48da1eb + - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - b132b33a48ebc857db94785fdd86d671d123911a + 58060180f2776452976616ae4894118dfd21f8d5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 - + f736effe82a61eb6f5eba46e4173eae3b7d3dffd + + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd + - + https://github.com/dotnet/razor - c937db618f8c8739c6fa66ab4ca541344a468fdc - + a03910b95e37a6d2da39c64a1e2fb8262d506f96 - + https://github.com/dotnet/razor - c937db618f8c8739c6fa66ab4ca541344a468fdc + a03910b95e37a6d2da39c64a1e2fb8262d506f96 - + https://github.com/dotnet/razor - c937db618f8c8739c6fa66ab4ca541344a468fdc + a03910b95e37a6d2da39c64a1e2fb8262d506f96 - + + + https://github.com/dotnet/razor + a03910b95e37a6d2da39c64a1e2fb8262d506f96 + + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd + + + https://github.com/dotnet/test-templates + 0385265f4d0b6413d64aea0223172366a9b9858c + + + https://github.com/dotnet/test-templates + 307b8f538d83a955d8f6dd909eee41a5555f2f4d + + + https://github.com/dotnet/test-templates + becc4bd157cd6608b51a5ffe414a5d2de6330272 + + + https://github.com/dotnet/test-templates + becc4bd157cd6608b51a5ffe414a5d2de6330272 + + + https://github.com/dotnet/test-templates + 49c9ad01f057b3c6352bbec12b117acc2224493c - + + https://github.com/dotnet/test-templates + 47c90e140b027225b799ca8413af10ee3d5f1126 + + + + https://github.com/dotnet/test-templates + 47c90e140b027225b799ca8413af10ee3d5f1126 + + + + + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms + b05fe71693c6c70b537911f88865ea456a9015f5 + + + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf + 58060180f2776452976616ae4894118dfd21f8d5 + + https://github.com/dotnet/xdt - 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b + 63ae81154c50a1cf9287cc47d8351d55b4289e6d + + + + https://github.com/dotnet/xdt + 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - abef8ced132657943b7150f01a308e2199a17d5d + 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + https://github.com/dotnet/roslyn-analyzers - abef8ced132657943b7150f01a308e2199a17d5d + 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + + https://github.com/dotnet/roslyn-analyzers - abef8ced132657943b7150f01a308e2199a17d5d + 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + + https://github.com/dotnet/command-line-api + 803d8598f98fb4efd94604b32627ee9407f246db + + https://github.com/dotnet/command-line-api - 02fe27cd6a9b001c8feb7938e6ef4b3799745759 + 803d8598f98fb4efd94604b32627ee9407f246db - + + + + https://github.com/dotnet/symreader + 0710a7892d89999956e8808c28e9dd0512bd53f3 + + + https://github.com/dotnet/command-line-api - 02fe27cd6a9b001c8feb7938e6ef4b3799745759 + 803d8598f98fb4efd94604b32627ee9407f246db - + + https://github.com/dotnet/source-build-externals - 5f4a123a49dd5480065c8d6182536cf86b4f4410 + 16c380d1ce5fa0b24e232251c31cb013bbf3365f - + + https://github.com/dotnet/source-build-reference-packages - 44b5b62182b48c34c4b6aef28943ec3f3e82f214 + 36e2d072b287fb211f288498b2d4553efdee7990 - + https://github.com/dotnet/deployment-tools - 5255d40e228ea1d4b624781b5b97ec16484a3b4b + b2d5c0c5841de4bc036ef4c84b5db3532504e5f3 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 - + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - + + + https://github.com/dotnet/sourcelink + 657ade4711e607cc4759e89e0943aa1ca8aadc63 + + + + https://github.com/dotnet/deployment-tools - 5255d40e228ea1d4b624781b5b97ec16484a3b4b + b2d5c0c5841de4bc036ef4c84b5db3532504e5f3 - + + https://github.com/dotnet/symreader - 27e584661980ee6d82c419a2a471ae505b7d122e + 0710a7892d89999956e8808c28e9dd0512bd53f3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ef853a71052646a42abf17e888ec6d9a69614ad9 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - fdc20074cf1e48b8cf11fe6ac78f255b1fbfe611 - - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 - + c85f9aceddaf85296e3efbc463daaa34fef5a375 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 + c85f9aceddaf85296e3efbc463daaa34fef5a375 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 + c85f9aceddaf85296e3efbc463daaa34fef5a375 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 + c85f9aceddaf85296e3efbc463daaa34fef5a375 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + + https://github.com/dotnet/arcade + c85f9aceddaf85296e3efbc463daaa34fef5a375 + + + https://github.com/dotnet/arcade + c85f9aceddaf85296e3efbc463daaa34fef5a375 + + + + https://github.com/dotnet/arcade + c85f9aceddaf85296e3efbc463daaa34fef5a375 + - - https://github.com/dotnet/xliff-tasks - 73f0850939d96131c28cf6ea6ee5aacb4da0083a - + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 2f124007573374800632d39177cde00ca9fe1ef0 + + + https://github.com/dotnet/arcade-services + e156e649f28395d9d0ee1e848225a689b59e0fd3 + + + https://github.com/dotnet/arcade-services + e156e649f28395d9d0ee1e848225a689b59e0fd3 + + + https://github.com/dotnet/scenario-tests + 0898abbb5899ef400b8372913c2320295798a687 + + + + https://github.com/dotnet/scenario-tests + 0898abbb5899ef400b8372913c2320295798a687 + + + + + https://github.com/dotnet/aspire + 5fa9337a84a52e9bd185d04d156eccbdcf592f74 + + + + https://github.com/dotnet/aspire + 5fa9337a84a52e9bd185d04d156eccbdcf592f74 + https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index 0d4fe45dc9fd..a8c74455f940 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,193 +1,267 @@ - - - + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - true - true - - - - 8.0.418 - 8.0.400 + + 9 + 0 + 1 + 14 + + $(VersionMajor).$(VersionMinor).$(VersionSDKMinor)00 + $(VersionMajor).$(VersionMinor).$(VersionSDKMinor)$(VersionFeature) + $(VersionMajor).$(VersionMinor) + $(MajorMinorVersion).$(VersionSDKMinor) true release - preview + rtm rtm servicing + + true 6.0.1 - - + + 30 + 32 + 17 + 36 + 20 + $([MSBuild]::Add($(VersionFeature), 10)) + + <_NET70ILLinkPackVersion>7.0.100-1.23211.1 + + + + https://ci.dot.net/public/ + https://dotnetclimsrc.blob.core.windows.net/dotnet/ + + + 10.0.0-preview.24609.2 1.0.0-20230414.1 - 2.21.0 + 2.22.0 2.0.1-servicing-26011-01 2.0.3 13.0.3 4.8.6 1.2.0-beta.435 - 8.0.0 - 4.0.0 - 8.0.1 - 8.0.0-beta.25611.2 - 7.0.0-preview.22423.2 - 8.0.0 - 4.3.0 - 4.3.0 4.0.5 - 8.0.1 - 4.6.0 - 2.0.0-beta4.23307.1 - 2.0.0-rtm.1.25064.1 + 2.0.0-beta4.24324.3 + 0.4.0-alpha.24324.3 + 2.0.0-rtm.1.25059.4 + 2.2.0-beta.24327.2 + 1.1.2-beta1.22216.1 + 10.3.0 3.2.2146 0.3.49-beta + + + 1.8.1 + + + 0.2.0 + - - 8.0.23 - 8.0.23-servicing.25606.7 - 8.0.23 - $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) - 8.0.2 - 8.0.23 - 8.0.23-servicing.25606.7 - 8.0.0 - $(MicrosoftExtensionsDependencyModelPackageVersion) - 8.0.1 - 8.0.3 - 8.0.1 - 8.0.23 - 8.0.0 - 8.0.0 - 8.0.23 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.2 - 8.0.1 - 8.0.7 - 8.0.1 - 8.0.2 - 8.0.0 - 8.0.1 - 8.0.6 - - 8.0.5 - 8.0.0 - 8.0.2 + + 1.1.0-beta.25317.4 - - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - $(NuGetPackagingPackageVersion) - $(NuGetProjectModelPackageVersion) + + 9.0.12-servicing.25608.3 - - 17.11.1-release-24455-02 - 17.11.1-release-24455-02 - 17.11.1-release-24455-02 + + + 1.1.0-rtm.25262.1 - 8.0.0 - 8.0.0 - 8.0.0 + 9.0.12 + 9.0.12-servicing.25606.9 + 9.0.12 + 9.0.12 + 9.0.12-servicing.25606.9 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 8.0.0-rc.1.23414.4 + 9.0.12-servicing.25606.9 + 9.0.12-servicing.25606.9 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 2.1.0 + 9.0.12 + 8.0.0 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 8.0.0 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + + 8.0.5 + 9.0.12 + 9.0.12 - - 8.3.657409 + + 9.0.12-servicing.25609.4 + 9.0.12-servicing.25609.4 + 9.0.12 + 9.0.12 + + + + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4-rc.9 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + + + + 17.12.0-release-24508-01 + 17.12.0-release-24508-01 + 17.12.0-release-24508-01 - 8.0.0-preview.23614.1 - 3.11.0-beta1.23614.1 + 9.0.0-preview.26057.1 + 3.11.0-beta1.26057.1 - 17.11.48 - $(MicrosoftBuildPackageVersion) - - 17.8.43 - $(MicrosoftBuildMinimumVersion) - $(MicrosoftBuildMinimumVersion) - 17.11.48-servicing-25466-05 - $(MicrosoftBuildMinimumVersion) - $(MicrosoftBuildMinimumVersion) - $(MicrosoftBuildTasksCorePackageVersion) - $(MicrosoftBuildMinimumVersion) + At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. + + Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> + 17.12.55 + 17.12.55-preview-25616-06 + 17.11.48 + 17.12 - 8.0.418 + 9.0.114 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 8.0.418-servicing.26055.10 + 9.0.114-servicing.26066.4 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.8.403-beta.24526.2 + 12.9.101-beta.25070.7 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - $(MicrosoftNetCompilersToolsetPackageVersion) + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 - 8.0.23 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23 + 9.0.12 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12 + 9.0.12 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 - - 9.0.0-preview.24577.3 - 9.0.0-preview.24577.3 - 9.0.0-preview.24577.3 + + 9.0.0-preview.26064.1 + 9.0.0-preview.26064.1 + 9.0.0-preview.26064.1 - 8.0.23-servicing.25609.4 + 9.0.12-rtm.25609.3 + 9.0.12-rtm.25609.3 + + + + $(MicrosoftNETCoreAppHostwinx64PackageVersion) + $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) + $(MicrosoftAspNetCoreAppRuntimewinx64PackageVersion) + $(MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion) + + + $(MicrosoftNETCoreAppRuntimePackageVersion) + $(MicrosoftNETCoreAppRuntimePackageVersion) + + + + $(MicrosoftAspNetCoreAppRuntimePackageVersion) + $(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion) + $(MicrosoftDotNetWpfProjectTemplatesPackageVersion) + $(NUnit3DotNetNewTemplatePackageVersion) + + + 2.2.0-beta.19072.10 + 2.0.0 + 9.0.0-preview.25381.1 @@ -195,17 +269,20 @@ 4.0.1 - - 1.0.0-beta.23475.1 + + 9.0.0-beta.26063.2 + 9.0.0-beta.26063.2 + 9.0.0-beta.26063.2 + 9.0.0-beta.26063.2 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 @@ -215,8 +292,8 @@ 6.12.0 6.1.0 - 8.0.0-beta.25611.2 4.18.4 + 3.4.3 1.3.2 8.0.0-beta.23607.1 @@ -229,15 +306,35 @@ <_DotNetHiveRoot Condition="!HasTrailingSlash('$(_DotNetHiveRoot)')">$(_DotNetHiveRoot)/ $(_DotNetHiveRoot)dotnet$(ExeExtension) - + + 8.0.100 + 8.2.2 + 9.0.100 + 9.0.0 + 35.0.7 + 18.0.9617 + 18.0.9617 + 15.0.9617 + 18.0.9617 - 8.0.23 - $(MicrosoftNETWorkloadEmscriptenCurrentManifest80100PackageVersion) + 9.0.12-servicing.25602.39 + 9.0.12 + $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) - 8.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`)) + 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) $(MicrosoftNETCoreAppRefPackageVersion) - 8.0.100$([System.Text.RegularExpressions.Regex]::Match($(MonoWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`)) + 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(MonoWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) + + + + 15.7.179 + 15.7.179 + + + + 2.0.1-servicing-26011-01 + diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 59b2d55e1a33..792b60b49d42 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -1,17 +1,10 @@ -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds. -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080 +# This script adds internal feeds required to build commits that depend on internal package sources. For instance, +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. # -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry -# under for each Maestro managed private feed. Two additional credential -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport. +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # -# This script needs to be called in every job that will restore packages and which the base repo has -# private AzDO feeds in the NuGet.config. -# -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)` -# from the AzureDevOps-Artifact-Feeds-Pats variable group. -# -# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing +# See example call for this script below. # # - task: PowerShell@2 # displayName: Setup Private Feeds Credentials @@ -21,11 +14,18 @@ # arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token # env: # Token: $(dn-bot-dnceng-artifact-feeds-rw) +# +# Note that the NuGetAuthenticate task should be called after SetupNugetSources. +# This ensures that: +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) +# - The credential provider is installed. +# +# This logic is also abstracted into enable-internal-sources.yml. [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string]$ConfigFile, - [Parameter(Mandatory = $true)][string]$Password + $Password ) $ErrorActionPreference = "Stop" @@ -48,11 +48,17 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern else { Write-Host "Package source $SourceName already present." } + AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd } # Add a credential node for the specified source function AddCredential($creds, $source, $username, $pwd) { + # If no cred supplied, don't do anything. + if (!$pwd) { + return; + } + # Looks for credential configuration for the given SourceName. Create it if none is found. $sourceElement = $creds.SelectSingleNode($Source) if ($sourceElement -eq $null) @@ -110,11 +116,6 @@ if (!(Test-Path $ConfigFile -PathType Leaf)) { ExitWithExitCode 1 } -if (!$Password) { - Write-PipelineTelemetryError -Category 'Build' -Message 'Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Please supply a valid PAT' - ExitWithExitCode 1 -} - # Load NuGet.config $doc = New-Object System.Xml.XmlDocument $filename = (Get-Item $ConfigFile).FullName @@ -127,11 +128,14 @@ if ($sources -eq $null) { $doc.DocumentElement.AppendChild($sources) | Out-Null } -# Looks for a node. Create it if none is found. -$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") -if ($creds -eq $null) { - $creds = $doc.CreateElement("packageSourceCredentials") - $doc.DocumentElement.AppendChild($creds) | Out-Null +$creds = $null +if ($Password) { + # Looks for a node. Create it if none is found. + $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") + if ($creds -eq $null) { + $creds = $doc.CreateElement("packageSourceCredentials") + $doc.DocumentElement.AppendChild($creds) | Out-Null + } } # Check for disabledPackageSources; we'll enable any darc-int ones we find there @@ -153,7 +157,7 @@ if ($dotnet31Source -ne $null) { AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password } -$dotnetVersions = @('5','6','7','8') +$dotnetVersions = @('5','6','7','8','9') foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; @@ -164,4 +168,4 @@ foreach ($dotnetVersion in $dotnetVersions) { } } -$doc.Save($filename) \ No newline at end of file +$doc.Save($filename) diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index c0e7bbef21c4..facb415ca6ff 100644 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -1,28 +1,27 @@ #!/usr/bin/env bash -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds. -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080 +# This script adds internal feeds required to build commits that depend on internal package sources. For instance, +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. +# +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry -# under for each Maestro's managed private feed. Two additional credential -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport. -# -# This script needs to be called in every job that will restore packages and which the base repo has -# private AzDO feeds in the NuGet.config. -# -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)` -# from the AzureDevOps-Artifact-Feeds-Pats variable group. -# -# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing. +# See example call for this script below. # # - task: Bash@3 -# displayName: Setup Private Feeds Credentials +# displayName: Setup Internal Feeds # inputs: # filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh -# arguments: $(System.DefaultWorkingDirectory)/NuGet.config $Token +# arguments: $(System.DefaultWorkingDirectory)/NuGet.config # condition: ne(variables['Agent.OS'], 'Windows_NT') -# env: -# Token: $(dn-bot-dnceng-artifact-feeds-rw) +# - task: NuGetAuthenticate@1 +# +# Note that the NuGetAuthenticate task should be called after SetupNugetSources. +# This ensures that: +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) +# - The credential provider is installed. +# +# This logic is also abstracted into enable-internal-sources.yml. ConfigFile=$1 CredToken=$2 @@ -48,11 +47,6 @@ if [ ! -f "$ConfigFile" ]; then ExitWithExitCode 1 fi -if [ -z "$CredToken" ]; then - Write-PipelineTelemetryError -category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Please supply a valid PAT" - ExitWithExitCode 1 -fi - if [[ `uname -s` == "Darwin" ]]; then NL=$'\\\n' TB='' @@ -105,7 +99,7 @@ if [ "$?" == "0" ]; then PackageSources+=('dotnet3.1-internal-transport') fi -DotNetVersions=('5' '6' '7' '8') +DotNetVersions=('5' '6' '7' '8' '9') for DotNetVersion in ${DotNetVersions[@]} ; do FeedPrefix="dotnet${DotNetVersion}"; @@ -140,18 +134,20 @@ PackageSources+="$IFS" PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') IFS=$PrevIFS -for FeedName in ${PackageSources[@]} ; do - # Check if there is no existing credential for this FeedName - grep -i "<$FeedName>" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding credentials for $FeedName." +if [ "$CredToken" ]; then + for FeedName in ${PackageSources[@]} ; do + # Check if there is no existing credential for this FeedName + grep -i "<$FeedName>" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding credentials for $FeedName." - PackageSourceCredentialsNodeFooter="" - NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" + PackageSourceCredentialsNodeFooter="" + NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" - sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile - fi -done + sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile + fi + done +fi # Re-enable any entries in disabledPackageSources where the feed name contains darc-int grep -i "" $ConfigFile diff --git a/eng/common/build.cmd b/eng/common/build.cmd new file mode 100644 index 000000000000..99daf368abae --- /dev/null +++ b/eng/common/build.cmd @@ -0,0 +1,3 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*" +exit /b %ErrorLevel% diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 33a6f2d0e248..438f9920c43e 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -19,6 +19,7 @@ Param( [switch] $pack, [switch] $publish, [switch] $clean, + [switch][Alias('pb')]$productBuild, [switch][Alias('bl')]$binaryLog, [switch][Alias('nobl')]$excludeCIBinarylog, [switch] $ci, @@ -58,6 +59,7 @@ function Print-Usage() { Write-Host " -sign Sign build outputs" Write-Host " -publish Publish artifacts (e.g. symbols)" Write-Host " -clean Clean the solution" + Write-Host " -productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)" Write-Host "" Write-Host "Advanced settings:" @@ -120,6 +122,7 @@ function Build { /p:Deploy=$deploy ` /p:Test=$test ` /p:Pack=$pack ` + /p:DotNetBuildRepo=$productBuild ` /p:IntegrationTest=$integrationTest ` /p:PerformanceTest=$performanceTest ` /p:Sign=$sign ` diff --git a/eng/common/build.sh b/eng/common/build.sh index 50af40cdd2ce..ac1ee8620cd2 100755 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -22,6 +22,9 @@ usage() echo " --sourceBuild Source-build the solution (short: -sb)" echo " Will additionally trigger the following actions: --restore, --build, --pack" echo " If --configuration is not set explicitly, will also set it to 'Release'" + echo " --productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)" + echo " Will additionally trigger the following actions: --restore, --build, --pack" + echo " If --configuration is not set explicitly, will also set it to 'Release'" echo " --rebuild Rebuild solution" echo " --test Run all unit tests in the solution (short: -t)" echo " --integrationTest Run all integration tests in the solution" @@ -59,6 +62,7 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" restore=false build=false source_build=false +product_build=false rebuild=false test=false integration_test=false @@ -105,7 +109,7 @@ while [[ $# > 0 ]]; do -binarylog|-bl) binary_log=true ;; - -excludeCIBinarylog|-nobl) + -excludecibinarylog|-nobl) exclude_ci_binary_log=true ;; -pipelineslog|-pl) @@ -126,6 +130,13 @@ while [[ $# > 0 ]]; do -sourcebuild|-sb) build=true source_build=true + product_build=true + restore=true + pack=true + ;; + -productBuild|-pb) + build=true + product_build=true restore=true pack=true ;; @@ -219,7 +230,9 @@ function Build { /p:RepoRoot="$repo_root" \ /p:Restore=$restore \ /p:Build=$build \ + /p:DotNetBuildRepo=$product_build \ /p:ArcadeBuildFromSource=$source_build \ + /p:DotNetBuildSourceOnly=$source_build \ /p:Rebuild=$rebuild \ /p:Test=$test \ /p:Pack=$pack \ diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml new file mode 100644 index 000000000000..8da43d3b5837 --- /dev/null +++ b/eng/common/core-templates/job/job.yml @@ -0,0 +1,253 @@ +parameters: +# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + cancelTimeoutInMinutes: '' + condition: '' + container: '' + continueOnError: false + dependsOn: '' + displayName: '' + pool: '' + steps: [] + strategy: '' + timeoutInMinutes: '' + variables: [] + workspace: '' + templateContext: {} + +# Job base template specific parameters + # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md + # publishing defaults + artifacts: '' + enableMicrobuild: false + microbuildUseESRP: true + enablePublishBuildArtifacts: false + enablePublishBuildAssets: false + enablePublishTestResults: false + enablePublishUsingPipelines: false + enableBuildRetry: false + mergeTestResults: false + testRunTitle: '' + testResultsFormat: '' + name: '' + componentGovernanceSteps: [] + preSteps: [] + artifactPublishSteps: [] + runAsPublic: false + +# 1es specific parameters + is1ESPipeline: '' + +jobs: +- job: ${{ parameters.name }} + + ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: + cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} + + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + + ${{ if ne(parameters.container, '') }}: + container: ${{ parameters.container }} + + ${{ if ne(parameters.continueOnError, '') }}: + continueOnError: ${{ parameters.continueOnError }} + + ${{ if ne(parameters.dependsOn, '') }}: + dependsOn: ${{ parameters.dependsOn }} + + ${{ if ne(parameters.displayName, '') }}: + displayName: ${{ parameters.displayName }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + + ${{ if ne(parameters.strategy, '') }}: + strategy: ${{ parameters.strategy }} + + ${{ if ne(parameters.timeoutInMinutes, '') }}: + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + + ${{ if ne(parameters.templateContext, '') }}: + templateContext: ${{ parameters.templateContext }} + + variables: + - ${{ if ne(parameters.enableTelemetry, 'false') }}: + - name: DOTNET_CLI_TELEMETRY_PROFILE + value: '$(Build.Repository.Uri)' + - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: + - name: EnableRichCodeNavigation + value: 'true' + # Retry signature validation up to three times, waiting 2 seconds between attempts. + # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures + - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY + value: 3,2000 + - ${{ each variable in parameters.variables }}: + # handle name-value variable syntax + # example: + # - name: [key] + # value: [value] + - ${{ if ne(variable.name, '') }}: + - name: ${{ variable.name }} + value: ${{ variable.value }} + + # handle variable groups + - ${{ if ne(variable.group, '') }}: + - group: ${{ variable.group }} + + # handle template variable syntax + # example: + # - template: path/to/template.yml + # parameters: + # [key]: [value] + - ${{ if ne(variable.template, '') }}: + - template: ${{ variable.template }} + ${{ if ne(variable.parameters, '') }}: + parameters: ${{ variable.parameters }} + + # handle key-value variable syntax. + # example: + # - [key]: [value] + - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: + - ${{ each pair in variable }}: + - name: ${{ pair.key }} + value: ${{ pair.value }} + + # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds + - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: DotNet-HelixApi-Access + + ${{ if ne(parameters.workspace, '') }}: + workspace: ${{ parameters.workspace }} + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if ne(parameters.preSteps, '') }}: + - ${{ each preStep in parameters.preSteps }}: + - ${{ preStep }} + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - task: MicroBuildSigningPlugin@4 + displayName: Install MicroBuild plugin + inputs: + signType: $(_SignType) + zipSources: false + feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + ${{ if eq(parameters.microbuildUseESRP, true) }}: + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea + ${{ else }}: + ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca + env: + TeamName: $(_TeamName) + MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)' + continueOnError: ${{ parameters.continueOnError }} + condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + + - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: + - task: NuGetAuthenticate@1 + + - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: + - task: DownloadPipelineArtifact@2 + inputs: + buildType: current + artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} + targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} + itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} + + - ${{ each step in parameters.steps }}: + - ${{ step }} + + - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: + - task: RichCodeNavIndexer@0 + displayName: RichCodeNav Upload + inputs: + languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} + environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'internal') }} + richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin + uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} + continueOnError: true + + - ${{ each step in parameters.componentGovernanceSteps }}: + - ${{ step }} + + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: MicroBuildCleanup@1 + displayName: Execute Microbuild cleanup tasks + condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + env: + TeamName: $(_TeamName) + + # Publish test results + - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: + - task: PublishTestResults@2 + displayName: Publish XUnit Test Results + inputs: + testResultsFormat: 'xUnit' + testResultsFiles: '*.xml' + searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' + testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit + mergeTestResults: ${{ parameters.mergeTestResults }} + continueOnError: true + condition: always() + - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: + - task: PublishTestResults@2 + displayName: Publish TRX Test Results + inputs: + testResultsFormat: 'VSTest' + testResultsFiles: '*.trx' + searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' + testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx + mergeTestResults: ${{ parameters.mergeTestResults }} + continueOnError: true + condition: always() + + # gather artifacts + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - task: CopyFiles@2 + displayName: Gather binaries for publish to artifacts + inputs: + SourceFolder: 'artifacts/bin' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' + - task: CopyFiles@2 + displayName: Gather packages for publish to artifacts + inputs: + SourceFolder: 'artifacts/packages' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - task: CopyFiles@2 + displayName: Gather logs for publish to artifacts + inputs: + SourceFolder: 'artifacts/log' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log' + continueOnError: true + condition: always() + + - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: + - task: CopyFiles@2 + displayName: Gather logs for publish to artifacts + inputs: + SourceFolder: 'artifacts/log/$(_BuildConfig)' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + continueOnError: true + condition: always() + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - task: CopyFiles@2 + displayName: Gather buildconfiguration for build retry + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/eng/common/BuildConfiguration' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration' + continueOnError: true + condition: always() + - ${{ each step in parameters.artifactPublishSteps }}: + - ${{ step }} diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml new file mode 100644 index 000000000000..edefa789d360 --- /dev/null +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -0,0 +1,121 @@ +parameters: + # Optional: dependencies of the job + dependsOn: '' + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: '' + + CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex + GithubPat: $(BotAccount-dotnet-bot-repo-PAT) + + SourcesDirectory: $(System.DefaultWorkingDirectory) + CreatePr: true + AutoCompletePr: false + ReusePr: true + UseLfLineEndings: true + UseCheckedInLocProjectJson: false + SkipLocProjectJsonGeneration: false + LanguageSet: VS_Main_Languages + LclSource: lclFilesInRepo + LclPackageId: '' + RepoType: gitHub + GitHubOrg: dotnet + MirrorRepo: '' + MirrorBranch: main + condition: '' + JobNameSuffix: '' + is1ESPipeline: '' +jobs: +- job: OneLocBuild${{ parameters.JobNameSuffix }} + + dependsOn: ${{ parameters.dependsOn }} + + displayName: OneLocBuild${{ parameters.JobNameSuffix }} + + variables: + - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat + - name: _GenerateLocProjectArguments + value: -SourcesDirectory ${{ parameters.SourcesDirectory }} + -LanguageSet "${{ parameters.LanguageSet }}" + -CreateNeutralXlfs + - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: + - name: _GenerateLocProjectArguments + value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: + - task: Powershell@2 + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1 + arguments: $(_GenerateLocProjectArguments) + displayName: Generate LocProject.json + condition: ${{ parameters.condition }} + + - task: OneLocBuild@2 + displayName: OneLocBuild + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + locProj: eng/Localize/LocProject.json + outDir: $(Build.ArtifactStagingDirectory) + lclSource: ${{ parameters.LclSource }} + lclPackageId: ${{ parameters.LclPackageId }} + isCreatePrSelected: ${{ parameters.CreatePr }} + isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} + ${{ if eq(parameters.CreatePr, true) }}: + isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + isShouldReusePrSelected: ${{ parameters.ReusePr }} + packageSourceAuth: patAuth + patVariable: ${{ parameters.CeapexPat }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + repoType: ${{ parameters.RepoType }} + gitHubPatVariable: "${{ parameters.GithubPat }}" + ${{ if ne(parameters.MirrorRepo, '') }}: + isMirrorRepoSelected: true + gitHubOrganization: ${{ parameters.GitHubOrg }} + mirrorRepo: ${{ parameters.MirrorRepo }} + mirrorBranch: ${{ parameters.MirrorBranch }} + condition: ${{ parameters.condition }} + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish Localization Files + pathToPublish: '$(Build.ArtifactStagingDirectory)/loc' + publishLocation: Container + artifactName: Loc + condition: ${{ parameters.condition }} + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish LocProject.json + pathToPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' + publishLocation: Container + artifactName: Loc + condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml new file mode 100644 index 000000000000..3cb20fb5041f --- /dev/null +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -0,0 +1,172 @@ +parameters: + configuration: 'Debug' + + # Optional: condition for the job to run + condition: '' + + # Optional: 'true' if future jobs should run even if this job fails + continueOnError: false + + # Optional: dependencies of the job + dependsOn: '' + + # Optional: Include PublishBuildArtifacts task + enablePublishBuildArtifacts: false + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: {} + + # Optional: should run as a public build even in the internal project + # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. + runAsPublic: false + + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishUsingPipelines: false + + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishAssetsImmediately: false + + artifactsPublishingAdditionalParameters: '' + + signingValidationAdditionalParameters: '' + + is1ESPipeline: '' + + repositoryAlias: self + + officialBuildId: '' + +jobs: +- job: Asset_Registry_Publish + + dependsOn: ${{ parameters.dependsOn }} + timeoutInMinutes: 150 + + ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + displayName: Publish Assets + ${{ else }}: + displayName: Publish to Build Asset Registry + + variables: + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: Publish-Build-Assets + - group: AzureDevOps-Artifact-Feeds-Pats + - name: runCodesignValidationInjection + value: false + # unconditional - needed for logs publishing (redactor tool version) + - template: /eng/common/core-templates/post-build/common-variables.yml + - name: OfficialBuildId + ${{ if ne(parameters.officialBuildId, '') }}: + value: ${{ parameters.officialBuildId }} + ${{ else }}: + value: $(Build.BuildNumber) + + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: NetCore1ESPool-Publishing-Internal + image: windows.vs2022.amd64 + os: windows + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - checkout: ${{ parameters.repositoryAlias }} + fetchDepth: 3 + clean: true + + - task: DownloadBuildArtifacts@0 + displayName: Download artifact + inputs: + artifactName: AssetManifests + downloadPath: '$(Build.StagingDirectory)/Download' + checkDownloadedFiles: true + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + + - task: NuGetAuthenticate@1 + + - task: AzureCLI@2 + displayName: Publish Build Assets + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 + arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' + /p:MaestroApiEndpoint=https://maestro.dot.net + /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} + /p:OfficialBuildId=$(OfficialBuildId) + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + + - task: powershell@2 + displayName: Create ReleaseConfigs Artifact + inputs: + targetType: inline + script: | + New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force + $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt" + Add-Content -Path $filePath -Value $(BARBuildId) + Add-Content -Path $filePath -Value "$(DefaultChannels)" + Add-Content -Path $filePath -Value $(IsStableBuild) + + $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt" + if (Test-Path -Path $symbolExclusionfile) + { + Write-Host "SymbolExclusionFile exists" + Copy-Item -Path $symbolExclusionfile -Destination "$(Build.StagingDirectory)/ReleaseConfigs" + } + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish ReleaseConfigs Artifact + pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs' + publishLocation: Container + artifactName: ReleaseConfigs + + - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + # Darc is targeting 8.0, so make sure it's installed + - task: UseDotNet@2 + inputs: + version: 8.0.x + + - task: AzureCLI@2 + displayName: Publish Using Darc + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: > + -BuildId $(BARBuildId) + -PublishingInfraVersion 3 + -AzdoToken '$(System.AccessToken)' + -WaitPublishingFinish true + -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + + - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: + - template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml new file mode 100644 index 000000000000..1037ccedcb55 --- /dev/null +++ b/eng/common/core-templates/job/source-build.yml @@ -0,0 +1,99 @@ +parameters: + # This template adds arcade-powered source-build to CI. The template produces a server job with a + # default ID 'Source_Build_Complete' to put in a dependency list if necessary. + + # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. + jobNamePrefix: 'Source_Build' + + # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for + # managed-only repositories. This is an object with these properties: + # + # name: '' + # The name of the job. This is included in the job ID. + # targetRID: '' + # The name of the target RID to use, instead of the one auto-detected by Arcade. + # nonPortable: false + # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than + # linux-x64), and compiling against distro-provided packages rather than portable ones. + # skipPublishValidation: false + # Disables publishing validation. By default, a check is performed to ensure no packages are + # published by source-build. + # container: '' + # A container to use. Runs in docker. + # pool: {} + # A pool to use. Runs directly on an agent. + # buildScript: '' + # Specifies the build script to invoke to perform the build in the repo. The default + # './build.sh' should work for typical Arcade repositories, but this is customizable for + # difficult situations. + # buildArguments: '' + # Specifies additional build arguments to pass to the build script. + # jobProperties: {} + # A list of job properties to inject at the top level, for potential extensibility beyond + # container and pool. + platform: {} + + # Optional list of directories to ignore for component governance scans. + componentGovernanceIgnoreDirectories: [] + + is1ESPipeline: '' + + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + +jobs: +- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} + displayName: Source-Build (${{ parameters.platform.name }}) + + ${{ each property in parameters.platform.jobProperties }}: + ${{ property.key }}: ${{ property.value }} + + ${{ if ne(parameters.platform.container, '') }}: + container: ${{ parameters.platform.container }} + + ${{ if eq(parameters.platform.pool, '') }}: + # The default VM host AzDO pool. This should be capable of running Docker containers: almost all + # source-build builds run in Docker, including the default managed platform. + # /eng/common/core-templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic + ${{ if eq(parameters.is1ESPipeline, 'true') }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] + demands: ImageOverride -equals build.ubuntu.2004.amd64 + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] + image: 1es-azurelinux-3 + os: linux + ${{ else }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64 + ${{ if ne(parameters.platform.pool, '') }}: + pool: ${{ parameters.platform.pool }} + + workspace: + clean: all + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if eq(parameters.enableInternalSources, true) }}: + - template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + - template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + - template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + platform: ${{ parameters.platform }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml new file mode 100644 index 000000000000..ddf8c2e00d80 --- /dev/null +++ b/eng/common/core-templates/job/source-index-stage1.yml @@ -0,0 +1,81 @@ +parameters: + runAsPublic: false + sourceIndexUploadPackageVersion: 2.0.0-20250425.2 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 + sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json + sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" + preSteps: [] + binlogPath: artifacts/log/Debug/Build.binlog + condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') + dependsOn: '' + pool: '' + is1ESPipeline: '' + +jobs: +- job: SourceIndexStage1 + dependsOn: ${{ parameters.dependsOn }} + condition: ${{ parameters.condition }} + variables: + - name: SourceIndexUploadPackageVersion + value: ${{ parameters.sourceIndexUploadPackageVersion }} + - name: SourceIndexProcessBinlogPackageVersion + value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} + - name: SourceIndexPackageSource + value: ${{ parameters.sourceIndexPackageSource }} + - name: BinlogPath + value: ${{ parameters.binlogPath }} + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $(DncEngPublicBuildPool) + image: 1es-windows-2022-open + os: windows + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ each preStep in parameters.preSteps }}: + - ${{ preStep }} + + - task: UseDotNet@2 + displayName: Use .NET 8 SDK + inputs: + packageType: sdk + version: 8.0.x + installationPath: $(Agent.TempDirectory)/dotnet + workingDirectory: $(Agent.TempDirectory) + + - script: | + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + displayName: Download Tools + # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. + workingDirectory: $(Agent.TempDirectory) + + - script: ${{ parameters.sourceIndexBuildCommand }} + displayName: Build Repository + + - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output + displayName: Process Binlog into indexable sln + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: AzureCLI@2 + displayName: Log in to Azure and upload stage1 artifacts to source index + inputs: + azureSubscription: 'SourceDotNet Stage1 Publish' + addSpnToEnvironment: true + scriptType: 'ps' + scriptLocation: 'inlineScript' + inlineScript: | + $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 diff --git a/eng/common/core-templates/jobs/codeql-build.yml b/eng/common/core-templates/jobs/codeql-build.yml new file mode 100644 index 000000000000..4571a7864df6 --- /dev/null +++ b/eng/common/core-templates/jobs/codeql-build.yml @@ -0,0 +1,33 @@ +parameters: + # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md + continueOnError: false + # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + jobs: [] + # Optional: if specified, restore and use this version of Guardian instead of the default. + overrideGuardianVersion: '' + is1ESPipeline: '' + +jobs: +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + enableMicrobuild: false + enablePublishBuildArtifacts: false + enablePublishTestResults: false + enablePublishBuildAssets: false + enablePublishUsingPipelines: false + enableTelemetry: true + + variables: + - group: Publish-Build-Assets + # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in + # sync with the packages.config file. + - name: DefaultGuardianVersion + value: 0.109.0 + - name: GuardianPackagesConfigFile + value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config + - name: GuardianVersion + value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} + + jobs: ${{ parameters.jobs }} + diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml new file mode 100644 index 000000000000..bf33cdc2cc77 --- /dev/null +++ b/eng/common/core-templates/jobs/jobs.yml @@ -0,0 +1,123 @@ +parameters: + # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md + continueOnError: false + + # Optional: Include PublishBuildArtifacts task + enablePublishBuildArtifacts: false + + # Optional: Enable publishing using release pipelines + enablePublishUsingPipelines: false + + # Optional: Enable running the source-build jobs to build repo from source + enableSourceBuild: false + + # Optional: Parameters for source-build template. + # See /eng/common/core-templates/jobs/source-build.yml for options + sourceBuildParameters: [] + + graphFileGeneration: + # Optional: Enable generating the graph files at the end of the build + enabled: false + # Optional: Include toolset dependencies in the generated graph files + includeToolset: false + + # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + jobs: [] + + # Optional: Override automatically derived dependsOn value for "publish build assets" job + publishBuildAssetsDependsOn: '' + + # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. + publishAssetsImmediately: false + + # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) + artifactsPublishingAdditionalParameters: '' + signingValidationAdditionalParameters: '' + + # Optional: should run as a public build even in the internal project + # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. + runAsPublic: false + + enableSourceIndex: false + sourceIndexParams: {} + + artifacts: {} + is1ESPipeline: '' + repositoryAlias: self + officialBuildId: '' + +# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, +# and some (Microbuild) should only be applied to non-PR cases for internal builds. + +jobs: +- ${{ each job in parameters.jobs }}: + - ${{ if eq(parameters.is1ESPipeline, 'true') }}: + - template: /eng/common/templates-official/job/job.yml + parameters: + # pass along parameters + ${{ each parameter in parameters }}: + ${{ if ne(parameter.key, 'jobs') }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # pass along job properties + ${{ each property in job }}: + ${{ if ne(property.key, 'job') }}: + ${{ property.key }}: ${{ property.value }} + + name: ${{ job.job }} + + - ${{ else }}: + - template: /eng/common/templates/job/job.yml + parameters: + # pass along parameters + ${{ each parameter in parameters }}: + ${{ if ne(parameter.key, 'jobs') }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # pass along job properties + ${{ each property in job }}: + ${{ if ne(property.key, 'job') }}: + ${{ property.key }}: ${{ property.value }} + + name: ${{ job.job }} + +- ${{ if eq(parameters.enableSourceBuild, true) }}: + - template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + allCompletedJobId: Source_Build_Complete + ${{ each parameter in parameters.sourceBuildParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + +- ${{ if eq(parameters.enableSourceIndex, 'true') }}: + - template: ../job/source-index-stage1.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + runAsPublic: ${{ parameters.runAsPublic }} + ${{ each parameter in parameters.sourceIndexParams }}: + ${{ parameter.key }}: ${{ parameter.value }} + +- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: + - template: ../job/publish-build-assets.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + continueOnError: ${{ parameters.continueOnError }} + dependsOn: + - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: + - ${{ each job in parameters.publishBuildAssetsDependsOn }}: + - ${{ job.job }} + - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: + - ${{ each job in parameters.jobs }}: + - ${{ job.job }} + - ${{ if eq(parameters.enableSourceBuild, true) }}: + - Source_Build_Complete + + runAsPublic: ${{ parameters.runAsPublic }} + publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} + publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} + enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} + artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} + signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} + repositoryAlias: ${{ parameters.repositoryAlias }} + officialBuildId: ${{ parameters.officialBuildId }} diff --git a/eng/common/core-templates/jobs/source-build.yml b/eng/common/core-templates/jobs/source-build.yml new file mode 100644 index 000000000000..0b408a67bd51 --- /dev/null +++ b/eng/common/core-templates/jobs/source-build.yml @@ -0,0 +1,63 @@ +parameters: + # This template adds arcade-powered source-build to CI. A job is created for each platform, as + # well as an optional server job that completes when all platform jobs complete. + + # The name of the "join" job for all source-build platforms. If set to empty string, the job is + # not included. Existing repo pipelines can use this job depend on all source-build jobs + # completing without maintaining a separate list of every single job ID: just depend on this one + # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. + allCompletedJobId: '' + + # See /eng/common/core-templates/job/source-build.yml + jobNamePrefix: 'Source_Build' + + # This is the default platform provided by Arcade, intended for use by a managed-only repo. + defaultManagedPlatform: + name: 'Managed' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' + + # Defines the platforms on which to run build jobs. One job is created for each platform, and the + # object in this array is sent to the job template as 'platform'. If no platforms are specified, + # one job runs on 'defaultManagedPlatform'. + platforms: [] + + # Optional list of directories to ignore for component governance scans. + componentGovernanceIgnoreDirectories: [] + + is1ESPipeline: '' + + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + +jobs: + +- ${{ if ne(parameters.allCompletedJobId, '') }}: + - job: ${{ parameters.allCompletedJobId }} + displayName: Source-Build Complete + pool: server + dependsOn: + - ${{ each platform in parameters.platforms }}: + - ${{ parameters.jobNamePrefix }}_${{ platform.name }} + - ${{ if eq(length(parameters.platforms), 0) }}: + - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} + +- ${{ each platform in parameters.platforms }}: + - template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ platform }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + enableInternalSources: ${{ parameters.enableInternalSources }} + +- ${{ if eq(length(parameters.platforms), 0) }}: + - template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ parameters.defaultManagedPlatform }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml new file mode 100644 index 000000000000..d5627a994ae5 --- /dev/null +++ b/eng/common/core-templates/post-build/common-variables.yml @@ -0,0 +1,22 @@ +variables: + - group: Publish-Build-Assets + + # Whether the build is internal or not + - name: IsInternalBuild + value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} + + # Default Maestro++ API Endpoint and API Version + - name: MaestroApiEndPoint + value: "https://maestro.dot.net" + - name: MaestroApiVersion + value: "2020-02-20" + + - name: SourceLinkCLIVersion + value: 3.0.0 + - name: SymbolToolVersion + value: 1.0.1 + - name: BinlogToolVersion + value: 1.0.11 + + - name: runCodesignValidationInjection + value: false diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml new file mode 100644 index 000000000000..864427d9694a --- /dev/null +++ b/eng/common/core-templates/post-build/post-build.yml @@ -0,0 +1,327 @@ +parameters: + # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. + # Publishing V1 is no longer supported + # Publishing V2 is no longer supported + # Publishing V3 is the default + - name: publishingInfraVersion + displayName: Which version of publishing should be used to promote the build definition? + type: number + default: 3 + values: + - 3 + + - name: BARBuildId + displayName: BAR Build Id + type: number + default: 0 + + - name: PromoteToChannelIds + displayName: Channel to promote BARBuildId to + type: string + default: '' + + - name: enableSourceLinkValidation + displayName: Enable SourceLink validation + type: boolean + default: false + + - name: enableSigningValidation + displayName: Enable signing validation + type: boolean + default: true + + - name: enableSymbolValidation + displayName: Enable symbol validation + type: boolean + default: false + + - name: enableNugetValidation + displayName: Enable NuGet validation + type: boolean + default: true + + - name: publishInstallersAndChecksums + displayName: Publish installers and checksums + type: boolean + default: true + + - name: requireDefaultChannels + displayName: Fail the build if there are no default channel(s) registrations for the current build + type: boolean + default: false + + - name: SDLValidationParameters + type: object + default: + enable: false + publishGdn: false + continueOnError: false + params: '' + artifactNames: '' + downloadArtifacts: true + + # These parameters let the user customize the call to sdk-task.ps1 for publishing + # symbols & general artifacts as well as for signing validation + - name: symbolPublishingAdditionalParameters + displayName: Symbol publishing additional parameters + type: string + default: '' + + - name: artifactsPublishingAdditionalParameters + displayName: Artifact publishing additional parameters + type: string + default: '' + + - name: signingValidationAdditionalParameters + displayName: Signing validation additional parameters + type: string + default: '' + + # Which stages should finish execution before post-build stages start + - name: validateDependsOn + type: object + default: + - build + + - name: publishDependsOn + type: object + default: + - Validate + + # Optional: Call asset publishing rather than running in a separate stage + - name: publishAssetsImmediately + type: boolean + default: false + + - name: is1ESPipeline + type: boolean + default: false + +stages: +- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + - stage: Validate + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Validate Build Assets + variables: + - template: /eng/common/core-templates/post-build/common-variables.yml + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobs: + - job: + displayName: NuGet Validation + condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: windows.vs2022.amd64 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2022.amd64 + + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 + arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ + + - job: + displayName: Signing Validation + condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2022.amd64 + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + itemPattern: | + ** + !**/Microsoft.SourceBuild.Intermediate.*.nupkg + + # This is necessary whenever we want to publish/restore to an AzDO private feed + # Since sdk-task.ps1 tries to restore packages we need to do this authentication here + # otherwise it'll complain about accessing a private feed. + - task: NuGetAuthenticate@1 + displayName: 'Authenticate to AzDO Feeds' + + # Signing validation will optionally work with the buildmanifest file which is downloaded from + # Azure DevOps above. + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task SigningValidation -restore -msbuildEngine vs + /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' + /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' + ${{ parameters.signingValidationAdditionalParameters }} + + - template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + StageLabel: 'Validation' + JobLabel: 'Signing' + BinlogToolVersion: $(BinlogToolVersion) + + - job: + displayName: SourceLink Validation + condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2022.amd64 + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Blob Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BlobArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 + arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ + -ExtractPath $(Agent.BuildDirectory)/Extract/ + -GHRepoName $(Build.Repository.Name) + -GHCommit $(Build.SourceVersion) + -SourcelinkCliVersion $(SourceLinkCLIVersion) + continueOnError: true + +- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: + - stage: publish_using_darc + ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + dependsOn: ${{ parameters.publishDependsOn }} + ${{ else }}: + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Publish using Darc + variables: + - template: /eng/common/core-templates/post-build/common-variables.yml + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobs: + - job: + displayName: Publish Using Darc + timeoutInMinutes: 120 + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: NetCore1ESPool-Publishing-Internal + image: windows.vs2022.amd64 + os: windows + ${{ else }}: + name: NetCore1ESPool-Publishing-Internal + demands: ImageOverride -equals windows.vs2022.amd64 + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: NuGetAuthenticate@1 + + # Darc is targeting 8.0, so make sure it's installed + - task: UseDotNet@2 + inputs: + version: 8.0.x + + - task: AzureCLI@2 + displayName: Publish Using Darc + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: > + -BuildId $(BARBuildId) + -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} + -AzdoToken '$(System.AccessToken)' + -WaitPublishingFinish true + -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} + -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml new file mode 100644 index 000000000000..a7abd58c4bb6 --- /dev/null +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -0,0 +1,74 @@ +parameters: + BARBuildId: '' + PromoteToChannelIds: '' + is1ESPipeline: '' + +steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Release Configs + inputs: + buildType: current + artifactName: ReleaseConfigs + checkDownloadedFiles: true + + - task: AzureCLI@2 + name: setReleaseVars + displayName: Set Release Configs Vars + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + try { + if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { + $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt + + $BarId = $Content | Select -Index 0 + $Channels = $Content | Select -Index 1 + $IsStableBuild = $Content | Select -Index 2 + + $AzureDevOpsProject = $Env:System_TeamProject + $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId + $AzureDevOpsBuildId = $Env:Build_BuildId + } + else { + . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1 + $darc = Get-Darc + $buildInfo = & $darc get-build ` + --id ${{ parameters.BARBuildId }} ` + --extended ` + --output-format json ` + --ci ` + | convertFrom-Json + + $BarId = ${{ parameters.BARBuildId }} + $Channels = $Env:PromoteToMaestroChannels -split "," + $Channels = $Channels -join "][" + $Channels = "[$Channels]" + + $IsStableBuild = $buildInfo.stable + $AzureDevOpsProject = $buildInfo.azureDevOpsProject + $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId + $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId + } + + Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" + Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" + Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" + + Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" + Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" + Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" + } + catch { + Write-Host $_ + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + exit 1 + } + env: + PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml new file mode 100644 index 000000000000..cf0649aa9565 --- /dev/null +++ b/eng/common/core-templates/steps/component-governance.yml @@ -0,0 +1,16 @@ +parameters: + disableComponentGovernance: false + componentGovernanceIgnoreDirectories: '' + is1ESPipeline: false + displayName: 'Component Detection' + +steps: +- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable +- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: + - task: ComponentGovernanceComponentDetection@0 + continueOnError: true + displayName: ${{ parameters.displayName }} + inputs: + ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/eng/common/core-templates/steps/enable-internal-runtimes.yml b/eng/common/core-templates/steps/enable-internal-runtimes.yml new file mode 100644 index 000000000000..6bdbf62ac500 --- /dev/null +++ b/eng/common/core-templates/steps/enable-internal-runtimes.yml @@ -0,0 +1,32 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default + +parameters: +- name: federatedServiceConnection + type: string + default: 'dotnetbuilds-internal-read' +- name: outputVariableName + type: string + default: 'dotnetbuilds-internal-container-read-token-base64' +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: true +- name: is1ESPipeline + type: boolean + default: false + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + federatedServiceConnection: ${{ parameters.federatedServiceConnection }} + outputVariableName: ${{ parameters.outputVariableName }} + expiryInHours: ${{ parameters.expiryInHours }} + base64Encode: ${{ parameters.base64Encode }} + storageAccount: dotnetbuilds + container: internal + permissions: rl + is1ESPipeline: ${{ parameters.is1ESPipeline }} \ No newline at end of file diff --git a/eng/common/core-templates/steps/enable-internal-sources.yml b/eng/common/core-templates/steps/enable-internal-sources.yml new file mode 100644 index 000000000000..4085512b6909 --- /dev/null +++ b/eng/common/core-templates/steps/enable-internal-sources.yml @@ -0,0 +1,47 @@ +parameters: +# This is the Azure federated service connection that we log into to get an access token. +- name: nugetFederatedServiceConnection + type: string + default: 'dnceng-artifacts-feeds-read' +- name: is1ESPipeline + type: boolean + default: false +# Legacy parameters to allow for PAT usage +- name: legacyCredential + type: string + default: '' + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - ${{ if ne(parameters.legacyCredential, '') }}: + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token + env: + Token: ${{ parameters.legacyCredential }} + # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate. + # If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that + # may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token. + - ${{ else }}: + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config + - ${{ else }}: + - template: /eng/common/templates/steps/get-federated-access-token.yml + parameters: + federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }} + outputVariableName: 'dnceng-artifacts-feeds-read-access-token' + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token) + # This is required in certain scenarios to install the ADO credential provider. + # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others + # (e.g. dotnet msbuild). + - task: NuGetAuthenticate@1 diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml new file mode 100644 index 000000000000..7f5b84c4cb82 --- /dev/null +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -0,0 +1,54 @@ +# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. +# PackageName - The name of the package this SBOM represents. +# PackageVersion - The version of the package this SBOM represents. +# ManifestDirPath - The path of the directory where the generated manifest files will be placed +# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. + +parameters: + PackageVersion: 9.0.0 + BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' + PackageName: '.NET' + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom + IgnoreDirectories: '' + sbomContinueOnError: true + is1ESPipeline: false + # disable publishArtifacts if some other step is publishing the artifacts (like job.yml). + publishArtifacts: true + +steps: +- task: PowerShell@2 + displayName: Prep for SBOM generation in (Non-linux) + condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) + inputs: + filePath: ./eng/common/generate-sbom-prep.ps1 + arguments: ${{parameters.manifestDirPath}} + +# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 +- script: | + chmod +x ./eng/common/generate-sbom-prep.sh + ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} + displayName: Prep for SBOM generation in (Linux) + condition: eq(variables['Agent.Os'], 'Linux') + continueOnError: ${{ parameters.sbomContinueOnError }} + +- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 + displayName: 'Generate SBOM manifest' + continueOnError: ${{ parameters.sbomContinueOnError }} + inputs: + PackageName: ${{ parameters.packageName }} + BuildDropPath: ${{ parameters.buildDropPath }} + PackageVersion: ${{ parameters.packageVersion }} + ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) + ${{ if ne(parameters.IgnoreDirectories, '') }}: + AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' + +- ${{ if eq(parameters.publishArtifacts, 'true')}}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish SBOM manifest + continueOnError: ${{parameters.sbomContinueOnError}} + targetPath: '${{ parameters.manifestDirPath }}' + artifactName: $(ARTIFACT_NAME) + diff --git a/eng/common/core-templates/steps/get-delegation-sas.yml b/eng/common/core-templates/steps/get-delegation-sas.yml new file mode 100644 index 000000000000..9db5617ea7de --- /dev/null +++ b/eng/common/core-templates/steps/get-delegation-sas.yml @@ -0,0 +1,55 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: false +- name: storageAccount + type: string +- name: container + type: string +- name: permissions + type: string + default: 'rl' +- name: is1ESPipeline + type: boolean + default: false + +steps: +- task: AzureCLI@2 + displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + # Calculate the expiration of the SAS token and convert to UTC + $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") + + # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads + # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 + $sas = "" + do { + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + } while($sas.IndexOf('/') -ne -1) + + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + + if ('${{ parameters.base64Encode }}' -eq 'true') { + $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) + } + + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" diff --git a/eng/common/core-templates/steps/get-federated-access-token.yml b/eng/common/core-templates/steps/get-federated-access-token.yml new file mode 100644 index 000000000000..3a4d4410c482 --- /dev/null +++ b/eng/common/core-templates/steps/get-federated-access-token.yml @@ -0,0 +1,42 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: is1ESPipeline + type: boolean +- name: stepName + type: string + default: 'getFederatedAccessToken' +- name: condition + type: string + default: '' +# Resource to get a token for. Common values include: +# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps +# - 'https://storage.azure.com/' for storage +# Defaults to Azure DevOps +- name: resource + type: string + default: '499b84ac-1321-427f-aa17-267ca6975798' +- name: isStepOutputVariable + type: boolean + default: false + +steps: +- task: AzureCLI@2 + displayName: 'Getting federated access token for feeds' + name: ${{ parameters.stepName }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" + exit 1 + } + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file diff --git a/eng/common/core-templates/steps/publish-build-artifacts.yml b/eng/common/core-templates/steps/publish-build-artifacts.yml new file mode 100644 index 000000000000..f24ce346684e --- /dev/null +++ b/eng/common/core-templates/steps/publish-build-artifacts.yml @@ -0,0 +1,20 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false +- name: args + type: object + default: {} +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - template: /eng/common/templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ each parameter in parameters.args }}: + ${{ parameter.key }}: ${{ parameter.value }} +- ${{ else }}: + - template: /eng/common/templates-official/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ each parameter in parameters.args }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml new file mode 100644 index 000000000000..0623ac6e1123 --- /dev/null +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -0,0 +1,58 @@ +parameters: + StageLabel: '' + JobLabel: '' + CustomSensitiveDataList: '' + # A default - in case value from eng/common/core-templates/post-build/common-variables.yml is not passed + BinlogToolVersion: '1.0.11' + is1ESPipeline: false + +steps: +- task: Powershell@2 + displayName: Prepare Binlogs to Upload + inputs: + targetType: inline + script: | + New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ + Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ + continueOnError: true + condition: always() + +- task: PowerShell@2 + displayName: Redact Logs + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/redact-logs.ps1 + # For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml + # Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + # If the file exists - sensitive data for redaction will be sourced from it + # (single entry per line, lines starting with '# ' are considered comments and skipped) + arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' + -BinlogToolVersion ${{parameters.BinlogToolVersion}} + -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + '$(publishing-dnceng-devdiv-code-r-build-re)' + '$(MaestroAccessToken)' + '$(dn-bot-all-orgs-artifact-feeds-rw)' + '$(akams-client-id)' + '$(microsoft-symbol-server-pat)' + '$(symweb-symbol-server-pat)' + '$(dn-bot-all-orgs-build-rw-code-rw)' + ${{parameters.CustomSensitiveDataList}} + continueOnError: true + condition: always() + +- task: CopyFiles@2 + displayName: Gather post build logs + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + +- template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish Logs + pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + publishLocation: Container + artifactName: PostBuildLogs + continueOnError: true + condition: always() diff --git a/eng/common/core-templates/steps/publish-pipeline-artifacts.yml b/eng/common/core-templates/steps/publish-pipeline-artifacts.yml new file mode 100644 index 000000000000..2efec04dc2c1 --- /dev/null +++ b/eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,20 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: args + type: object + default: {} + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - template: /eng/common/templates/steps/publish-pipeline-artifacts.yml + parameters: + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} +- ${{ else }}: + - template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml + parameters: + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/core-templates/steps/retain-build.yml b/eng/common/core-templates/steps/retain-build.yml new file mode 100644 index 000000000000..83d97a26a01f --- /dev/null +++ b/eng/common/core-templates/steps/retain-build.yml @@ -0,0 +1,28 @@ +parameters: + # Optional azure devops PAT with build execute permissions for the build's organization, + # only needed if the build that should be retained ran on a different organization than + # the pipeline where this template is executing from + Token: '' + # Optional BuildId to retain, defaults to the current running build + BuildId: '' + # Azure devops Organization URI for the build in the https://dev.azure.com/ format. + # Defaults to the organization the current pipeline is running on + AzdoOrgUri: '$(System.CollectionUri)' + # Azure devops project for the build. Defaults to the project the current pipeline is running on + AzdoProject: '$(System.TeamProject)' + +steps: + - task: powershell@2 + inputs: + targetType: 'filePath' + filePath: eng/common/retain-build.ps1 + pwsh: true + arguments: > + -AzdoOrgUri: ${{parameters.AzdoOrgUri}} + -AzdoProject ${{parameters.AzdoProject}} + -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} + -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} + displayName: Enable permanent build retention + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + BUILD_ID: $(Build.BuildId) \ No newline at end of file diff --git a/eng/common/core-templates/steps/send-to-helix.yml b/eng/common/core-templates/steps/send-to-helix.yml new file mode 100644 index 000000000000..68fa739c4ab2 --- /dev/null +++ b/eng/common/core-templates/steps/send-to-helix.yml @@ -0,0 +1,93 @@ +# Please remember to update the documentation if you make changes to these parameters! +parameters: + HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ + HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' + HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number + HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues + HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY + HelixProjectArguments: '' # optional -- arguments passed to the build command + HelixConfiguration: '' # optional -- additional property attached to a job + HelixPreCommands: '' # optional -- commands to run before Helix work item execution + HelixPostCommands: '' # optional -- commands to run after Helix work item execution + WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects + WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects + WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects + CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload + XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects + XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects + XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner + XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects + IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion + DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." + IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set + HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) + Creator: '' # optional -- if the build is external, use this to specify who is sending the job + DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO + condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() + continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false + +steps: + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + displayName: ${{ parameters.DisplayNamePrefix }} (Windows) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + displayName: ${{ parameters.DisplayNamePrefix }} (Unix) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml new file mode 100644 index 000000000000..7846584d2a77 --- /dev/null +++ b/eng/common/core-templates/steps/source-build.yml @@ -0,0 +1,137 @@ +parameters: + # This template adds arcade-powered source-build to CI. + + # This is a 'steps' template, and is intended for advanced scenarios where the existing build + # infra has a careful build methodology that must be followed. For example, a repo + # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline + # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to + # GitHub. Using this steps template leaves room for that infra to be included. + + # Defines the platform on which to run the steps. See 'eng/common/core-templates/job/source-build.yml' + # for details. The entire object is described in the 'job' template for simplicity, even though + # the usage of the properties on this object is split between the 'job' and 'steps' templates. + platform: {} + + # Optional list of directories to ignore for component governance scans. + componentGovernanceIgnoreDirectories: [] + + is1ESPipeline: false + +steps: +# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) +- script: | + set -x + df -h + + # If file changes are detected, set CopyWipIntoInnerSourceBuildRepo to copy the WIP changes into the inner source build repo. + internalRestoreArgs= + if ! git diff --quiet; then + internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' + # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. + # This only works if there is a username/email configured, which won't be the case in most CI runs. + git config --get user.email + if [ $? -ne 0 ]; then + git config user.email dn-bot@microsoft.com + git config user.name dn-bot + fi + fi + + # If building on the internal project, the internal storage variable may be available (usually only if needed) + # In that case, add variables to allow the download of internal runtimes if the specified versions are not found + # in the default public locations. + internalRuntimeDownloadArgs= + if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' + fi + + buildConfig=Release + # Check if AzDO substitutes in a build config from a variable, and use it if so. + if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then + buildConfig='$(_BuildConfig)' + fi + + officialBuildArgs= + if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then + officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' + fi + + targetRidArgs= + if [ '${{ parameters.platform.targetRID }}' != '' ]; then + targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' + fi + + runtimeOsArgs= + if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then + runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' + fi + + baseOsArgs= + if [ '${{ parameters.platform.baseOS }}' != '' ]; then + baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + fi + + publishArgs= + if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then + publishArgs='--publish' + fi + + assetManifestFileName=SourceBuild_RidSpecific.xml + if [ '${{ parameters.platform.name }}' != '' ]; then + assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml + fi + + ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ + --configuration $buildConfig \ + --restore --build --pack $publishArgs -bl \ + ${{ parameters.platform.buildArguments }} \ + $officialBuildArgs \ + $internalRuntimeDownloadArgs \ + $internalRestoreArgs \ + $targetRidArgs \ + $runtimeOsArgs \ + $baseOsArgs \ + /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ + /p:ArcadeBuildFromSource=true \ + /p:DotNetBuildSourceOnly=true \ + /p:DotNetBuildRepo=true \ + /p:AssetManifestFileName=$assetManifestFileName + displayName: Build + +# Upload build logs for diagnosis. +- task: CopyFiles@2 + displayName: Prepare BuildLogs staging directory + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)' + Contents: | + **/*.log + **/*.binlog + artifacts/sb/prebuilt-report/** + TargetFolder: '$(Build.StagingDirectory)/BuildLogs' + CleanTargetFolder: true + continueOnError: true + condition: succeededOrFailed() + +- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish BuildLogs + targetPath: '$(Build.StagingDirectory)/BuildLogs' + artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) + continueOnError: true + condition: succeededOrFailed() + sbomEnabled: false # we don't need SBOM for logs + +# Manually inject component detection so that we can ignore the source build upstream cache, which contains +# a nupkg cache of input packages (a local feed). +# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' +# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + displayName: Component Detection (Exclude upstream cache) + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ if eq(length(parameters.componentGovernanceIgnoreDirectories), 0) }}: + componentGovernanceIgnoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/sb/src/artifacts/obj/source-built-upstream-cache' + ${{ else }}: + componentGovernanceIgnoreDirectories: ${{ join(',', parameters.componentGovernanceIgnoreDirectories) }} + disableComponentGovernance: ${{ eq(variables['System.TeamProject'], 'public') }} diff --git a/eng/common/core-templates/variables/pool-providers.yml b/eng/common/core-templates/variables/pool-providers.yml new file mode 100644 index 000000000000..41053d382a2e --- /dev/null +++ b/eng/common/core-templates/variables/pool-providers.yml @@ -0,0 +1,8 @@ +parameters: + is1ESPipeline: false + +variables: + - ${{ if eq(parameters.is1ESPipeline, 'true') }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ else }}: + - template: /eng/common/templates/variables/pool-providers.yml \ No newline at end of file diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh index f163fb9dae96..7e9ba2b75ed3 100755 --- a/eng/common/cross/build-android-rootfs.sh +++ b/eng/common/cross/build-android-rootfs.sh @@ -5,15 +5,15 @@ __NDK_Version=r21 usage() { echo "Creates a toolchain and sysroot used for cross-compiling for Android." - echo. + echo echo "Usage: $0 [BuildArch] [ApiLevel]" - echo. + echo echo "BuildArch is the target architecture of Android. Currently only arm64 is supported." echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html" - echo. + echo echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior" echo "by setting the TOOLCHAIN_DIR environment variable" - echo. + echo echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation," echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK." echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.28-arm64. This file is to replace '/etc/os-release', which is not available for Android." diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh index 9caf9b021dbd..4b5e8d7166bd 100755 --- a/eng/common/cross/build-rootfs.sh +++ b/eng/common/cross/build-rootfs.sh @@ -8,7 +8,7 @@ usage() echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86" echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine" echo " for alpine can be specified with version: alpineX.YY or alpineedge" - echo " for FreeBSD can be: freebsd12, freebsd13" + echo " for FreeBSD can be: freebsd13, freebsd14" echo " for illumos can be: illumos" echo " for Haiku can be: haiku." echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD" @@ -30,7 +30,8 @@ __IllumosArch=arm7 __HaikuArch=arm __QEMUArch=arm __UbuntuArch=armhf -__UbuntuRepo="http://ports.ubuntu.com/" +__UbuntuRepo= +__UbuntuSuites="updates security backports" __LLDB_Package="liblldb-3.9-dev" __SkipUnmount=0 @@ -71,9 +72,9 @@ __AlpinePackages+=" krb5-dev" __AlpinePackages+=" openssl-dev" __AlpinePackages+=" zlib-dev" -__FreeBSDBase="12.4-RELEASE" +__FreeBSDBase="13.3-RELEASE" __FreeBSDPkg="1.17.0" -__FreeBSDABI="12" +__FreeBSDABI="13" __FreeBSDPackages="libunwind" __FreeBSDPackages+=" icu" __FreeBSDPackages+=" libinotify" @@ -129,6 +130,7 @@ __AlpineKeys=' 616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ== ' __Keyring= +__KeyringFile="/usr/share/keyrings/ubuntu-archive-keyring.gpg" __SkipSigCheck=0 __UseMirror=0 @@ -142,7 +144,6 @@ while :; do case $lowerI in -\?|-h|--help) usage - exit 1 ;; arm) __BuildArch=arm @@ -163,6 +164,7 @@ while :; do __UbuntuArch=armel __UbuntuRepo="http://ftp.debian.org/debian/" __CodeName=jessie + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" ;; armv6) __BuildArch=armv6 @@ -170,10 +172,12 @@ while :; do __QEMUArch=arm __UbuntuRepo="http://raspbian.raspberrypi.org/raspbian/" __CodeName=buster + __KeyringFile="/usr/share/keyrings/raspbian-archive-keyring.gpg" __LLDB_Package="liblldb-6.0-dev" + __UbuntuSuites= - if [[ -e "/usr/share/keyrings/raspbian-archive-keyring.gpg" ]]; then - __Keyring="--keyring /usr/share/keyrings/raspbian-archive-keyring.gpg" + if [[ -e "$__KeyringFile" ]]; then + __Keyring="--keyring $__KeyringFile" fi ;; riscv64) @@ -182,13 +186,8 @@ while :; do __AlpinePackages="${__AlpinePackages// lldb-dev/}" __QEMUArch=riscv64 __UbuntuArch=riscv64 - __UbuntuRepo="http://deb.debian.org/debian-ports" __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" unset __LLDB_Package - - if [[ -e "/usr/share/keyrings/debian-ports-archive-keyring.gpg" ]]; then - __Keyring="--keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring" - fi ;; ppc64le) __BuildArch=ppc64le @@ -229,12 +228,19 @@ while :; do __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" ;; lldb*) - version="${lowerI/lldb/}" - parts=(${version//./ }) + version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" + majorVersion="${version%%.*}" + + [ -z "${version##*.*}" ] && minorVersion="${version#*.}" + if [ -z "$minorVersion" ]; then + minorVersion=0 + fi # for versions > 6.0, lldb has dropped the minor version - if [[ "${parts[0]}" -gt 6 ]]; then - version="${parts[0]}" + if [ "$majorVersion" -le 6 ]; then + version="$majorVersion.$minorVersion" + else + version="$majorVersion" fi __LLDB_Package="liblldb-${version}-dev" @@ -243,15 +249,19 @@ while :; do unset __LLDB_Package ;; llvm*) - version="${lowerI/llvm/}" - parts=(${version//./ }) - __LLVM_MajorVersion="${parts[0]}" - __LLVM_MinorVersion="${parts[1]}" - - # for versions > 6.0, llvm has dropped the minor version - if [[ -z "$__LLVM_MinorVersion" && "$__LLVM_MajorVersion" -le 6 ]]; then - __LLVM_MinorVersion=0; + version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" + __LLVM_MajorVersion="${version%%.*}" + + [ -z "${version##*.*}" ] && __LLVM_MinorVersion="${version#*.}" + if [ -z "$__LLVM_MinorVersion" ]; then + __LLVM_MinorVersion=0 + fi + + # for versions > 6.0, lldb has dropped the minor version + if [ "$__LLVM_MajorVersion" -gt 6 ]; then + __LLVM_MinorVersion= fi + ;; xenial) # Ubuntu 16.04 if [[ "$__CodeName" != "jessie" ]]; then @@ -278,8 +288,17 @@ while :; do __CodeName=jammy fi ;; + noble) # Ubuntu 24.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=noble + fi + if [[ -n "$__LLDB_Package" ]]; then + __LLDB_Package="liblldb-18-dev" + fi + ;; jessie) # Debian 8 __CodeName=jessie + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -288,6 +307,7 @@ while :; do stretch) # Debian 9 __CodeName=stretch __LLDB_Package="liblldb-6.0-dev" + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -296,6 +316,7 @@ while :; do buster) # Debian 10 __CodeName=buster __LLDB_Package="liblldb-6.0-dev" + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -303,6 +324,15 @@ while :; do ;; bullseye) # Debian 11 __CodeName=bullseye + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + bookworm) # Debian 12 + __CodeName=bookworm + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -310,6 +340,7 @@ while :; do ;; sid) # Debian sid __CodeName=sid + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -323,25 +354,24 @@ while :; do alpine*) __CodeName=alpine __UbuntuRepo= - version="${lowerI/alpine/}" - if [[ "$version" == "edge" ]]; then + if [[ "$lowerI" == "alpineedge" ]]; then __AlpineVersion=edge else - parts=(${version//./ }) - __AlpineMajorVersion="${parts[0]}" - __AlpineMinoVersion="${parts[1]}" - __AlpineVersion="$__AlpineMajorVersion.$__AlpineMinoVersion" + version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" + __AlpineMajorVersion="${version%%.*}" + __AlpineMinorVersion="${version#*.}" + __AlpineVersion="$__AlpineMajorVersion.$__AlpineMinorVersion" fi ;; - freebsd12) + freebsd13) __CodeName=freebsd __SkipUnmount=1 ;; - freebsd13) + freebsd14) __CodeName=freebsd - __FreeBSDBase="13.2-RELEASE" - __FreeBSDABI="13" + __FreeBSDBase="14.0-RELEASE" + __FreeBSDABI="14" __SkipUnmount=1 ;; illumos) @@ -420,6 +450,10 @@ fi __UbuntuPackages+=" ${__LLDB_Package:-}" +if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ports.ubuntu.com/" +fi + if [[ -n "$__LLVM_MajorVersion" ]]; then __UbuntuPackages+=" libclang-common-${__LLVM_MajorVersion}${__LLVM_MinorVersion:+.$__LLVM_MinorVersion}-dev" fi @@ -442,13 +476,39 @@ fi mkdir -p "$__RootfsDir" __RootfsDir="$( cd "$__RootfsDir" && pwd )" +__hasWget= +ensureDownloadTool() +{ + if command -v wget &> /dev/null; then + __hasWget=1 + elif command -v curl &> /dev/null; then + __hasWget=0 + else + >&2 echo "ERROR: either wget or curl is required by this script." + exit 1 + fi +} + if [[ "$__CodeName" == "alpine" ]]; then __ApkToolsVersion=2.12.11 - __ApkToolsSHA512SUM=53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33 __ApkToolsDir="$(mktemp -d)" __ApkKeysDir="$(mktemp -d)" + arch="$(uname -m)" - wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic//v$__ApkToolsVersion/x86_64/apk.static" -P "$__ApkToolsDir" + ensureDownloadTool + + if [[ "$__hasWget" == 1 ]]; then + wget -P "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static" + else + curl -SLO --create-dirs --output-dir "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static" + fi + if [[ "$arch" == "x86_64" ]]; then + __ApkToolsSHA512SUM="53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33" + elif [[ "$arch" == "aarch64" ]]; then + __ApkToolsSHA512SUM="9e2b37ecb2b56c05dad23d379be84fd494c14bd730b620d0d576bda760588e1f2f59a7fcb2f2080577e0085f23a0ca8eadd993b4e61c2ab29549fdb71969afd0" + else + echo "WARNING: add missing hash for your host architecture. To find the value, use: 'find /tmp -name apk.static -exec sha512sum {} \;'" + fi echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c chmod +x "$__ApkToolsDir/apk.static" @@ -477,20 +537,23 @@ if [[ "$__CodeName" == "alpine" ]]; then fi # initialize DB + # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then + # shellcheck disable=SC2086 __AlpinePackages+=" $("$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \ - search 'llvm*-libs' | sort | tail -1 | sed 's/-[^-]*//2g')" + search 'llvm*-libs' | grep -E '^llvm' | sort | tail -1 | sed 's/-[^-]*//2g')" fi # install all packages in one go + # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ @@ -501,12 +564,23 @@ if [[ "$__CodeName" == "alpine" ]]; then elif [[ "$__CodeName" == "freebsd" ]]; then mkdir -p "$__RootfsDir"/usr/local/etc JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} - wget -O - "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + + ensureDownloadTool + + if [[ "$__hasWget" == 1 ]]; then + wget -O- "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + else + curl -SL "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + fi echo "ABI = \"FreeBSD:${__FreeBSDABI}:${__FreeBSDMachineArch}\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > "${__RootfsDir}"/usr/local/etc/pkg.conf echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"${__RootfsDir}/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf mkdir -p "$__RootfsDir"/tmp # get and build package manager - wget -O - "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + else + curl -SL "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + fi cd "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" # needed for install to succeed mkdir -p "$__RootfsDir"/host/etc @@ -514,27 +588,43 @@ elif [[ "$__CodeName" == "freebsd" ]]; then rm -rf "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" # install packages we need. INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update + # shellcheck disable=SC2086 INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages elif [[ "$__CodeName" == "illumos" ]]; then mkdir "$__RootfsDir/tmp" pushd "$__RootfsDir/tmp" JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} + + ensureDownloadTool + echo "Downloading sysroot." - wget -O - https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + else + curl -SL https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + fi echo "Building binutils. Please wait.." - wget -O - https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf - + else + curl -SL https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf - + fi mkdir build-binutils && cd build-binutils - ../binutils-2.33.1/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" + ../binutils-2.42/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" make -j "$JOBS" && make install && cd .. echo "Building gcc. Please wait.." - wget -O - https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf - + else + curl -SL https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf - + fi CFLAGS="-fPIC" CXXFLAGS="-fPIC" CXXFLAGS_FOR_TARGET="-fPIC" CFLAGS_FOR_TARGET="-fPIC" export CFLAGS CXXFLAGS CXXFLAGS_FOR_TARGET CFLAGS_FOR_TARGET mkdir build-gcc && cd build-gcc - ../gcc-8.4.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \ + ../gcc-13.3.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \ --with-gnu-ld --disable-nls --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libada --disable-libsanitizer \ --disable-libquadmath-support --disable-shared --enable-tls make -j "$JOBS" && make install && cd .. @@ -542,9 +632,13 @@ elif [[ "$__CodeName" == "illumos" ]]; then if [[ "$__UseMirror" == 1 ]]; then BaseUrl=https://pkgsrc.smartos.skylime.net fi - BaseUrl="$BaseUrl/packages/SmartOS/trunk/${__illumosArch}/All" + BaseUrl="$BaseUrl/packages/SmartOS/2019Q4/${__illumosArch}/All" echo "Downloading manifest" - wget "$BaseUrl" + if [[ "$__hasWget" == 1 ]]; then + wget "$BaseUrl" + else + curl -SLO "$BaseUrl" + fi echo "Downloading dependencies." read -ra array <<<"$__IllumosPackages" for package in "${array[@]}"; do @@ -552,7 +646,11 @@ elif [[ "$__CodeName" == "illumos" ]]; then # find last occurrence of package in listing and extract its name package="$(sed -En '/.*href="('"$package"'-[0-9].*).tgz".*/h;$!d;g;s//\1/p' All)" echo "Resolved name '$package'" - wget "$BaseUrl"/"$package".tgz + if [[ "$__hasWget" == 1 ]]; then + wget "$BaseUrl"/"$package".tgz + else + curl -SLO "$BaseUrl"/"$package".tgz + fi ar -x "$package".tgz tar --skip-old-files -xzf "$package".tmp.tg* -C "$__RootfsDir" 2>/dev/null done @@ -561,10 +659,17 @@ elif [[ "$__CodeName" == "illumos" ]]; then rm -rf "$__RootfsDir"/{tmp,+*} mkdir -p "$__RootfsDir"/usr/include/net mkdir -p "$__RootfsDir"/usr/include/netpacket - wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h - wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h - wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h - wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h + if [[ "$__hasWget" == 1 ]]; then + wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h + wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h + wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h + wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h + else + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h + fi elif [[ "$__CodeName" == "haiku" ]]; then JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} @@ -574,9 +679,16 @@ elif [[ "$__CodeName" == "haiku" ]]; then mkdir "$__RootfsDir/tmp/download" + ensureDownloadTool + echo "Downloading Haiku package tool" - git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 $__RootfsDir/tmp/script - wget -O "$__RootfsDir/tmp/download/hosttools.zip" $($__RootfsDir/tmp/script/fetch.sh --hosttools) + git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 "$__RootfsDir/tmp/script" + if [[ "$__hasWget" == 1 ]]; then + wget -O "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)" + else + curl -SLo "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)" + fi + unzip -o "$__RootfsDir/tmp/download/hosttools.zip" -d "$__RootfsDir/tmp/bin" DepotBaseUrl="https://depot.haiku-os.org/__api/v2/pkg/get-pkg" @@ -589,14 +701,25 @@ elif [[ "$__CodeName" == "haiku" ]]; then echo "Downloading $package..." # API documented here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L60 # The schema here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L598 - hpkgDownloadUrl="$(wget -qO- --post-data='{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ - --header='Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" - wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" + if [[ "$__hasWget" == 1 ]]; then + hpkgDownloadUrl="$(wget -qO- --post-data '{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ + --header 'Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" + wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" + else + hpkgDownloadUrl="$(curl -sSL -XPOST --data '{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ + --header 'Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" + curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" + fi done for package in haiku haiku_devel; do echo "Downloading $package..." - hpkgVersion="$(wget -qO- $HpkgBaseUrl | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" - wget -P "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + if [[ "$__hasWget" == 1 ]]; then + hpkgVersion="$(wget -qO- "$HpkgBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" + wget -P "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + else + hpkgVersion="$(curl -sSL "$HpkgBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" + curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + fi done # Set up the sysroot @@ -609,7 +732,11 @@ elif [[ "$__CodeName" == "haiku" ]]; then # Download buildtools echo "Downloading Haiku buildtools" - wget -O "$__RootfsDir/tmp/download/buildtools.zip" $($__RootfsDir/tmp/script/fetch.sh --buildtools --arch=$__HaikuArch) + if [[ "$__hasWget" == 1 ]]; then + wget -O "$__RootfsDir/tmp/download/buildtools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch)" + else + curl -SLo "$__RootfsDir/tmp/download/buildtools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch)" + fi unzip -o "$__RootfsDir/tmp/download/buildtools.zip" -d "$__RootfsDir" # Cleaning up temporary files @@ -622,10 +749,22 @@ elif [[ -n "$__CodeName" ]]; then __Keyring="$__Keyring --force-check-gpg" fi + # shellcheck disable=SC2086 + echo running debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" - cp "$__CrossDir/$__BuildArch/sources.list.$__CodeName" "$__RootfsDir/etc/apt/sources.list" + + mkdir -p "$__RootfsDir/etc/apt/sources.list.d/" + cat > "$__RootfsDir/etc/apt/sources.list.d/$__CodeName.sources" <>Start configuring Tizen rootfs" ln -sfn asm-${LINK_ARCH} ./usr/include/asm patch -p1 < $__TIZEN_CROSSDIR/tizen.patch +if [[ "$TIZEN_ARCH" == "riscv64" ]]; then + echo "Fixing broken symlinks in $PWD" + rm ./usr/lib64/libresolv.so + ln -s ../../lib64/libresolv.so.2 ./usr/lib64/libresolv.so + rm ./usr/lib64/libpthread.so + ln -s ../../lib64/libpthread.so.0 ./usr/lib64/libpthread.so + rm ./usr/lib64/libdl.so + ln -s ../../lib64/libdl.so.2 ./usr/lib64/libdl.so + rm ./usr/lib64/libutil.so + ln -s ../../lib64/libutil.so.1 ./usr/lib64/libutil.so + rm ./usr/lib64/libm.so + ln -s ../../lib64/libm.so.6 ./usr/lib64/libm.so + rm ./usr/lib64/librt.so + ln -s ../../lib64/librt.so.1 ./usr/lib64/librt.so + rm ./lib/ld-linux-riscv64-lp64d.so.1 + ln -s ../lib64/ld-linux-riscv64-lp64d.so.1 ./lib/ld-linux-riscv64-lp64d.so.1 +fi echo "<:--stdlib=${CLR_CMAKE_CXX_STANDARD_LIBRARY}>) + add_link_options($<$:--stdlib=${CLR_CMAKE_CXX_STANDARD_LIBRARY}>) +endif() + +option(CLR_CMAKE_CXX_STANDARD_LIBRARY_STATIC "Statically link against the C++ standard library" OFF) +if(CLR_CMAKE_CXX_STANDARD_LIBRARY_STATIC) + add_link_options($<$:-static-libstdc++>) +endif() + +set(CLR_CMAKE_CXX_ABI_LIBRARY "" CACHE STRING "C++ ABI implementation library to link against. Only supported with the Clang compiler.") +if (CLR_CMAKE_CXX_ABI_LIBRARY) + # The user may specify the ABI library with the 'lib' prefix, like 'libstdc++'. Strip the prefix here so the linker finds the right library. + string(REGEX REPLACE "^lib(.+)" "\\1" CLR_CMAKE_CXX_ABI_LIBRARY ${CLR_CMAKE_CXX_ABI_LIBRARY}) + # We need to specify this as a linker-backend option as Clang will filter this option out when linking to libc++. + add_link_options("LINKER:-l${CLR_CMAKE_CXX_ABI_LIBRARY}") +endif() + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index 8fda30bdce2b..e33743105635 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -1,6 +1,6 @@ param ( $darcVersion = $null, - $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16', + $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20', $verbosity = 'minimal', $toolpath = $null ) diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index c305ae6bd771..36dbd45e1ce8 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -2,7 +2,7 @@ source="${BASH_SOURCE[0]}" darcVersion='' -versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16' +versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20' verbosity='minimal' while [[ $# > 0 ]]; do diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh index 7e69e3a9e24a..7b9d97e3bd4d 100755 --- a/eng/common/dotnet-install.sh +++ b/eng/common/dotnet-install.sh @@ -71,6 +71,9 @@ case $cpuname in i[3-6]86) buildarch=x86 ;; + riscv64) + buildarch=riscv64 + ;; *) echo "Unknown CPU $cpuname detected, treating it as x64" buildarch=x64 @@ -82,7 +85,7 @@ if [[ $architecture != "" ]] && [[ $architecture != $buildarch ]]; then dotnetRoot="$dotnetRoot/$architecture" fi -InstallDotNet $dotnetRoot $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { +InstallDotNet "$dotnetRoot" $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { local exit_code=$? Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh index bbb4922151e6..b8ecca72bbf5 100644 --- a/eng/common/generate-sbom-prep.sh +++ b/eng/common/generate-sbom-prep.sh @@ -14,10 +14,10 @@ done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . $scriptroot/pipeline-logging-functions.sh + # replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" - manifest_dir=$1 # Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly diff --git a/eng/common/helixpublish.proj b/eng/common/helixpublish.proj index d7f185856e79..c1323bf41210 100644 --- a/eng/common/helixpublish.proj +++ b/eng/common/helixpublish.proj @@ -1,3 +1,4 @@ + diff --git a/eng/common/internal/Directory.Build.props b/eng/common/internal/Directory.Build.props index dbf99d82a5c2..f1d041c33da5 100644 --- a/eng/common/internal/Directory.Build.props +++ b/eng/common/internal/Directory.Build.props @@ -1,4 +1,11 @@ + + + false + false + + + diff --git a/eng/common/internal/NuGet.config b/eng/common/internal/NuGet.config index 19d3d311b166..f70261ed689b 100644 --- a/eng/common/internal/NuGet.config +++ b/eng/common/internal/NuGet.config @@ -4,4 +4,7 @@ + + + diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj index 7f5ce6d60813..feaa6d20812d 100644 --- a/eng/common/internal/Tools.csproj +++ b/eng/common/internal/Tools.csproj @@ -1,9 +1,10 @@ + net472 - false false + false @@ -14,17 +15,8 @@ - - - - https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json; - - - $(RestoreSources); - https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json; - - + diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1 index ca38268c44d8..f71f6af6cdbc 100644 --- a/eng/common/native/CommonLibrary.psm1 +++ b/eng/common/native/CommonLibrary.psm1 @@ -277,7 +277,8 @@ function Get-MachineArchitecture { if (($ProcessorArchitecture -Eq "AMD64") -Or ($ProcessorArchitecture -Eq "IA64") -Or ($ProcessorArchitecture -Eq "ARM64") -Or - ($ProcessorArchitecture -Eq "LOONGARCH64")) { + ($ProcessorArchitecture -Eq "LOONGARCH64") -Or + ($ProcessorArchitecture -Eq "RISCV64")) { return "x64" } return "x86" diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh index 2d5660642b8d..9a0e1f2b4567 100644 --- a/eng/common/native/init-compiler.sh +++ b/eng/common/native/init-compiler.sh @@ -2,7 +2,9 @@ # # This file detects the C/C++ compiler and exports it to the CC/CXX environment variables # -# NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here! +# NOTE: some scripts source this file and rely on stdout being empty, make sure +# to not output *anything* here, unless it is an error message that fails the +# build. if [ -z "$build_arch" ] || [ -z "$compiler" ]; then echo "Usage..." @@ -17,11 +19,9 @@ case "$compiler" in # clangx.y or clang-x.y version="$(echo "$compiler" | tr -d '[:alpha:]-=')" majorVersion="${version%%.*}" - [ -z "${version##*.*}" ] && minorVersion="${version#*.}" - if [ -z "$minorVersion" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -le 6 ]; then - minorVersion=0; - fi + # LLVM based on v18 released in early 2024, with two releases per year + maxVersion="$((18 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 6)))" compiler=clang ;; @@ -29,7 +29,9 @@ case "$compiler" in # gccx.y or gcc-x.y version="$(echo "$compiler" | tr -d '[:alpha:]-=')" majorVersion="${version%%.*}" - [ -z "${version##*.*}" ] && minorVersion="${version#*.}" + + # GCC based on v14 released in early 2024, with one release per year + maxVersion="$((14 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 12)))" compiler=gcc ;; esac @@ -47,91 +49,98 @@ check_version_exists() { desired_version=-1 # Set up the environment to be used for building with the desired compiler. - if command -v "$compiler-$1.$2" > /dev/null; then - desired_version="-$1.$2" - elif command -v "$compiler$1$2" > /dev/null; then - desired_version="$1$2" - elif command -v "$compiler-$1$2" > /dev/null; then - desired_version="-$1$2" + if command -v "$compiler-$1" > /dev/null; then + desired_version="-$1" + elif command -v "$compiler$1" > /dev/null; then + desired_version="$1" fi echo "$desired_version" } +__baseOS="$(uname)" +set_compiler_version_from_CC() { + if [ "$__baseOS" = "Darwin" ]; then + # On Darwin, the versions from -version/-dumpversion refer to Xcode + # versions, not llvm versions, so we can't rely on them. + return + fi + + version="$("$CC" -dumpversion)" + if [ -z "$version" ]; then + echo "Error: $CC -dumpversion didn't provide a version" + exit 1 + fi + + # gcc and clang often display 3 part versions. However, gcc can show only 1 part in some environments. + IFS=. read -r majorVersion _ < /dev/null; then - if [ "$(uname)" != "Darwin" ]; then - echo "Warning: Specific version of $compiler not found, falling back to use the one in PATH." - fi - CC="$(command -v "$compiler")" - CXX="$(command -v "$cxxCompiler")" - else - echo "No usable version of $compiler found." + if ! command -v "$compiler" > /dev/null; then + echo "Error: No compatible version of $compiler was found within the range of $minVersion to $maxVersion. Please upgrade your toolchain or specify the compiler explicitly using CLR_CC and CLR_CXX environment variables." exit 1 fi - else - if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ]; then - if [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; then - if command -v "$compiler" > /dev/null; then - echo "Warning: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH." - CC="$(command -v "$compiler")" - CXX="$(command -v "$cxxCompiler")" - else - echo "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH." - exit 1 - fi - fi - fi + + CC="$(command -v "$compiler" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler" 2> /dev/null)" + set_compiler_version_from_CC fi else - desired_version="$(check_version_exists "$majorVersion" "$minorVersion")" + desired_version="$(check_version_exists "$majorVersion")" if [ "$desired_version" = "-1" ]; then - echo "Could not find specific version of $compiler: $majorVersion $minorVersion." + echo "Error: Could not find specific version of $compiler: $majorVersion." exit 1 fi fi if [ -z "$CC" ]; then - CC="$(command -v "$compiler$desired_version")" - CXX="$(command -v "$cxxCompiler$desired_version")" - if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler")"; fi + CC="$(command -v "$compiler$desired_version" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler$desired_version" 2> /dev/null)" + if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler" 2> /dev/null)"; fi + set_compiler_version_from_CC fi else if [ ! -f "$CLR_CC" ]; then - echo "CLR_CC is set but path '$CLR_CC' does not exist" + echo "Error: CLR_CC is set but path '$CLR_CC' does not exist" exit 1 fi CC="$CLR_CC" CXX="$CLR_CXX" + set_compiler_version_from_CC fi if [ -z "$CC" ]; then - echo "Unable to find $compiler." + echo "Error: Unable to find $compiler." exit 1 fi -# Only lld version >= 9 can be considered stable. lld doesn't support s390x. -if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && [ "$build_arch" != "s390x" ]; then - if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then - LDFLAGS="-fuse-ld=lld" +if [ "$__baseOS" != "Darwin" ]; then + # On Darwin, we always want to use the Apple linker. + + # Only lld version >= 9 can be considered stable. lld supports s390x starting from 18.0. + if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && { [ "$build_arch" != "s390x" ] || [ "$majorVersion" -ge 18 ]; }; then + if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then + LDFLAGS="-fuse-ld=lld" + fi fi fi -SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version")" +SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version" 2> /dev/null)" export CC CXX LDFLAGS SCAN_BUILD_COMMAND diff --git a/eng/common/native/init-distro-rid.sh b/eng/common/native/init-distro-rid.sh index de1687b2ccbe..83ea7aab0e08 100644 --- a/eng/common/native/init-distro-rid.sh +++ b/eng/common/native/init-distro-rid.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # getNonPortableDistroRid # @@ -11,21 +11,16 @@ # non-portable rid getNonPortableDistroRid() { - local targetOs="$1" - local targetArch="$2" - local rootfsDir="$3" - local nonPortableRid="" + targetOs="$1" + targetArch="$2" + rootfsDir="$3" + nonPortableRid="" if [ "$targetOs" = "linux" ]; then + # shellcheck disable=SC1091 if [ -e "${rootfsDir}/etc/os-release" ]; then - source "${rootfsDir}/etc/os-release" - - if [[ "${ID}" == "rhel" || "${ID}" == "rocky" || "${ID}" == "alpine" ]]; then - # remove the last version digit - VERSION_ID="${VERSION_ID%.*}" - fi - - if [[ "${VERSION_ID:-}" =~ ^([[:digit:]]|\.)+$ ]]; then + . "${rootfsDir}/etc/os-release" + if echo "${VERSION_ID:-}" | grep -qE '^([[:digit:]]|\.)+$'; then nonPortableRid="${ID}.${VERSION_ID}-${targetArch}" else # Rolling release distros either do not set VERSION_ID, set it as blank or @@ -33,45 +28,33 @@ getNonPortableDistroRid() # so omit it here to be consistent with everything else. nonPortableRid="${ID}-${targetArch}" fi - elif [ -e "${rootfsDir}/android_platform" ]; then - source "$rootfsDir"/android_platform + # shellcheck disable=SC1091 + . "${rootfsDir}/android_platform" nonPortableRid="$RID" fi fi if [ "$targetOs" = "freebsd" ]; then - # $rootfsDir can be empty. freebsd-version is shell script and it should always work. - __freebsd_major_version=$($rootfsDir/bin/freebsd-version | { read v; echo "${v%%.*}"; }) + # $rootfsDir can be empty. freebsd-version is a shell script and should always work. + __freebsd_major_version=$("$rootfsDir"/bin/freebsd-version | cut -d'.' -f1) nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" - elif command -v getprop && getprop ro.product.system.model 2>&1 | grep -qi android; then + elif command -v getprop >/dev/null && getprop ro.product.system.model | grep -qi android; then __android_sdk_version=$(getprop ro.build.version.sdk) nonPortableRid="android.$__android_sdk_version-${targetArch}" elif [ "$targetOs" = "illumos" ]; then __uname_version=$(uname -v) - case "$__uname_version" in - omnios-*) - __omnios_major_version=$(echo "${__uname_version:8:2}") - nonPortableRid=omnios."$__omnios_major_version"-"$targetArch" - ;; - joyent_*) - __smartos_major_version=$(echo "${__uname_version:7:4}") - nonPortableRid=smartos."$__smartos_major_version"-"$targetArch" - ;; - illumos_*) - nonPortableRid=openindiana-"$targetArch" - ;; - esac + nonPortableRid="illumos-${targetArch}" elif [ "$targetOs" = "solaris" ]; then __uname_version=$(uname -v) - __solaris_major_version=$(echo "${__uname_version%.*}") - nonPortableRid=solaris."$__solaris_major_version"-"$targetArch" + __solaris_major_version=$(echo "$__uname_version" | cut -d'.' -f1) + nonPortableRid="solaris.$__solaris_major_version-${targetArch}" elif [ "$targetOs" = "haiku" ]; then - __uname_release=$(uname -r) + __uname_release="$(uname -r)" nonPortableRid=haiku.r"$__uname_release"-"$targetArch" fi - echo "$(echo $nonPortableRid | tr '[:upper:]' '[:lower:]')" + echo "$nonPortableRid" | tr '[:upper:]' '[:lower:]' } # initDistroRidGlobal @@ -85,26 +68,23 @@ getNonPortableDistroRid() # None # # Notes: -# -# It is important to note that the function does not return anything, but it -# exports the following variables on success: -# -# __DistroRid : Non-portable rid of the target platform. -# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. -# +# It is important to note that the function does not return anything, but it +# exports the following variables on success: +# __DistroRid : Non-portable rid of the target platform. +# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. initDistroRidGlobal() { - local targetOs="$1" - local targetArch="$2" - local rootfsDir="" - if [ "$#" -ge 3 ]; then + targetOs="$1" + targetArch="$2" + rootfsDir="" + if [ $# -ge 3 ]; then rootfsDir="$3" fi if [ -n "${rootfsDir}" ]; then # We may have a cross build. Check for the existence of the rootfsDir if [ ! -e "${rootfsDir}" ]; then - echo "Error rootfsDir has been passed, but the location is not valid." + echo "Error: rootfsDir has been passed, but the location is not valid." exit 1 fi fi @@ -119,7 +99,7 @@ initDistroRidGlobal() STRINGS="$(command -v llvm-strings || true)" fi - # Check for musl-based distros (e.g Alpine Linux, Void Linux). + # Check for musl-based distros (e.g. Alpine Linux, Void Linux). if "${rootfsDir}/usr/bin/ldd" --version 2>&1 | grep -q musl || ( [ -n "$STRINGS" ] && "$STRINGS" "${rootfsDir}/usr/bin/ldd" 2>&1 | grep -q musl ); then __PortableTargetOS="linux-musl" diff --git a/eng/common/native/init-os-and-arch.sh b/eng/common/native/init-os-and-arch.sh index e693617a6c2b..38921d4338f7 100644 --- a/eng/common/native/init-os-and-arch.sh +++ b/eng/common/native/init-os-and-arch.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # Use uname to determine what the OS is. OSName=$(uname -s | tr '[:upper:]' '[:lower:]') @@ -35,6 +35,10 @@ fi case "$CPUName" in arm64|aarch64) arch=arm64 + if [ "$(getconf LONG_BIT)" -lt 64 ]; then + # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) + arch=arm + fi ;; loongarch64) @@ -50,6 +54,7 @@ case "$CPUName" in ;; armv7l|armv8l) + # shellcheck disable=SC1091 if (NAME=""; . /etc/os-release; test "$NAME" = "Tizen"); then arch=armel else diff --git a/eng/common/post-build/check-channel-consistency.ps1 b/eng/common/post-build/check-channel-consistency.ps1 index 63f3464c986a..61208d2d1351 100644 --- a/eng/common/post-build/check-channel-consistency.ps1 +++ b/eng/common/post-build/check-channel-consistency.ps1 @@ -4,10 +4,18 @@ param( ) try { - . $PSScriptRoot\post-build-utils.ps1 + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 if ($PromoteToChannels -eq "") { - Write-PipelineTaskError -Type 'warning' -Message "This build won't publish assets as it's not configured to any Maestro channel. If that wasn't intended use Darc to configure a default channel using add-default-channel for this branch or to promote it to a channel using add-build-to-channel. See https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#assigning-an-individual-build-to-a-channel for more info." + Write-PipelineTaskError -Type 'warning' -Message "This build won't publish assets as it's not configured to any Maestro channel. If that wasn't intended use Darc to configure a default channel using add-default-channel for this branch or to promote it to a channel using add-build-to-channel. See https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md#assigning-an-individual-build-to-a-channel for more info." ExitWithExitCode 0 } diff --git a/eng/common/post-build/nuget-validation.ps1 b/eng/common/post-build/nuget-validation.ps1 index 22b1c4dfe4a7..e5de00c89836 100644 --- a/eng/common/post-build/nuget-validation.ps1 +++ b/eng/common/post-build/nuget-validation.ps1 @@ -5,9 +5,14 @@ param( [Parameter(Mandatory=$true)][string] $PackagesPath # Path to where the packages to be validated are ) -try { - . $PSScriptRoot\post-build-utils.ps1 +# `tools.ps1` checks $ci to perform some actions. Since the post-build +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +$disableConfigureToolsetImport = $true +. $PSScriptRoot\..\tools.ps1 +try { & $PSScriptRoot\nuget-verification.ps1 ${PackagesPath}\*.nupkg } catch { diff --git a/eng/common/post-build/nuget-verification.ps1 b/eng/common/post-build/nuget-verification.ps1 index 6cbbcafade26..eea88e653c91 100644 --- a/eng/common/post-build/nuget-verification.ps1 +++ b/eng/common/post-build/nuget-verification.ps1 @@ -118,4 +118,4 @@ if ($LASTEXITCODE -ne 0) { Write-Error "The verify tool found some problems." } else { Write-Output "The verify tool succeeded." -} \ No newline at end of file +} diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 238945cb5ab4..a261517ef906 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -5,11 +5,17 @@ param( [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net', [Parameter(Mandatory=$true)][string] $WaitPublishingFinish, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, - [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters + [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters, + [Parameter(Mandatory=$false)][string] $RequireDefaultChannels ) try { - . $PSScriptRoot\post-build-utils.ps1 + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 $darc = Get-Darc @@ -28,6 +34,10 @@ try { if ("false" -eq $WaitPublishingFinish) { $optionalParams.Add("--no-wait") | Out-Null } + + if ("true" -eq $RequireDefaultChannels) { + $optionalParams.Add("--default-channels-required") | Out-Null + } & $darc add-build-to-channel ` --id $buildId ` @@ -37,6 +47,7 @@ try { --azdev-pat "$AzdoToken" ` --bar-uri "$MaestroApiEndPoint" ` --ci ` + --verbose ` @optionalParams if ($LastExitCode -ne 0) { diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1 new file mode 100644 index 000000000000..b7fc19591507 --- /dev/null +++ b/eng/common/post-build/redact-logs.ps1 @@ -0,0 +1,89 @@ +[CmdletBinding(PositionalBinding=$False)] +param( + [Parameter(Mandatory=$true, Position=0)][string] $InputPath, + [Parameter(Mandatory=$true)][string] $BinlogToolVersion, + [Parameter(Mandatory=$false)][string] $DotnetPath, + [Parameter(Mandatory=$false)][string] $PackageFeed = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json', + # File with strings to redact - separated by newlines. + # For comments start the line with '# ' - such lines are ignored + [Parameter(Mandatory=$false)][string] $TokensFilePath, + [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact +) + +try { + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 + + $packageName = 'binlogtool' + + $dotnet = $DotnetPath + + if (!$dotnet) { + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + } + + $toolList = & "$dotnet" tool list -g + + if ($toolList -like "*$packageName*") { + & "$dotnet" tool uninstall $packageName -g + } + + $toolPath = "$PSScriptRoot\..\..\..\.tools" + $verbosity = 'minimal' + + New-Item -ItemType Directory -Force -Path $toolPath + + Push-Location -Path $toolPath + + try { + Write-Host "Installing Binlog redactor CLI..." + Write-Host "'$dotnet' new tool-manifest" + & "$dotnet" new tool-manifest + Write-Host "'$dotnet' tool install $packageName --local --add-source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" + & "$dotnet" tool install $packageName --local --add-source "$PackageFeed" -v $verbosity --version $BinlogToolVersion + + if (Test-Path $TokensFilePath) { + Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath + $TokensToRedact += Get-Content -Path $TokensFilePath | Foreach {$_.Trim()} | Where { $_ -notmatch "^# " } + } + + $optionalParams = [System.Collections.ArrayList]::new() + + Foreach ($p in $TokensToRedact) + { + if($p -match '^\$\(.*\)$') + { + Write-Host ("Ignoring token {0} as it is probably unexpanded AzDO variable" -f $p) + } + elseif($p) + { + $optionalParams.Add("-p:" + $p) | Out-Null + } + } + + & $dotnet binlogtool redact --input:$InputPath --recurse --in-place ` + @optionalParams + + if ($LastExitCode -ne 0) { + Write-PipelineTelemetryError -Category 'Redactor' -Type 'warning' -Message "Problems using Redactor tool (exit code: $LastExitCode). But ignoring them now." + } + } + finally { + Pop-Location + } + + Write-Host 'done.' +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Category 'Redactor' -Message "There was an error while trying to redact logs. Error: $_" + ExitWithExitCode 1 +} diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 index 4011d324e739..1976ef70fb85 100644 --- a/eng/common/post-build/sourcelink-validation.ps1 +++ b/eng/common/post-build/sourcelink-validation.ps1 @@ -6,7 +6,15 @@ param( [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use ) -. $PSScriptRoot\post-build-utils.ps1 +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +# `tools.ps1` checks $ci to perform some actions. Since the post-build +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +$disableConfigureToolsetImport = $true +. $PSScriptRoot\..\tools.ps1 # Cache/HashMap (File -> Exist flag) used to consult whether a file exist # in the repository at a specific commit point. This is populated by inserting diff --git a/eng/common/post-build/symbols-validation.ps1 b/eng/common/post-build/symbols-validation.ps1 index cd2181bafa05..7146e593ffae 100644 --- a/eng/common/post-build/symbols-validation.ps1 +++ b/eng/common/post-build/symbols-validation.ps1 @@ -322,8 +322,6 @@ function InstallDotnetSymbol { } try { - . $PSScriptRoot\post-build-utils.ps1 - InstallDotnetSymbol foreach ($Job in @(Get-Job)) { diff --git a/eng/common/sdl/NuGet.config b/eng/common/sdl/NuGet.config index 5bfbb02ef043..3849bdb3cf51 100644 --- a/eng/common/sdl/NuGet.config +++ b/eng/common/sdl/NuGet.config @@ -5,11 +5,11 @@ - + - + diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1 index 81ded5b7f477..4715d75e974d 100644 --- a/eng/common/sdl/execute-all-sdl-tools.ps1 +++ b/eng/common/sdl/execute-all-sdl-tools.ps1 @@ -6,6 +6,7 @@ Param( [string] $BranchName=$env:BUILD_SOURCEBRANCH, # Optional: name of branch or version of gdn settings; defaults to master [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, # Required: the directory where source files are located [string] $ArtifactsDirectory = (Join-Path $env:BUILD_ARTIFACTSTAGINGDIRECTORY ('artifacts')), # Required: the directory where build artifacts are located + [string] $AzureDevOpsAccessToken, # Required: access token for dnceng; should be provided via KeyVault # Optional: list of SDL tools to run on source code. See 'configure-sdl-tool.ps1' for tools list # format. @@ -74,7 +75,7 @@ try { } Exec-BlockVerbosely { - & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -GuardianLoggerLevel $GuardianLoggerLevel + & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel } $gdnFolder = Join-Path $workingDirectory '.gdn' @@ -103,6 +104,7 @@ try { -TargetDirectory $targetDirectory ` -GdnFolder $gdnFolder ` -ToolsList $tools ` + -AzureDevOpsAccessToken $AzureDevOpsAccessToken ` -GuardianLoggerLevel $GuardianLoggerLevel ` -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams ` -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams ` diff --git a/eng/common/sdl/init-sdl.ps1 b/eng/common/sdl/init-sdl.ps1 index 588ff8e22fbe..3ac1d92b3700 100644 --- a/eng/common/sdl/init-sdl.ps1 +++ b/eng/common/sdl/init-sdl.ps1 @@ -3,6 +3,7 @@ Param( [string] $Repository, [string] $BranchName='master', [string] $WorkingDirectory, + [string] $AzureDevOpsAccessToken, [string] $GuardianLoggerLevel='Standard' ) @@ -20,7 +21,14 @@ $ci = $true # Don't display the console progress UI - it's a huge perf hit $ProgressPreference = 'SilentlyContinue' +# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file +$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken")) +$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn") +$uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0" +$zipFile = "$WorkingDirectory/gdn.zip" + Add-Type -AssemblyName System.IO.Compression.FileSystem +$gdnFolder = (Join-Path $WorkingDirectory '.gdn') try { # if the folder does not exist, we'll do a guardian init and push it to the remote repository diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config index e5f543ea68c2..4585cfd6bba1 100644 --- a/eng/common/sdl/packages.config +++ b/eng/common/sdl/packages.config @@ -1,4 +1,4 @@ - + diff --git a/eng/common/sdl/sdl.ps1 b/eng/common/sdl/sdl.ps1 index 7fe603fe995d..648c5068d7d6 100644 --- a/eng/common/sdl/sdl.ps1 +++ b/eng/common/sdl/sdl.ps1 @@ -4,8 +4,6 @@ function Install-Gdn { [Parameter(Mandatory=$true)] [string]$Path, - [string]$Source = "https://pkgs.dev.azure.com/dnceng/_packaging/Guardian1ESPTUpstreamOrgFeed/nuget/v3/index.json", - # If omitted, install the latest version of Guardian, otherwise install that specific version. [string]$Version ) @@ -21,7 +19,7 @@ function Install-Gdn { $ci = $true . $PSScriptRoot\..\tools.ps1 - $argumentList = @("install", "Microsoft.Guardian.Cli.win-x64", "-Source $Source", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") + $argumentList = @("install", "Microsoft.Guardian.Cli", "-Source https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") if ($Version) { $argumentList += "-Version $Version" diff --git a/eng/common/sdl/trim-assets-version.ps1 b/eng/common/sdl/trim-assets-version.ps1 index a2e004877045..0daa2a9e9462 100644 --- a/eng/common/sdl/trim-assets-version.ps1 +++ b/eng/common/sdl/trim-assets-version.ps1 @@ -72,4 +72,4 @@ catch { Write-Host $_ Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ ExitWithExitCode 1 -} \ No newline at end of file +} diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md new file mode 100644 index 000000000000..4bf4cf41bd7c --- /dev/null +++ b/eng/common/template-guidance.md @@ -0,0 +1,133 @@ +# Overview + +Arcade provides templates for public (`/templates`) and 1ES pipeline templates (`/templates-official`) scenarios. Pipelines which are required to be managed by 1ES pipeline templates should reference `/templates-offical`, all other pipelines may reference `/templates`. + +## How to use + +Basic guidance is: + +- 1ES Pipeline Template or 1ES Microbuild template runs should reference `eng/common/templates-official`. Any internal production-graded pipeline should use these templates. + +- All other runs should reference `eng/common/templates`. + +See [azure-pipelines.yml](../../azure-pipelines.yml) (templates-official example) or [azure-pipelines-pr.yml](../../azure-pipelines-pr.yml) (templates example) for examples. + +#### The `templateIs1ESManaged` parameter + +The `templateIs1ESManaged` is available on most templates and affects which of the variants is used for nested templates. See [Development Notes](#development-notes) below for more information on the `templateIs1ESManaged1 parameter. + +- For templates under `job/`, `jobs/`, `steps`, or `post-build/`, this parameter must be explicitly set. + +## Multiple outputs + +1ES pipeline templates impose a policy where every publish artifact execution results in additional security scans being injected into your pipeline. When using `templates-official/jobs/jobs.yml`, Arcade reduces the number of additional security injections by gathering all publishing outputs into the [Build.ArtifactStagingDirectory](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services), and utilizing the [outputParentDirectory](https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/1es-pipeline-templates/features/outputs#multiple-outputs) feature of 1ES pipeline templates. When implementing your pipeline, if you ensure publish artifacts are located in the `$(Build.ArtifactStagingDirectory)`, and utilize the 1ES provided template context, then you can reduce the number of security scans for your pipeline. + +Example: +``` yaml +# azure-pipelines.yml +extends: + template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + parameters: + stages: + - stage: build + jobs: + - template: /eng/common/templates-official/jobs/jobs.yml@self + parameters: + # 1ES makes use of outputs to reduce security task injection overhead + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish logs from source' + continueOnError: true + condition: always() + targetPath: $(Build.ArtifactStagingDirectory)/artifacts/log + artifactName: Logs + jobs: + - job: Windows + steps: + - script: echo "friendly neighborhood" > artifacts/marvel/spiderman.txt + # copy build outputs to artifact staging directory for publishing + - task: CopyFiles@2 + displayName: Gather build output + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/artifacts/marvel' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/marvel' +``` + +Note: Multiple outputs are ONLY applicable to 1ES PT publishing (only usable when referencing `templates-official`). + +## Development notes + +**Folder / file structure** + +``` text +eng\common\ + [templates || templates-official]\ + job\ + job.yml (shim + artifact publishing logic) + onelocbuild.yml (shim) + publish-build-assets.yml (shim) + source-build.yml (shim) + source-index-stage1.yml (shim) + jobs\ + codeql-build.yml (shim) + jobs.yml (shim) + source-build.yml (shim) + post-build\ + post-build.yml (shim) + common-variabls.yml (shim) + setup-maestro-vars.yml (shim) + steps\ + publish-build-artifacts.yml (logic) + publish-pipeline-artifacts.yml (logic) + component-governance.yml (shim) + generate-sbom.yml (shim) + publish-logs.yml (shim) + retain-build.yml (shim) + send-to-helix.yml (shim) + source-build.yml (shim) + variables\ + pool-providers.yml (logic + redirect) # templates/variables/pool-providers.yml will redirect to templates-official/variables/pool-providers.yml if you are running in the internal project + sdl-variables.yml (logic) + core-templates\ + job\ + job.yml (logic) + onelocbuild.yml (logic) + publish-build-assets.yml (logic) + source-build.yml (logic) + source-index-stage1.yml (logic) + jobs\ + codeql-build.yml (logic) + jobs.yml (logic) + source-build.yml (logic) + post-build\ + common-variabls.yml (logic) + post-build.yml (logic) + setup-maestro-vars.yml (logic) + steps\ + component-governance.yml (logic) + generate-sbom.yml (logic) + publish-build-artifacts.yml (redirect) + publish-logs.yml (logic) + publish-pipeline-artifacts.yml (redirect) + retain-build.yml (logic) + send-to-helix.yml (logic) + source-build.yml (logic) + variables\ + pool-providers.yml (redirect) +``` + +In the table above, a file is designated as "shim", "logic", or "redirect". + +- shim - represents a yaml file which is an intermediate step between pipeline logic and .Net Core Engineering's templates (`core-templates`) and defines the `is1ESPipeline` parameter value. + +- logic - represents actual base template logic. + +- redirect- represents a file in `core-templates` which redirects to the "logic" file in either `templates` or `templates-official`. + +Logic for Arcade's templates live **primarily** in the `core-templates` folder. The exceptions to the location of the logic files are around artifact publishing, which is handled differently between 1es pipeline templates and standard templates. `templates` and `templates-official` provide shim entry points which redirect to `core-templates` while also defining the `is1ESPipeline` parameter. If a shim is referenced in `templates`, then `is1ESPipeline` is set to `false`. If a shim is referenced in `templates-official`, then `is1ESPipeline` is set to `true`. + +Within `templates` and `templates-official`, the templates at the "stages", and "jobs" / "job" level have been replaced with shims. Templates at the "steps" and "variables" level are typically too granular to be replaced with shims and instead persist logic which is directly applicable to either scenario. + +Within `core-templates`, there are a handful of places where logic is dependent on which shim entry point was used. In those places, we redirect back to the respective logic file in `templates` or `templates-official`. diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 4cca1114fcca..81ea7a261f2d 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -1,271 +1,81 @@ -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - parameters: -# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - cancelTimeoutInMinutes: '' - condition: '' - container: '' - continueOnError: false - dependsOn: '' - displayName: '' - pool: '' - steps: [] - strategy: '' - timeoutInMinutes: '' - variables: [] - workspace: '' - templateContext: '' - -# Job base template specific parameters - # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md - artifacts: '' - enableMicrobuild: false - microbuildUseESRP: true - enablePublishBuildArtifacts: false - enablePublishBuildAssets: false - enablePublishTestResults: false - enablePublishUsingPipelines: false - enableBuildRetry: false - disableComponentGovernance: '' - componentGovernanceIgnoreDirectories: '' - mergeTestResults: false - testRunTitle: '' - testResultsFormat: '' - name: '' - preSteps: [] - runAsPublic: false # Sbom related params enableSbom: true - PackageVersion: 7.0.0 + runAsPublic: false + PackageVersion: 9.0.0 BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom jobs: -- job: ${{ parameters.name }} - - ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: - cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} - - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - - ${{ if ne(parameters.container, '') }}: - container: ${{ parameters.container }} - - ${{ if ne(parameters.continueOnError, '') }}: - continueOnError: ${{ parameters.continueOnError }} - - ${{ if ne(parameters.dependsOn, '') }}: - dependsOn: ${{ parameters.dependsOn }} - - ${{ if ne(parameters.displayName, '') }}: - displayName: ${{ parameters.displayName }} - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - - ${{ if ne(parameters.strategy, '') }}: - strategy: ${{ parameters.strategy }} - - ${{ if ne(parameters.timeoutInMinutes, '') }}: - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - ${{ if ne(parameters.templateContext, '') }}: - templateContext: ${{ parameters.templateContext }} - - variables: - - ${{ if ne(parameters.enableTelemetry, 'false') }}: - - name: DOTNET_CLI_TELEMETRY_PROFILE - value: '$(Build.Repository.Uri)' - - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: - - name: EnableRichCodeNavigation - value: 'true' - # Retry signature validation up to three times, waiting 2 seconds between attempts. - # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures - - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY - value: 3,2000 - - ${{ each variable in parameters.variables }}: - # handle name-value variable syntax - # example: - # - name: [key] - # value: [value] - - ${{ if ne(variable.name, '') }}: - - name: ${{ variable.name }} - value: ${{ variable.value }} - - # handle variable groups - - ${{ if ne(variable.group, '') }}: - - group: ${{ variable.group }} - - # handle template variable syntax - # example: - # - template: path/to/template.yml - # parameters: - # [key]: [value] - - ${{ if ne(variable.template, '') }}: - - template: ${{ variable.template }} - ${{ if ne(variable.parameters, '') }}: - parameters: ${{ variable.parameters }} - - # handle key-value variable syntax. - # example: - # - [key]: [value] - - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: - - ${{ each pair in variable }}: - - name: ${{ pair.key }} - value: ${{ pair.value }} - - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds - - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: DotNet-HelixApi-Access - - ${{ if ne(parameters.workspace, '') }}: - workspace: ${{ parameters.workspace }} - - steps: - - ${{ if ne(parameters.preSteps, '') }}: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - ${{ if eq(parameters.microbuildUseESRP, true) }}: - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea - ${{ else }}: - ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca - env: - TeamName: $(_TeamName) - MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)' - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - - - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - - task: NuGetAuthenticate@1 - - - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: - - task: DownloadPipelineArtifact@2 - inputs: - buildType: current - artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} - targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} - itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} - - - ${{ each step in parameters.steps }}: - - ${{ step }} - - - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: - - task: RichCodeNavIndexer@0 - displayName: RichCodeNav Upload - inputs: - languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} - environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }} - richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin - uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} - continueOnError: true - - - template: /eng/common/templates-official/steps/component-governance.yml - parameters: - ${{ if eq(parameters.disableComponentGovernance, '') }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: - disableComponentGovernance: false - ${{ else }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - env: - TeamName: $(_TeamName) - - - ${{ if ne(parameters.artifacts.publish, '') }}: - - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - task: CopyFiles@2 - displayName: Gather binaries for publish to artifacts - inputs: - SourceFolder: 'artifacts/bin' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' - - task: CopyFiles@2 - displayName: Gather packages for publish to artifacts - inputs: - SourceFolder: 'artifacts/packages' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish pipeline artifacts - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - continueOnError: true - condition: always() - - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - - task: 1ES.PublishPipelineArtifact@1 - inputs: - targetPath: 'artifacts/log' - artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} - displayName: 'Publish logs' - continueOnError: true - condition: always() - - - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} - continueOnError: true - condition: always() - - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: - - task: PublishTestResults@2 - displayName: Publish XUnit Test Results - inputs: - testResultsFormat: 'xUnit' - testResultsFiles: '*.xml' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: - - task: PublishTestResults@2 - displayName: Publish TRX Test Results - inputs: - testResultsFormat: 'VSTest' - testResultsFiles: '*.trx' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: - - template: /eng/common/templates-official/steps/generate-sbom.yml - parameters: - PackageVersion: ${{ parameters.packageVersion}} - BuildDropPath: ${{ parameters.buildDropPath }} - IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - - task: 1ES.PublishPipelineArtifact@1 - inputs: - targetPath: '$(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration' - artifactName: 'BuildConfiguration' - displayName: 'Publish build retry configuration' - continueOnError: true +- template: /eng/common/core-templates/job/job.yml + parameters: + is1ESPipeline: true + + componentGovernanceSteps: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + - template: /eng/common/templates/steps/generate-sbom.yml + parameters: + PackageVersion: ${{ parameters.packageVersion }} + BuildDropPath: ${{ parameters.buildDropPath }} + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom + publishArtifacts: false + + # publish artifacts + # for 1ES managed templates, use the templateContext.output to handle multiple outputs. + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - output: buildArtifacts + displayName: Publish pipeline artifacts + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + condition: always() + continueOnError: true + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - output: pipelineArtifact + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log' + artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)_Attempt$(System.JobAttempt)') }} + displayName: 'Publish logs' + continueOnError: true + condition: always() + sbomEnabled: false # we don't need SBOM for logs + + - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: + - output: buildArtifacts + displayName: Publish Logs + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + publishLocation: Container + ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + continueOnError: true + condition: always() + sbomEnabled: false # we don't need SBOM for logs + + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - output: pipelineArtifact + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/eng/common/BuildConfiguration' + artifactName: 'BuildConfiguration' + displayName: 'Publish build retry configuration' + continueOnError: true + sbomEnabled: false # we don't need SBOM for BuildConfiguration + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + - output: pipelineArtifact + displayName: Publish SBOM manifest + continueOnError: true + targetPath: $(Build.ArtifactStagingDirectory)/sbom + artifactName: $(ARTIFACT_NAME) + + # add any outputs provided via root yaml + - ${{ if ne(parameters.templateContext.outputs, '') }}: + - ${{ each output in parameters.templateContext.outputs }}: + - ${{ output }} + + # add any remaining templateContext properties + ${{ each context in parameters.templateContext }}: + ${{ if and(ne(context.key, 'outputParentDirectory'), ne(context.key, 'outputs')) }}: + ${{ context.key }}: ${{ context.value }} + + ${{ each parameter in parameters }}: + ${{ if and(ne(parameter.key, 'templateContext'), ne(parameter.key, 'is1ESPipeline')) }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/onelocbuild.yml b/eng/common/templates-official/job/onelocbuild.yml index 68e7a65605c5..0f0c514b912d 100644 --- a/eng/common/templates-official/job/onelocbuild.yml +++ b/eng/common/templates-official/job/onelocbuild.yml @@ -1,112 +1,7 @@ -parameters: - # Optional: dependencies of the job - dependsOn: '' - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: '' - - CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex - GithubPat: $(BotAccount-dotnet-bot-repo-PAT) - - SourcesDirectory: $(System.DefaultWorkingDirectory) - CreatePr: true - AutoCompletePr: false - ReusePr: true - UseLfLineEndings: true - UseCheckedInLocProjectJson: false - SkipLocProjectJsonGeneration: false - LanguageSet: VS_Main_Languages - LclSource: lclFilesInRepo - LclPackageId: '' - RepoType: gitHub - GitHubOrg: dotnet - MirrorRepo: '' - MirrorBranch: main - condition: '' - JobNameSuffix: '' - jobs: -- job: OneLocBuild${{ parameters.JobNameSuffix }} - - dependsOn: ${{ parameters.dependsOn }} - - displayName: OneLocBuild${{ parameters.JobNameSuffix }} - - variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - - name: _GenerateLocProjectArguments - value: -SourcesDirectory ${{ parameters.SourcesDirectory }} - -LanguageSet "${{ parameters.LanguageSet }}" - -CreateNeutralXlfs - - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: - - name: _GenerateLocProjectArguments - value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - - steps: - - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: - - task: Powershell@2 - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1 - arguments: $(_GenerateLocProjectArguments) - displayName: Generate LocProject.json - condition: ${{ parameters.condition }} - - - task: OneLocBuild@2 - displayName: OneLocBuild - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - inputs: - locProj: eng/Localize/LocProject.json - outDir: $(Build.ArtifactStagingDirectory) - lclSource: ${{ parameters.LclSource }} - lclPackageId: ${{ parameters.LclPackageId }} - isCreatePrSelected: ${{ parameters.CreatePr }} - isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} - ${{ if eq(parameters.CreatePr, true) }}: - isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - isShouldReusePrSelected: ${{ parameters.ReusePr }} - packageSourceAuth: patAuth - patVariable: ${{ parameters.CeapexPat }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - repoType: ${{ parameters.RepoType }} - gitHubPatVariable: "${{ parameters.GithubPat }}" - ${{ if ne(parameters.MirrorRepo, '') }}: - isMirrorRepoSelected: true - gitHubOrganization: ${{ parameters.GitHubOrg }} - mirrorRepo: ${{ parameters.MirrorRepo }} - mirrorBranch: ${{ parameters.MirrorBranch }} - condition: ${{ parameters.condition }} - - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish Localization Files - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} +- template: /eng/common/core-templates/job/onelocbuild.yml + parameters: + is1ESPipeline: true - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish LocProject.json - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} \ No newline at end of file + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index 53109246d948..d667a70e8de7 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -1,177 +1,7 @@ -parameters: - configuration: 'Debug' - - # Optional: condition for the job to run - condition: '' - - # Optional: 'true' if future jobs should run even if this job fails - continueOnError: false - - # Optional: dependencies of the job - dependsOn: '' - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: {} - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishUsingPipelines: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishAssetsImmediately: false - - artifactsPublishingAdditionalParameters: '' - - signingValidationAdditionalParameters: '' - - repositoryAlias: self - - officialBuildId: '' - jobs: -- job: Asset_Registry_Publish - - dependsOn: ${{ parameters.dependsOn }} - timeoutInMinutes: 150 - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - displayName: Publish Assets - ${{ else }}: - displayName: Publish to Build Asset Registry - - variables: - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: Publish-Build-Assets - - group: AzureDevOps-Artifact-Feeds-Pats - - name: runCodesignValidationInjection - value: false - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates-official/post-build/common-variables.yml - - name: OfficialBuildId - ${{ if ne(parameters.officialBuildId, '') }}: - value: ${{ parameters.officialBuildId }} - ${{ else }}: - value: $(Build.BuildNumber) - - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Publishing-Internal - image: windows.vs2019.amd64 - os: windows - steps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - checkout: ${{ parameters.repositoryAlias }} - fetchDepth: 3 - clean: true - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - checkDownloadedFiles: true - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: NuGetAuthenticate@1 - - - task: AzureCLI@2 - displayName: Publish Build Assets - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 - arguments: > - -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:MaestroApiEndpoint=https://maestro.dot.net - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} - /p:OfficialBuildId=$(OfficialBuildId) - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: powershell@2 - displayName: Create ReleaseConfigs Artifact - inputs: - targetType: inline - script: | - New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force - $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt" - Add-Content -Path $filePath -Value $(BARBuildId) - Add-Content -Path $filePath -Value "$(DefaultChannels)" - Add-Content -Path $filePath -Value $(IsStableBuild) - - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish ReleaseConfigs Artifact - inputs: - PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - task: powershell@2 - displayName: Check if SymbolPublishingExclusionsFile.txt exists - inputs: - targetType: inline - script: | - $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt" - if(Test-Path -Path $symbolExclusionfile) - { - Write-Host "SymbolExclusionFile exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]true" - } - else{ - Write-Host "Symbols Exclusion file does not exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]false" - } - - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish SymbolPublishingExclusionsFile Artifact - condition: eq(variables['SymbolExclusionFile'], 'true') - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates-official/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion 3 - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' +- template: /eng/common/core-templates/job/publish-build-assets.yml + parameters: + is1ESPipeline: true - - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - - template: /eng/common/templates-official/steps/publish-logs.yml - parameters: - JobLabel: 'Publish_Artifacts_Logs' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml index f75400757d1e..1a480034b678 100644 --- a/eng/common/templates-official/job/source-build.yml +++ b/eng/common/templates-official/job/source-build.yml @@ -1,79 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. The template produces a server job with a - # default ID 'Source_Build_Complete' to put in a dependency list if necessary. - - # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. - jobNamePrefix: 'Source_Build' - - # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for - # managed-only repositories. This is an object with these properties: - # - # name: '' - # The name of the job. This is included in the job ID. - # targetRID: '' - # The name of the target RID to use, instead of the one auto-detected by Arcade. - # nonPortable: false - # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than - # linux-x64), and compiling against distro-provided packages rather than portable ones. - # skipPublishValidation: false - # Disables publishing validation. By default, a check is performed to ensure no packages are - # published by source-build. - # container: '' - # A container to use. Runs in docker. - # pool: {} - # A pool to use. Runs directly on an agent. - # buildScript: '' - # Specifies the build script to invoke to perform the build in the repo. The default - # './build.sh' should work for typical Arcade repositories, but this is customizable for - # difficult situations. - # jobProperties: {} - # A list of job properties to inject at the top level, for potential extensibility beyond - # container and pool. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: -- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} - displayName: Source-Build (${{ parameters.platform.name }}) - - ${{ each property in parameters.platform.jobProperties }}: - ${{ property.key }}: ${{ property.value }} - - ${{ if ne(parameters.platform.container, '') }}: - container: ${{ parameters.platform.container }} - - ${{ if eq(parameters.platform.pool, '') }}: - # The default VM host AzDO pool. This should be capable of running Docker containers: almost all - # source-build builds run in Docker, including the default managed platform. - # /eng/common/templates-official/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-azurelinux-3 - os: linux - - ${{ if ne(parameters.platform.pool, '') }}: - pool: ${{ parameters.platform.pool }} - - workspace: - clean: all +- template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: true - steps: - - ${{ if eq(parameters.enableInternalSources, true) }}: - - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml - - template: /eng/common/templates-official/steps/source-build.yml - parameters: - platform: ${{ parameters.platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml index 8de0dfaf3494..6d5ead316f92 100644 --- a/eng/common/templates-official/job/source-index-stage1.yml +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -1,83 +1,7 @@ -parameters: - runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20250425.2 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 - sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json - sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" - preSteps: [] - binlogPath: artifacts/log/Debug/Build.binlog - condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') - dependsOn: '' - pool: '' - jobs: -- job: SourceIndexStage1 - dependsOn: ${{ parameters.dependsOn }} - condition: ${{ parameters.condition }} - variables: - - name: SourceIndexUploadPackageVersion - value: ${{ parameters.sourceIndexUploadPackageVersion }} - - name: SourceIndexProcessBinlogPackageVersion - value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - - name: SourceIndexPackageSource - value: ${{ parameters.sourceIndexPackageSource }} - - name: BinlogPath - value: ${{ parameters.binlogPath }} - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $(DncEngPublicBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64.open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $(DncEngInternalBuildPool) - image: windows.vs2022.amd64 - os: windows - - steps: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - task: UseDotNet@2 - displayName: Use .NET 8 SDK - inputs: - packageType: sdk - version: 8.0.x - installationPath: $(Agent.TempDirectory)/dotnet - workingDirectory: $(Agent.TempDirectory) - - - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - displayName: Download Tools - # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. - workingDirectory: $(Agent.TempDirectory) - - - script: ${{ parameters.sourceIndexBuildCommand }} - displayName: Build Repository - - - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output - displayName: Process Binlog into indexable sln - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: AzureCLI@2 - displayName: Get stage 1 auth token - inputs: - azureSubscription: 'SourceDotNet Stage1 Publish' - addSpnToEnvironment: true - scriptType: 'ps' - scriptLocation: 'inlineScript' - inlineScript: | - echo "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$env:servicePrincipalId" - echo "##vso[task.setvariable variable=ARM_ID_TOKEN;issecret=true]$env:idToken" - echo "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$env:tenantId" - - - script: | - az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) - displayName: "Login to Azure" +- template: /eng/common/core-templates/job/source-index-stage1.yml + parameters: + is1ESPipeline: true - - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/jobs/codeql-build.yml b/eng/common/templates-official/jobs/codeql-build.yml index f6476912a861..a726322ecfe0 100644 --- a/eng/common/templates-official/jobs/codeql-build.yml +++ b/eng/common/templates-official/jobs/codeql-build.yml @@ -1,31 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - # Optional: if specified, restore and use this version of Guardian instead of the default. - overrideGuardianVersion: '' - jobs: -- template: /eng/common/templates-official/jobs/jobs.yml +- template: /eng/common/core-templates/jobs/codeql-build.yml parameters: - enableMicrobuild: false - enablePublishBuildArtifacts: false - enablePublishTestResults: false - enablePublishBuildAssets: false - enablePublishUsingPipelines: false - enableTelemetry: true + is1ESPipeline: true - variables: - - group: Publish-Build-Assets - # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in - # sync with the packages.config file. - - name: DefaultGuardianVersion - value: 0.109.0 - - name: GuardianPackagesConfigFile - value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config - - name: GuardianVersion - value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} - - jobs: ${{ parameters.jobs }} - + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/jobs/jobs.yml b/eng/common/templates-official/jobs/jobs.yml index 03aa64e1741f..007deddaea0f 100644 --- a/eng/common/templates-official/jobs/jobs.yml +++ b/eng/common/templates-official/jobs/jobs.yml @@ -1,101 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: Enable publishing using release pipelines - enablePublishUsingPipelines: false - - # Optional: Enable running the source-build jobs to build repo from source - enableSourceBuild: false - - # Optional: Parameters for source-build template. - # See /eng/common/templates-official/jobs/source-build.yml for options - sourceBuildParameters: [] - - graphFileGeneration: - # Optional: Enable generating the graph files at the end of the build - enabled: false - # Optional: Include toolset dependencies in the generated graph files - includeToolset: false - - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - - # Optional: Override automatically derived dependsOn value for "publish build assets" job - publishBuildAssetsDependsOn: '' - - # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. - publishAssetsImmediately: false - - # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) - artifactsPublishingAdditionalParameters: '' - signingValidationAdditionalParameters: '' - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - enableSourceIndex: false - sourceIndexParams: {} - repositoryAlias: self - officialBuildId: '' - -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - jobs: -- ${{ each job in parameters.jobs }}: - - template: ../job/job.yml - parameters: - # pass along parameters - ${{ each parameter in parameters }}: - ${{ if ne(parameter.key, 'jobs') }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # pass along job properties - ${{ each property in job }}: - ${{ if ne(property.key, 'job') }}: - ${{ property.key }}: ${{ property.value }} - - name: ${{ job.job }} - -- ${{ if eq(parameters.enableSourceBuild, true) }}: - - template: /eng/common/templates-official/jobs/source-build.yml - parameters: - allCompletedJobId: Source_Build_Complete - ${{ each parameter in parameters.sourceBuildParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if eq(parameters.enableSourceIndex, 'true') }}: - - template: ../job/source-index-stage1.yml - parameters: - runAsPublic: ${{ parameters.runAsPublic }} - ${{ each parameter in parameters.sourceIndexParams }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: - - template: ../job/publish-build-assets.yml - parameters: - continueOnError: ${{ parameters.continueOnError }} - dependsOn: - - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.publishBuildAssetsDependsOn }}: - - ${{ job.job }} - - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.jobs }}: - - ${{ job.job }} - - ${{ if eq(parameters.enableSourceBuild, true) }}: - - Source_Build_Complete +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: true - runAsPublic: ${{ parameters.runAsPublic }} - publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} - publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} - enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} - signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} - repositoryAlias: ${{ parameters.repositoryAlias }} - officialBuildId: ${{ parameters.officialBuildId }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/jobs/source-build.yml b/eng/common/templates-official/jobs/source-build.yml index 21a346fbd6c7..483e7b611f34 100644 --- a/eng/common/templates-official/jobs/source-build.yml +++ b/eng/common/templates-official/jobs/source-build.yml @@ -1,59 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. A job is created for each platform, as - # well as an optional server job that completes when all platform jobs complete. - - # The name of the "join" job for all source-build platforms. If set to empty string, the job is - # not included. Existing repo pipelines can use this job depend on all source-build jobs - # completing without maintaining a separate list of every single job ID: just depend on this one - # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. - allCompletedJobId: '' - - # See /eng/common/templates-official/job/source-build.yml - jobNamePrefix: 'Source_Build' - - # This is the default platform provided by Arcade, intended for use by a managed-only repo. - defaultManagedPlatform: - name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-9-amd64' - - # Defines the platforms on which to run build jobs. One job is created for each platform, and the - # object in this array is sent to the job template as 'platform'. If no platforms are specified, - # one job runs on 'defaultManagedPlatform'. - platforms: [] - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal nuget and blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: +- template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: true -- ${{ if ne(parameters.allCompletedJobId, '') }}: - - job: ${{ parameters.allCompletedJobId }} - displayName: Source-Build Complete - pool: server - dependsOn: - - ${{ each platform in parameters.platforms }}: - - ${{ parameters.jobNamePrefix }}_${{ platform.name }} - - ${{ if eq(length(parameters.platforms), 0) }}: - - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} - -- ${{ each platform in parameters.platforms }}: - - template: /eng/common/templates-official/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} - -- ${{ if eq(length(parameters.platforms), 0) }}: - - template: /eng/common/templates-official/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ parameters.defaultManagedPlatform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/post-build/common-variables.yml b/eng/common/templates-official/post-build/common-variables.yml index 173914f2364a..c32fc49233f8 100644 --- a/eng/common/templates-official/post-build/common-variables.yml +++ b/eng/common/templates-official/post-build/common-variables.yml @@ -1,22 +1,8 @@ variables: - - group: Publish-Build-Assets +- template: /eng/common/core-templates/post-build/common-variables.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true - # Whether the build is internal or not - - name: IsInternalBuild - value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} - - # Default Maestro++ API Endpoint and API Version - - name: MaestroApiEndPoint - value: "https://maestro.dot.net" - - name: MaestroApiAccessToken - value: $(MaestroAccessToken) - - name: MaestroApiVersion - value: "2020-02-20" - - - name: SourceLinkCLIVersion - value: 3.0.0 - - name: SymbolToolVersion - value: 1.0.1 - - - name: runCodesignValidationInjection - value: false + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml index 07837055ee30..2364c0fd4a52 100644 --- a/eng/common/templates-official/post-build/post-build.yml +++ b/eng/common/templates-official/post-build/post-build.yml @@ -1,291 +1,8 @@ -parameters: - # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. - # Publishing V1 is no longer supported - # Publishing V2 is no longer supported - # Publishing V3 is the default - - name: publishingInfraVersion - displayName: Which version of publishing should be used to promote the build definition? - type: number - default: 3 - values: - - 3 - - - name: BARBuildId - displayName: BAR Build Id - type: number - default: 0 - - - name: PromoteToChannelIds - displayName: Channel to promote BARBuildId to - type: string - default: '' - - - name: enableSourceLinkValidation - displayName: Enable SourceLink validation - type: boolean - default: false - - - name: enableSigningValidation - displayName: Enable signing validation - type: boolean - default: true - - - name: enableSymbolValidation - displayName: Enable symbol validation - type: boolean - default: false - - - name: enableNugetValidation - displayName: Enable NuGet validation - type: boolean - default: true - - - name: publishInstallersAndChecksums - displayName: Publish installers and checksums - type: boolean - default: true - - - name: SDLValidationParameters - type: object - default: - enable: false - publishGdn: false - continueOnError: false - params: '' - artifactNames: '' - downloadArtifacts: true - - # These parameters let the user customize the call to sdk-task.ps1 for publishing - # symbols & general artifacts as well as for signing validation - - name: symbolPublishingAdditionalParameters - displayName: Symbol publishing additional parameters - type: string - default: '' - - - name: artifactsPublishingAdditionalParameters - displayName: Artifact publishing additional parameters - type: string - default: '' - - - name: signingValidationAdditionalParameters - displayName: Signing validation additional parameters - type: string - default: '' - - # Which stages should finish execution before post-build stages start - - name: validateDependsOn - type: object - default: - - build - - - name: publishDependsOn - type: object - default: - - Validate - - # Optional: Call asset publishing rather than running in a separate stage - - name: publishAssetsImmediately - type: boolean - default: false - stages: -- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - - stage: Validate - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Validate Build Assets - variables: - - template: common-variables.yml - - template: /eng/common/templates-official/variables/pool-providers.yml - jobs: - - job: - displayName: NuGet Validation - condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - - - job: - displayName: Signing Validation - condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - itemPattern: | - ** - !**/Microsoft.SourceBuild.Intermediate.*.nupkg - - # This is necessary whenever we want to publish/restore to an AzDO private feed - # Since sdk-task.ps1 tries to restore packages we need to do this authentication here - # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@1 - displayName: 'Authenticate to AzDO Feeds' - - # Signing validation will optionally work with the buildmanifest file which is downloaded from - # Azure DevOps above. - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore -msbuildEngine vs - /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' - /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' - ${{ parameters.signingValidationAdditionalParameters }} - - - template: ../steps/publish-logs.yml - parameters: - StageLabel: 'Validation' - JobLabel: 'Signing' - BinlogToolVersion: $(BinlogToolVersion) - - - job: - displayName: SourceLink Validation - condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) - -GHCommit $(Build.SourceVersion) - -SourcelinkCliVersion $(SourceLinkCLIVersion) - continueOnError: true - -- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - - stage: publish_using_darc - ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - dependsOn: ${{ parameters.publishDependsOn }} - ${{ else }}: - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Publish using Darc - variables: - - template: common-variables.yml - - template: /eng/common/templates-official/variables/pool-providers.yml - jobs: - - job: - displayName: Publish Using Darc - timeoutInMinutes: 120 - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: NetCore1ESPool-Publishing-Internal - image: windows.vs2019.amd64 - os: windows - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: NuGetAuthenticate@1 - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x +- template: /eng/common/core-templates/post-build/post-build.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/post-build/setup-maestro-vars.yml b/eng/common/templates-official/post-build/setup-maestro-vars.yml index 3a56abf8922e..024397d87864 100644 --- a/eng/common/templates-official/post-build/setup-maestro-vars.yml +++ b/eng/common/templates-official/post-build/setup-maestro-vars.yml @@ -1,70 +1,8 @@ -parameters: - BARBuildId: '' - PromoteToChannelIds: '' - steps: - - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Release Configs - inputs: - buildType: current - artifactName: ReleaseConfigs - checkDownloadedFiles: true - - - task: PowerShell@2 - name: setReleaseVars - displayName: Set Release Configs Vars - inputs: - targetType: inline - pwsh: true - script: | - try { - if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { - $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt - - $BarId = $Content | Select -Index 0 - $Channels = $Content | Select -Index 1 - $IsStableBuild = $Content | Select -Index 2 - - $AzureDevOpsProject = $Env:System_TeamProject - $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId - $AzureDevOpsBuildId = $Env:Build_BuildId - } - else { - $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}" - - $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]' - $apiHeaders.Add('Accept', 'application/json') - $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}") - - $buildInfo = try { Invoke-WebRequest -UseBasicParsing -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } - - $BarId = $Env:BARBuildId - $Channels = $Env:PromoteToMaestroChannels -split "," - $Channels = $Channels -join "][" - $Channels = "[$Channels]" - - $IsStableBuild = $buildInfo.stable - $AzureDevOpsProject = $buildInfo.azureDevOpsProject - $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId - $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId - } - - Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" - Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" - Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" +- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true - Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" - Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" - Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" - } - catch { - Write-Host $_ - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - exit 1 - } - env: - MAESTRO_API_TOKEN: $(MaestroApiAccessToken) - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml index cbba0596709d..30bb3985ca2b 100644 --- a/eng/common/templates-official/steps/component-governance.yml +++ b/eng/common/templates-official/steps/component-governance.yml @@ -1,13 +1,7 @@ -parameters: - disableComponentGovernance: false - componentGovernanceIgnoreDirectories: '' - steps: -- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable -- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - - task: ComponentGovernanceComponentDetection@0 - continueOnError: true - inputs: - ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} \ No newline at end of file +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/enable-internal-runtimes.yml b/eng/common/templates-official/steps/enable-internal-runtimes.yml index 93a8394a666b..f9dd238c6cd5 100644 --- a/eng/common/templates-official/steps/enable-internal-runtimes.yml +++ b/eng/common/templates-official/steps/enable-internal-runtimes.yml @@ -1,28 +1,9 @@ # Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' # variable with the base64-encoded SAS token, by default - -parameters: -- name: federatedServiceConnection - type: string - default: 'dotnetbuilds-internal-read' -- name: outputVariableName - type: string - default: 'dotnetbuilds-internal-container-read-token-base64' -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: true - steps: -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - template: /eng/common/templates-official/steps/get-delegation-sas.yml - parameters: - federatedServiceConnection: ${{ parameters.federatedServiceConnection }} - outputVariableName: ${{ parameters.outputVariableName }} - expiryInHours: ${{ parameters.expiryInHours }} - base64Encode: ${{ parameters.base64Encode }} - storageAccount: dotnetbuilds - container: internal - permissions: rl +- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/enable-internal-sources.yml b/eng/common/templates-official/steps/enable-internal-sources.yml new file mode 100644 index 000000000000..e6d57182284d --- /dev/null +++ b/eng/common/templates-official/steps/enable-internal-sources.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/generate-sbom.yml b/eng/common/templates-official/steps/generate-sbom.yml index 1536353566c7..9a89a4706d94 100644 --- a/eng/common/templates-official/steps/generate-sbom.yml +++ b/eng/common/templates-official/steps/generate-sbom.yml @@ -1,48 +1,7 @@ -# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. -# PackageName - The name of the package this SBOM represents. -# PackageVersion - The version of the package this SBOM represents. -# ManifestDirPath - The path of the directory where the generated manifest files will be placed -# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. - -parameters: - PackageVersion: 8.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - PackageName: '.NET' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom - IgnoreDirectories: '' - sbomContinueOnError: true - steps: -- task: PowerShell@2 - displayName: Prep for SBOM generation in (Non-linux) - condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) - inputs: - filePath: ./eng/common/generate-sbom-prep.ps1 - arguments: ${{parameters.manifestDirPath}} - -# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 -- script: | - chmod +x ./eng/common/generate-sbom-prep.sh - ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} - displayName: Prep for SBOM generation in (Linux) - condition: eq(variables['Agent.Os'], 'Linux') - continueOnError: ${{ parameters.sbomContinueOnError }} - -- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: 'Generate SBOM manifest' - continueOnError: ${{ parameters.sbomContinueOnError }} - inputs: - PackageName: ${{ parameters.packageName }} - BuildDropPath: ${{ parameters.buildDropPath }} - PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) - ${{ if ne(parameters.IgnoreDirectories, '') }}: - AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' - -- task: 1ES.PublishPipelineArtifact@1 - displayName: Publish SBOM manifest - continueOnError: ${{parameters.sbomContinueOnError}} - inputs: - targetPath: '${{parameters.manifestDirPath}}' - artifactName: $(ARTIFACT_NAME) +- template: /eng/common/core-templates/steps/generate-sbom.yml + parameters: + is1ESPipeline: true + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/get-delegation-sas.yml b/eng/common/templates-official/steps/get-delegation-sas.yml index c690cc0a070c..c5a9c1f8275c 100644 --- a/eng/common/templates-official/steps/get-delegation-sas.yml +++ b/eng/common/templates-official/steps/get-delegation-sas.yml @@ -1,52 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: false -- name: storageAccount - type: string -- name: container - type: string -- name: permissions - type: string - default: 'rl' - steps: -- task: AzureCLI@2 - displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - # Calculate the expiration of the SAS token and convert to UTC - $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - - # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads - # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 - $sas = "" - do { - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - } while($sas.IndexOf('/') -ne -1) - - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - - if ('${{ parameters.base64Encode }}' -eq 'true') { - $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) - } +- template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + is1ESPipeline: true - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/get-federated-access-token.yml b/eng/common/templates-official/steps/get-federated-access-token.yml index 55e33bd38f71..c8dcf6b81392 100644 --- a/eng/common/templates-official/steps/get-federated-access-token.yml +++ b/eng/common/templates-official/steps/get-federated-access-token.yml @@ -1,40 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: stepName - type: string - default: 'getFederatedAccessToken' -- name: condition - type: string - default: '' -# Resource to get a token for. Common values include: -# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps -# - 'https://storage.azure.com/' for storage -# Defaults to Azure DevOps -- name: resource - type: string - default: '499b84ac-1321-427f-aa17-267ca6975798' -- name: isStepOutputVariable - type: boolean - default: false - steps: -- task: AzureCLI@2 - displayName: 'Getting federated access token for feeds' - name: ${{ parameters.stepName }} - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" - exit 1 - } - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file +- template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/publish-build-artifacts.yml b/eng/common/templates-official/steps/publish-build-artifacts.yml new file mode 100644 index 000000000000..100a3fc98493 --- /dev/null +++ b/eng/common/templates-official/steps/publish-build-artifacts.yml @@ -0,0 +1,41 @@ +parameters: +- name: displayName + type: string + default: 'Publish to Build Artifact' + +- name: condition + type: string + default: succeeded() + +- name: artifactName + type: string + +- name: pathToPublish + type: string + +- name: continueOnError + type: boolean + default: false + +- name: publishLocation + type: string + default: 'Container' + +- name: is1ESPipeline + type: boolean + default: true + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates-official cannot be referenced from a non-1ES managed template': error +- task: 1ES.PublishBuildArtifacts@1 + displayName: ${{ parameters.displayName }} + condition: ${{ parameters.condition }} + ${{ if parameters.continueOnError }}: + continueOnError: ${{ parameters.continueOnError }} + inputs: + PublishLocation: ${{ parameters.publishLocation }} + PathtoPublish: ${{ parameters.pathToPublish }} + ${{ if parameters.artifactName }}: + ArtifactName: ${{ parameters.artifactName }} + diff --git a/eng/common/templates-official/steps/publish-logs.yml b/eng/common/templates-official/steps/publish-logs.yml index af5a40b64c4b..579fd531e94c 100644 --- a/eng/common/templates-official/steps/publish-logs.yml +++ b/eng/common/templates-official/steps/publish-logs.yml @@ -1,23 +1,7 @@ -parameters: - StageLabel: '' - JobLabel: '' - steps: -- task: Powershell@2 - displayName: Prepare Binlogs to Upload - inputs: - targetType: inline - script: | - New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - continueOnError: true - condition: always() +- template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: true -- task: 1ES.PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/PostBuildLogs' - PublishLocation: Container - ArtifactName: PostBuildLogs - continueOnError: true - condition: always() + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml new file mode 100644 index 000000000000..172f9f0fdc97 --- /dev/null +++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,28 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: true + +- name: args + type: object + default: {} + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates-official cannot be referenced from a non-1ES managed template': error +- task: 1ES.PublishPipelineArtifact@1 + displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} + ${{ if parameters.args.condition }}: + condition: ${{ parameters.args.condition }} + ${{ else }}: + condition: succeeded() + ${{ if parameters.args.continueOnError }}: + continueOnError: ${{ parameters.args.continueOnError }} + inputs: + targetPath: ${{ parameters.args.targetPath }} + ${{ if parameters.args.artifactName }}: + artifactName: ${{ parameters.args.artifactName }} + ${{ if parameters.args.properties }}: + properties: ${{ parameters.args.properties }} + ${{ if parameters.args.sbomEnabled }}: + sbomEnabled: ${{ parameters.args.sbomEnabled }} diff --git a/eng/common/templates-official/steps/retain-build.yml b/eng/common/templates-official/steps/retain-build.yml index 83d97a26a01f..5594551508a3 100644 --- a/eng/common/templates-official/steps/retain-build.yml +++ b/eng/common/templates-official/steps/retain-build.yml @@ -1,28 +1,7 @@ -parameters: - # Optional azure devops PAT with build execute permissions for the build's organization, - # only needed if the build that should be retained ran on a different organization than - # the pipeline where this template is executing from - Token: '' - # Optional BuildId to retain, defaults to the current running build - BuildId: '' - # Azure devops Organization URI for the build in the https://dev.azure.com/ format. - # Defaults to the organization the current pipeline is running on - AzdoOrgUri: '$(System.CollectionUri)' - # Azure devops project for the build. Defaults to the project the current pipeline is running on - AzdoProject: '$(System.TeamProject)' - steps: - - task: powershell@2 - inputs: - targetType: 'filePath' - filePath: eng/common/retain-build.ps1 - pwsh: true - arguments: > - -AzdoOrgUri: ${{parameters.AzdoOrgUri}} - -AzdoProject ${{parameters.AzdoProject}} - -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} - -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} - displayName: Enable permanent build retention - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - BUILD_ID: $(Build.BuildId) \ No newline at end of file +- template: /eng/common/core-templates/steps/retain-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/send-to-helix.yml b/eng/common/templates-official/steps/send-to-helix.yml index 22f2501307d4..6500f21bf845 100644 --- a/eng/common/templates-official/steps/send-to-helix.yml +++ b/eng/common/templates-official/steps/send-to-helix.yml @@ -1,92 +1,7 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixConfiguration: '' # optional -- additional property attached to a job - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - HelixProjectArguments: '' # optional -- arguments passed to the build command for helixpublish.proj - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} +- template: /eng/common/core-templates/steps/send-to-helix.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/source-build.yml b/eng/common/templates-official/steps/source-build.yml index c307825c9122..8f92c49e7b06 100644 --- a/eng/common/templates-official/steps/source-build.yml +++ b/eng/common/templates-official/steps/source-build.yml @@ -1,135 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. - - # This is a 'steps' template, and is intended for advanced scenarios where the existing build - # infra has a careful build methodology that must be followed. For example, a repo - # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline - # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to - # GitHub. Using this steps template leaves room for that infra to be included. - - # Defines the platform on which to run the steps. See 'eng/common/templates-official/job/source-build.yml' - # for details. The entire object is described in the 'job' template for simplicity, even though - # the usage of the properties on this object is split between the 'job' and 'steps' templates. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - steps: -# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) -- script: | - set -x - df -h - - # If building on the internal project, the artifact feeds variable may be available (usually only if needed) - # In that case, call the feed setup script to add internal feeds corresponding to public ones. - # In addition, add an msbuild argument to copy the WIP from the repo to the target build location. - # This is because SetupNuGetSources.sh will alter the current NuGet.config file, and we need to preserve those - # changes. - internalRestoreArgs= - if [ '$(dn-bot-dnceng-artifact-feeds-rw)' != '$''(dn-bot-dnceng-artifact-feeds-rw)' ]; then - # Temporarily work around https://github.com/dotnet/arcade/issues/7709 - chmod +x $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh - $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh $(System.DefaultWorkingDirectory)/NuGet.config $(dn-bot-dnceng-artifact-feeds-rw) - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - - # If building on the internal project, the internal storage variable may be available (usually only if needed) - # In that case, add variables to allow the download of internal runtimes if the specified versions are not found - # in the default public locations. - internalRuntimeDownloadArgs= - if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' - fi - - buildConfig=Release - # Check if AzDO substitutes in a build config from a variable, and use it if so. - if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then - buildConfig='$(_BuildConfig)' - fi - - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - - targetRidArgs= - if [ '${{ parameters.platform.targetRID }}' != '' ]; then - targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' - fi - - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml - fi - - ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ - --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ - $officialBuildArgs \ - $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ - $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ - /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ - /p:ArcadeBuildFromSource=true \ - /p:AssetManifestFileName=$assetManifestFileName - displayName: Build - -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(System.DefaultWorkingDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/source-build/self/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - -- task: 1ES.PublishPipelineArtifact@1 - displayName: Publish BuildLogs - inputs: - targetPath: '$(Build.StagingDirectory)/BuildLogs' - artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) - continueOnError: true - condition: succeededOrFailed() +- template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: true -# Manually inject component detection so that we can ignore the source build upstream cache, which contains -# a nupkg cache of input packages (a local feed). -# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' -# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets -- task: ComponentGovernanceComponentDetection@0 - displayName: Component Detection (Exclude upstream cache) - inputs: - ${{ if eq(length(parameters.cgIgnoreDirectories), 0) }}: - ignoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/source-build/self/src/artifacts/obj/source-built-upstream-cache' - ${{ else }}: - ignoreDirectories: ${{ join(',', parameters.cgIgnoreDirectories) }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 80454d5a5587..5bdd3dd85fd2 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -1,263 +1,82 @@ -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - -parameters: -# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - cancelTimeoutInMinutes: '' - condition: '' - container: '' - continueOnError: false - dependsOn: '' - displayName: '' - pool: '' - steps: [] - strategy: '' - timeoutInMinutes: '' - variables: [] - workspace: '' - templateContext: '' - -# Job base template specific parameters - # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md - artifacts: '' - enableMicrobuild: false +parameters: enablePublishBuildArtifacts: false - enablePublishBuildAssets: false - enablePublishTestResults: false - enablePublishUsingPipelines: false - enableBuildRetry: false disableComponentGovernance: '' componentGovernanceIgnoreDirectories: '' - mergeTestResults: false - testRunTitle: '' - testResultsFormat: '' - name: '' - preSteps: [] - runAsPublic: false # Sbom related params enableSbom: true - PackageVersion: 7.0.0 + runAsPublic: false + PackageVersion: 9.0.0 BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' jobs: -- job: ${{ parameters.name }} - - ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: - cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} - - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - - ${{ if ne(parameters.container, '') }}: - container: ${{ parameters.container }} - - ${{ if ne(parameters.continueOnError, '') }}: - continueOnError: ${{ parameters.continueOnError }} - - ${{ if ne(parameters.dependsOn, '') }}: - dependsOn: ${{ parameters.dependsOn }} - - ${{ if ne(parameters.displayName, '') }}: - displayName: ${{ parameters.displayName }} - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - - ${{ if ne(parameters.strategy, '') }}: - strategy: ${{ parameters.strategy }} - - ${{ if ne(parameters.timeoutInMinutes, '') }}: - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - ${{ if ne(parameters.templateContext, '') }}: - templateContext: ${{ parameters.templateContext }} - - variables: - - ${{ if ne(parameters.enableTelemetry, 'false') }}: - - name: DOTNET_CLI_TELEMETRY_PROFILE - value: '$(Build.Repository.Uri)' - - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: - - name: EnableRichCodeNavigation - value: 'true' - # Retry signature validation up to three times, waiting 2 seconds between attempts. - # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures - - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY - value: 3,2000 - - ${{ each variable in parameters.variables }}: - # handle name-value variable syntax - # example: - # - name: [key] - # value: [value] - - ${{ if ne(variable.name, '') }}: - - name: ${{ variable.name }} - value: ${{ variable.value }} - - # handle variable groups - - ${{ if ne(variable.group, '') }}: - - group: ${{ variable.group }} +- template: /eng/common/core-templates/job/job.yml + parameters: + is1ESPipeline: false - # handle template variable syntax - # example: - # - template: path/to/template.yml - # parameters: - # [key]: [value] - - ${{ if ne(variable.template, '') }}: - - template: ${{ variable.template }} - ${{ if ne(variable.parameters, '') }}: - parameters: ${{ variable.parameters }} + ${{ each parameter in parameters }}: + ${{ if and(ne(parameter.key, 'steps'), ne(parameter.key, 'is1ESPipeline')) }}: + ${{ parameter.key }}: ${{ parameter.value }} - # handle key-value variable syntax. - # example: - # - [key]: [value] - - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: - - ${{ each pair in variable }}: - - name: ${{ pair.key }} - value: ${{ pair.value }} + steps: + - ${{ each step in parameters.steps }}: + - ${{ step }} - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds - - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: DotNet-HelixApi-Access - - ${{ if ne(parameters.workspace, '') }}: - workspace: ${{ parameters.workspace }} - - steps: - - ${{ if ne(parameters.preSteps, '') }}: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea + componentGovernanceSteps: + - template: /eng/common/templates/steps/component-governance.yml + parameters: + ${{ if eq(parameters.disableComponentGovernance, '') }}: + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: + disableComponentGovernance: false ${{ else }}: - ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca - env: - TeamName: $(_TeamName) - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - - - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - - task: NuGetAuthenticate@1 - - - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: - - task: DownloadPipelineArtifact@2 - inputs: - buildType: current - artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} - targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} - itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} - - - ${{ each step in parameters.steps }}: - - ${{ step }} - - - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: - - task: RichCodeNavIndexer@0 - displayName: RichCodeNav Upload - inputs: - languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} - environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }} - richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin - uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} - continueOnError: true - - - template: /eng/common/templates/steps/component-governance.yml - parameters: - ${{ if eq(parameters.disableComponentGovernance, '') }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: - disableComponentGovernance: false + disableComponentGovernance: true ${{ else }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - env: - TeamName: $(_TeamName) - - - ${{ if ne(parameters.artifacts.publish, '') }}: - - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - task: CopyFiles@2 - displayName: Gather binaries for publish to artifacts - inputs: - SourceFolder: 'artifacts/bin' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' - - task: CopyFiles@2 - displayName: Gather packages for publish to artifacts - inputs: - SourceFolder: 'artifacts/packages' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' - - task: PublishBuildArtifacts@1 - displayName: Publish pipeline artifacts - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - continueOnError: true - condition: always() - - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - - publish: artifacts/log - artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} - displayName: Publish logs - continueOnError: true - condition: always() - - - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} - continueOnError: true - condition: always() - - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: - - task: PublishTestResults@2 - displayName: Publish XUnit Test Results - inputs: - testResultsFormat: 'xUnit' - testResultsFiles: '*.xml' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: - - task: PublishTestResults@2 - displayName: Publish TRX Test Results - inputs: - testResultsFormat: 'VSTest' - testResultsFiles: '*.trx' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: - - template: /eng/common/templates/steps/generate-sbom.yml - parameters: - PackageVersion: ${{ parameters.packageVersion}} - BuildDropPath: ${{ parameters.buildDropPath }} - IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - - publish: $(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration - artifact: BuildConfiguration - displayName: Publish build retry configuration - continueOnError: true + disableComponentGovernance: ${{ parameters.disableComponentGovernance }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + + artifactPublishSteps: + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish pipeline artifacts + pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + publishLocation: Container + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + continueOnError: true + condition: always() + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log' + artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} + displayName: 'Publish logs' + continueOnError: true + condition: always() + sbomEnabled: false # we don't need SBOM for logs + + - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish Logs + pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + publishLocation: Container + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + continueOnError: true + condition: always() + + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + targetPath: '$(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration' + artifactName: 'BuildConfiguration' + displayName: 'Publish build retry configuration' + continueOnError: true + sbomEnabled: false # we don't need SBOM for BuildConfiguration diff --git a/eng/common/templates/job/onelocbuild.yml b/eng/common/templates/job/onelocbuild.yml index 2cd3840c9927..ff829dc4c700 100644 --- a/eng/common/templates/job/onelocbuild.yml +++ b/eng/common/templates/job/onelocbuild.yml @@ -1,109 +1,7 @@ -parameters: - # Optional: dependencies of the job - dependsOn: '' - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: '' - - CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex - GithubPat: $(BotAccount-dotnet-bot-repo-PAT) - - SourcesDirectory: $(System.DefaultWorkingDirectory) - CreatePr: true - AutoCompletePr: false - ReusePr: true - UseLfLineEndings: true - UseCheckedInLocProjectJson: false - SkipLocProjectJsonGeneration: false - LanguageSet: VS_Main_Languages - LclSource: lclFilesInRepo - LclPackageId: '' - RepoType: gitHub - GitHubOrg: dotnet - MirrorRepo: '' - MirrorBranch: main - condition: '' - JobNameSuffix: '' - jobs: -- job: OneLocBuild${{ parameters.JobNameSuffix }} - - dependsOn: ${{ parameters.dependsOn }} - - displayName: OneLocBuild${{ parameters.JobNameSuffix }} - - variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - - name: _GenerateLocProjectArguments - value: -SourcesDirectory ${{ parameters.SourcesDirectory }} - -LanguageSet "${{ parameters.LanguageSet }}" - -CreateNeutralXlfs - - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: - - name: _GenerateLocProjectArguments - value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: - - task: Powershell@2 - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1 - arguments: $(_GenerateLocProjectArguments) - displayName: Generate LocProject.json - condition: ${{ parameters.condition }} - - - task: OneLocBuild@2 - displayName: OneLocBuild - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - inputs: - locProj: eng/Localize/LocProject.json - outDir: $(Build.ArtifactStagingDirectory) - lclSource: ${{ parameters.LclSource }} - lclPackageId: ${{ parameters.LclPackageId }} - isCreatePrSelected: ${{ parameters.CreatePr }} - isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} - ${{ if eq(parameters.CreatePr, true) }}: - isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - isShouldReusePrSelected: ${{ parameters.ReusePr }} - packageSourceAuth: patAuth - patVariable: ${{ parameters.CeapexPat }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - repoType: ${{ parameters.RepoType }} - gitHubPatVariable: "${{ parameters.GithubPat }}" - ${{ if ne(parameters.MirrorRepo, '') }}: - isMirrorRepoSelected: true - gitHubOrganization: ${{ parameters.GitHubOrg }} - mirrorRepo: ${{ parameters.MirrorRepo }} - mirrorBranch: ${{ parameters.MirrorBranch }} - condition: ${{ parameters.condition }} - - - task: PublishBuildArtifacts@1 - displayName: Publish Localization Files - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} +- template: /eng/common/core-templates/job/onelocbuild.yml + parameters: + is1ESPipeline: false - - task: PublishBuildArtifacts@1 - displayName: Publish LocProject.json - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} \ No newline at end of file + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index b4ece772c326..ab2edec2adb5 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -1,173 +1,7 @@ -parameters: - configuration: 'Debug' - - # Optional: condition for the job to run - condition: '' - - # Optional: 'true' if future jobs should run even if this job fails - continueOnError: false - - # Optional: dependencies of the job - dependsOn: '' - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: {} - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishUsingPipelines: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishAssetsImmediately: false - - artifactsPublishingAdditionalParameters: '' - - signingValidationAdditionalParameters: '' - - repositoryAlias: self - - officialBuildId: '' - jobs: -- job: Asset_Registry_Publish - - dependsOn: ${{ parameters.dependsOn }} - timeoutInMinutes: 150 - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - displayName: Publish Assets - ${{ else }}: - displayName: Publish to Build Asset Registry - - variables: - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: Publish-Build-Assets - - group: AzureDevOps-Artifact-Feeds-Pats - - name: runCodesignValidationInjection - value: false - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates/post-build/common-variables.yml - - name: OfficialBuildId - ${{ if ne(parameters.officialBuildId, '') }}: - value: ${{ parameters.officialBuildId }} - ${{ else }}: - value: $(Build.BuildNumber) - - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Publishing-Internal - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - checkout: ${{ parameters.repositoryAlias }} - fetchDepth: 3 - clean: true - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - checkDownloadedFiles: true - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: NuGetAuthenticate@1 - - - task: AzureCLI@2 - displayName: Publish Build Assets - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 - arguments: > - -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:MaestroApiEndpoint=https://maestro.dot.net - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} - /p:OfficialBuildId=$(OfficialBuildId) - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: powershell@2 - displayName: Create ReleaseConfigs Artifact - inputs: - targetType: inline - script: | - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId) - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)" - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild) - - - task: PublishBuildArtifacts@1 - displayName: Publish ReleaseConfigs Artifact - inputs: - PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - task: powershell@2 - displayName: Check if SymbolPublishingExclusionsFile.txt exists - inputs: - targetType: inline - script: | - $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt" - if(Test-Path -Path $symbolExclusionfile) - { - Write-Host "SymbolExclusionFile exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]true" - } - else{ - Write-Host "Symbols Exclusion file does not exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]false" - } - - - task: PublishBuildArtifacts@1 - displayName: Publish SymbolPublishingExclusionsFile Artifact - condition: eq(variables['SymbolExclusionFile'], 'true') - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion 3 - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' +- template: /eng/common/core-templates/job/publish-build-assets.yml + parameters: + is1ESPipeline: false - - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - - template: /eng/common/templates/steps/publish-logs.yml - parameters: - JobLabel: 'Publish_Artifacts_Logs' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml index 97021335cfc4..e44d47b1d760 100644 --- a/eng/common/templates/job/source-build.yml +++ b/eng/common/templates/job/source-build.yml @@ -1,78 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. The template produces a server job with a - # default ID 'Source_Build_Complete' to put in a dependency list if necessary. - - # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. - jobNamePrefix: 'Source_Build' - - # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for - # managed-only repositories. This is an object with these properties: - # - # name: '' - # The name of the job. This is included in the job ID. - # targetRID: '' - # The name of the target RID to use, instead of the one auto-detected by Arcade. - # nonPortable: false - # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than - # linux-x64), and compiling against distro-provided packages rather than portable ones. - # skipPublishValidation: false - # Disables publishing validation. By default, a check is performed to ensure no packages are - # published by source-build. - # container: '' - # A container to use. Runs in docker. - # pool: {} - # A pool to use. Runs directly on an agent. - # buildScript: '' - # Specifies the build script to invoke to perform the build in the repo. The default - # './build.sh' should work for typical Arcade repositories, but this is customizable for - # difficult situations. - # jobProperties: {} - # A list of job properties to inject at the top level, for potential extensibility beyond - # container and pool. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: -- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} - displayName: Source-Build (${{ parameters.platform.name }}) - - ${{ each property in parameters.platform.jobProperties }}: - ${{ property.key }}: ${{ property.value }} - - ${{ if ne(parameters.platform.container, '') }}: - container: ${{ parameters.platform.container }} - - ${{ if eq(parameters.platform.pool, '') }}: - # The default VM host AzDO pool. This should be capable of running Docker containers: almost all - # source-build builds run in Docker, including the default managed platform. - # /eng/common/templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64 - - ${{ if ne(parameters.platform.pool, '') }}: - pool: ${{ parameters.platform.pool }} - - workspace: - clean: all +- template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: false - steps: - - ${{ if eq(parameters.enableInternalSources, true) }}: - - template: /eng/common/templates/steps/enable-internal-runtimes.yml - - template: /eng/common/templates/steps/source-build.yml - parameters: - platform: ${{ parameters.platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml index 81606fd9a541..89f3291593cb 100644 --- a/eng/common/templates/job/source-index-stage1.yml +++ b/eng/common/templates/job/source-index-stage1.yml @@ -1,82 +1,7 @@ -parameters: - runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20250425.2 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 - sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json - sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" - preSteps: [] - binlogPath: artifacts/log/Debug/Build.binlog - condition: '' - dependsOn: '' - pool: '' - jobs: -- job: SourceIndexStage1 - dependsOn: ${{ parameters.dependsOn }} - condition: ${{ parameters.condition }} - variables: - - name: SourceIndexUploadPackageVersion - value: ${{ parameters.sourceIndexUploadPackageVersion }} - - name: SourceIndexProcessBinlogPackageVersion - value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - - name: SourceIndexPackageSource - value: ${{ parameters.sourceIndexPackageSource }} - - name: BinlogPath - value: ${{ parameters.binlogPath }} - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $(DncEngPublicBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64.open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - task: UseDotNet@2 - displayName: Use .NET 8 SDK - inputs: - packageType: sdk - version: 8.0.x - installationPath: $(Agent.TempDirectory)/dotnet - workingDirectory: $(Agent.TempDirectory) - - - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - displayName: Download Tools - # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. - workingDirectory: $(Agent.TempDirectory) - - - script: ${{ parameters.sourceIndexBuildCommand }} - displayName: Build Repository - - - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output - displayName: Process Binlog into indexable sln - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: AzureCLI@2 - displayName: Get stage 1 auth token - inputs: - azureSubscription: 'SourceDotNet Stage1 Publish' - addSpnToEnvironment: true - scriptType: 'ps' - scriptLocation: 'inlineScript' - inlineScript: | - echo "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$env:servicePrincipalId" - echo "##vso[task.setvariable variable=ARM_ID_TOKEN;issecret=true]$env:idToken" - echo "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$env:tenantId" - - - script: | - az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) - displayName: "Login to Azure" +- template: /eng/common/core-templates/job/source-index-stage1.yml + parameters: + is1ESPipeline: false - - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/jobs/codeql-build.yml b/eng/common/templates/jobs/codeql-build.yml index e8b43e3b4cba..517f24d6a52c 100644 --- a/eng/common/templates/jobs/codeql-build.yml +++ b/eng/common/templates/jobs/codeql-build.yml @@ -1,31 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - # Optional: if specified, restore and use this version of Guardian instead of the default. - overrideGuardianVersion: '' - jobs: -- template: /eng/common/templates/jobs/jobs.yml +- template: /eng/common/core-templates/jobs/codeql-build.yml parameters: - enableMicrobuild: false - enablePublishBuildArtifacts: false - enablePublishTestResults: false - enablePublishBuildAssets: false - enablePublishUsingPipelines: false - enableTelemetry: true + is1ESPipeline: false - variables: - - group: Publish-Build-Assets - # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in - # sync with the packages.config file. - - name: DefaultGuardianVersion - value: 0.109.0 - - name: GuardianPackagesConfigFile - value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config - - name: GuardianVersion - value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} - - jobs: ${{ parameters.jobs }} - + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index 7eafc256758f..388e9037b3e6 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -1,101 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: Enable publishing using release pipelines - enablePublishUsingPipelines: false - - # Optional: Enable running the source-build jobs to build repo from source - enableSourceBuild: false - - # Optional: Parameters for source-build template. - # See /eng/common/templates/jobs/source-build.yml for options - sourceBuildParameters: [] - - graphFileGeneration: - # Optional: Enable generating the graph files at the end of the build - enabled: false - # Optional: Include toolset dependencies in the generated graph files - includeToolset: false - - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - - # Optional: Override automatically derived dependsOn value for "publish build assets" job - publishBuildAssetsDependsOn: '' - - # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. - publishAssetsImmediately: false - - # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) - artifactsPublishingAdditionalParameters: '' - signingValidationAdditionalParameters: '' - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - enableSourceIndex: false - sourceIndexParams: {} - repositoryAlias: self - officialBuildId: '' - -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - jobs: -- ${{ each job in parameters.jobs }}: - - template: ../job/job.yml - parameters: - # pass along parameters - ${{ each parameter in parameters }}: - ${{ if ne(parameter.key, 'jobs') }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # pass along job properties - ${{ each property in job }}: - ${{ if ne(property.key, 'job') }}: - ${{ property.key }}: ${{ property.value }} - - name: ${{ job.job }} - -- ${{ if eq(parameters.enableSourceBuild, true) }}: - - template: /eng/common/templates/jobs/source-build.yml - parameters: - allCompletedJobId: Source_Build_Complete - ${{ each parameter in parameters.sourceBuildParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if eq(parameters.enableSourceIndex, 'true') }}: - - template: ../job/source-index-stage1.yml - parameters: - runAsPublic: ${{ parameters.runAsPublic }} - ${{ each parameter in parameters.sourceIndexParams }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: - - template: ../job/publish-build-assets.yml - parameters: - continueOnError: ${{ parameters.continueOnError }} - dependsOn: - - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.publishBuildAssetsDependsOn }}: - - ${{ job.job }} - - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.jobs }}: - - ${{ job.job }} - - ${{ if eq(parameters.enableSourceBuild, true) }}: - - Source_Build_Complete +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: false - runAsPublic: ${{ parameters.runAsPublic }} - publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} - publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} - enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} - signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} - repositoryAlias: ${{ parameters.repositoryAlias }} - officialBuildId: ${{ parameters.officialBuildId }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/jobs/source-build.yml b/eng/common/templates/jobs/source-build.yml index 4dde599add97..818d4c326dbb 100644 --- a/eng/common/templates/jobs/source-build.yml +++ b/eng/common/templates/jobs/source-build.yml @@ -1,59 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. A job is created for each platform, as - # well as an optional server job that completes when all platform jobs complete. - - # The name of the "join" job for all source-build platforms. If set to empty string, the job is - # not included. Existing repo pipelines can use this job depend on all source-build jobs - # completing without maintaining a separate list of every single job ID: just depend on this one - # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. - allCompletedJobId: '' - - # See /eng/common/templates/job/source-build.yml - jobNamePrefix: 'Source_Build' - - # This is the default platform provided by Arcade, intended for use by a managed-only repo. - defaultManagedPlatform: - name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-9-amd64' - - # Defines the platforms on which to run build jobs. One job is created for each platform, and the - # object in this array is sent to the job template as 'platform'. If no platforms are specified, - # one job runs on 'defaultManagedPlatform'. - platforms: [] - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal nuget and blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: +- template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: false -- ${{ if ne(parameters.allCompletedJobId, '') }}: - - job: ${{ parameters.allCompletedJobId }} - displayName: Source-Build Complete - pool: server - dependsOn: - - ${{ each platform in parameters.platforms }}: - - ${{ parameters.jobNamePrefix }}_${{ platform.name }} - - ${{ if eq(length(parameters.platforms), 0) }}: - - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} - -- ${{ each platform in parameters.platforms }}: - - template: /eng/common/templates/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} - -- ${{ if eq(length(parameters.platforms), 0) }}: - - template: /eng/common/templates/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ parameters.defaultManagedPlatform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml index 173914f2364a..7fa105875592 100644 --- a/eng/common/templates/post-build/common-variables.yml +++ b/eng/common/templates/post-build/common-variables.yml @@ -1,22 +1,8 @@ variables: - - group: Publish-Build-Assets +- template: /eng/common/core-templates/post-build/common-variables.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false - # Whether the build is internal or not - - name: IsInternalBuild - value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} - - # Default Maestro++ API Endpoint and API Version - - name: MaestroApiEndPoint - value: "https://maestro.dot.net" - - name: MaestroApiAccessToken - value: $(MaestroAccessToken) - - name: MaestroApiVersion - value: "2020-02-20" - - - name: SourceLinkCLIVersion - value: 3.0.0 - - name: SymbolToolVersion - value: 1.0.1 - - - name: runCodesignValidationInjection - value: false + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 96ca06882384..53ede714bdd2 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -1,287 +1,8 @@ -parameters: - # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. - # Publishing V1 is no longer supported - # Publishing V2 is no longer supported - # Publishing V3 is the default - - name: publishingInfraVersion - displayName: Which version of publishing should be used to promote the build definition? - type: number - default: 3 - values: - - 3 - - - name: BARBuildId - displayName: BAR Build Id - type: number - default: 0 - - - name: PromoteToChannelIds - displayName: Channel to promote BARBuildId to - type: string - default: '' - - - name: enableSourceLinkValidation - displayName: Enable SourceLink validation - type: boolean - default: false - - - name: enableSigningValidation - displayName: Enable signing validation - type: boolean - default: true - - - name: enableSymbolValidation - displayName: Enable symbol validation - type: boolean - default: false - - - name: enableNugetValidation - displayName: Enable NuGet validation - type: boolean - default: true - - - name: publishInstallersAndChecksums - displayName: Publish installers and checksums - type: boolean - default: true - - - name: SDLValidationParameters - type: object - default: - enable: false - publishGdn: false - continueOnError: false - params: '' - artifactNames: '' - downloadArtifacts: true - - # These parameters let the user customize the call to sdk-task.ps1 for publishing - # symbols & general artifacts as well as for signing validation - - name: symbolPublishingAdditionalParameters - displayName: Symbol publishing additional parameters - type: string - default: '' - - - name: artifactsPublishingAdditionalParameters - displayName: Artifact publishing additional parameters - type: string - default: '' - - - name: signingValidationAdditionalParameters - displayName: Signing validation additional parameters - type: string - default: '' - - # Which stages should finish execution before post-build stages start - - name: validateDependsOn - type: object - default: - - build - - - name: publishDependsOn - type: object - default: - - Validate - - # Optional: Call asset publishing rather than running in a separate stage - - name: publishAssetsImmediately - type: boolean - default: false - stages: -- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - - stage: Validate - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Validate Build Assets - variables: - - template: common-variables.yml - - template: /eng/common/templates/variables/pool-providers.yml - jobs: - - job: - displayName: NuGet Validation - condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - - - job: - displayName: Signing Validation - condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - itemPattern: | - ** - !**/Microsoft.SourceBuild.Intermediate.*.nupkg - - # This is necessary whenever we want to publish/restore to an AzDO private feed - # Since sdk-task.ps1 tries to restore packages we need to do this authentication here - # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@1 - displayName: 'Authenticate to AzDO Feeds' - - # Signing validation will optionally work with the buildmanifest file which is downloaded from - # Azure DevOps above. - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore -msbuildEngine vs - /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' - /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' - ${{ parameters.signingValidationAdditionalParameters }} - - - template: ../steps/publish-logs.yml - parameters: - StageLabel: 'Validation' - JobLabel: 'Signing' - - - job: - displayName: SourceLink Validation - condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) - -GHCommit $(Build.SourceVersion) - -SourcelinkCliVersion $(SourceLinkCLIVersion) - continueOnError: true - - - template: /eng/common/templates/job/execute-sdl.yml - parameters: - enable: ${{ parameters.SDLValidationParameters.enable }} - publishGuardianDirectoryToPipeline: ${{ parameters.SDLValidationParameters.publishGdn }} - additionalParameters: ${{ parameters.SDLValidationParameters.params }} - continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }} - artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }} - downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }} - -- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - - stage: publish_using_darc - ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - dependsOn: ${{ parameters.publishDependsOn }} - ${{ else }}: - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Publish using Darc - variables: - - template: common-variables.yml - - template: /eng/common/templates/variables/pool-providers.yml - jobs: - - job: - displayName: Publish Using Darc - timeoutInMinutes: 120 - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: NetCore1ESPool-Publishing-Internal - demands: ImageOverride -equals windows.vs2019.amd64 - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: NuGetAuthenticate@1 - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x +- template: /eng/common/core-templates/post-build/post-build.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/post-build/setup-maestro-vars.yml b/eng/common/templates/post-build/setup-maestro-vars.yml index 4347fa80b684..a79fab5b441e 100644 --- a/eng/common/templates/post-build/setup-maestro-vars.yml +++ b/eng/common/templates/post-build/setup-maestro-vars.yml @@ -1,70 +1,8 @@ -parameters: - BARBuildId: '' - PromoteToChannelIds: '' - steps: - - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Release Configs - inputs: - buildType: current - artifactName: ReleaseConfigs - checkDownloadedFiles: true - - - task: AzureCLI@2 - name: setReleaseVars - displayName: Set Release Configs Vars - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: pscore - scriptLocation: inlineScript - inlineScript: | - try { - if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { - $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt - - $BarId = $Content | Select -Index 0 - $Channels = $Content | Select -Index 1 - $IsStableBuild = $Content | Select -Index 2 - - $AzureDevOpsProject = $Env:System_TeamProject - $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId - $AzureDevOpsBuildId = $Env:Build_BuildId - } - else { - . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1 - $darc = Get-Darc - $buildInfo = & $darc get-build ` - --id ${{ parameters.BARBuildId }} ` - --extended ` - --output-format json ` - --ci ` - | convertFrom-Json - - $BarId = ${{ parameters.BARBuildId }} - $Channels = $Env:PromoteToMaestroChannels -split "," - $Channels = $Channels -join "][" - $Channels = "[$Channels]" - - $IsStableBuild = $buildInfo.stable - $AzureDevOpsProject = $buildInfo.azureDevOpsProject - $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId - $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId - } - - Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" - Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" - Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" +- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false - Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" - Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" - Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" - } - catch { - Write-Host $_ - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - exit 1 - } - env: - PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml index cbba0596709d..c12a5f8d21d7 100644 --- a/eng/common/templates/steps/component-governance.yml +++ b/eng/common/templates/steps/component-governance.yml @@ -1,13 +1,7 @@ -parameters: - disableComponentGovernance: false - componentGovernanceIgnoreDirectories: '' - steps: -- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable -- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - - task: ComponentGovernanceComponentDetection@0 - continueOnError: true - inputs: - ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} \ No newline at end of file +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/enable-internal-runtimes.yml b/eng/common/templates/steps/enable-internal-runtimes.yml index 54dc9416c519..b21a8038cc1c 100644 --- a/eng/common/templates/steps/enable-internal-runtimes.yml +++ b/eng/common/templates/steps/enable-internal-runtimes.yml @@ -1,28 +1,10 @@ # Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' # variable with the base64-encoded SAS token, by default -parameters: -- name: federatedServiceConnection - type: string - default: 'dotnetbuilds-internal-read' -- name: outputVariableName - type: string - default: 'dotnetbuilds-internal-container-read-token-base64' -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: true - steps: -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - template: /eng/common/templates/steps/get-delegation-sas.yml - parameters: - federatedServiceConnection: ${{ parameters.federatedServiceConnection }} - outputVariableName: ${{ parameters.outputVariableName }} - expiryInHours: ${{ parameters.expiryInHours }} - base64Encode: ${{ parameters.base64Encode }} - storageAccount: dotnetbuilds - container: internal - permissions: rl +- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/enable-internal-sources.yml b/eng/common/templates/steps/enable-internal-sources.yml new file mode 100644 index 000000000000..5f87e9abb8aa --- /dev/null +++ b/eng/common/templates/steps/enable-internal-sources.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/generate-sbom.yml b/eng/common/templates/steps/generate-sbom.yml index b1fe8b3944b3..26dc00a2e0f3 100644 --- a/eng/common/templates/steps/generate-sbom.yml +++ b/eng/common/templates/steps/generate-sbom.yml @@ -1,48 +1,7 @@ -# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. -# PackageName - The name of the package this SBOM represents. -# PackageVersion - The version of the package this SBOM represents. -# ManifestDirPath - The path of the directory where the generated manifest files will be placed -# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. - -parameters: - PackageVersion: 8.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - PackageName: '.NET' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom - IgnoreDirectories: '' - sbomContinueOnError: true - steps: -- task: PowerShell@2 - displayName: Prep for SBOM generation in (Non-linux) - condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) - inputs: - filePath: ./eng/common/generate-sbom-prep.ps1 - arguments: ${{parameters.manifestDirPath}} - -# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 -- script: | - chmod +x ./eng/common/generate-sbom-prep.sh - ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} - displayName: Prep for SBOM generation in (Linux) - condition: eq(variables['Agent.Os'], 'Linux') - continueOnError: ${{ parameters.sbomContinueOnError }} - -- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: 'Generate SBOM manifest' - continueOnError: ${{ parameters.sbomContinueOnError }} - inputs: - PackageName: ${{ parameters.packageName }} - BuildDropPath: ${{ parameters.buildDropPath }} - PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }} - ${{ if ne(parameters.IgnoreDirectories, '') }}: - AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' - -- task: PublishPipelineArtifact@1 - displayName: Publish SBOM manifest - continueOnError: ${{parameters.sbomContinueOnError}} - inputs: - targetPath: '${{parameters.manifestDirPath}}' - artifactName: $(ARTIFACT_NAME) +- template: /eng/common/core-templates/steps/generate-sbom.yml + parameters: + is1ESPipeline: false + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/get-delegation-sas.yml b/eng/common/templates/steps/get-delegation-sas.yml index c690cc0a070c..83760c9798e3 100644 --- a/eng/common/templates/steps/get-delegation-sas.yml +++ b/eng/common/templates/steps/get-delegation-sas.yml @@ -1,52 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: false -- name: storageAccount - type: string -- name: container - type: string -- name: permissions - type: string - default: 'rl' - steps: -- task: AzureCLI@2 - displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - # Calculate the expiration of the SAS token and convert to UTC - $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - - # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads - # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 - $sas = "" - do { - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - } while($sas.IndexOf('/') -ne -1) - - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - - if ('${{ parameters.base64Encode }}' -eq 'true') { - $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) - } +- template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + is1ESPipeline: false - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/get-federated-access-token.yml b/eng/common/templates/steps/get-federated-access-token.yml index 55e33bd38f71..31e151d9d9e7 100644 --- a/eng/common/templates/steps/get-federated-access-token.yml +++ b/eng/common/templates/steps/get-federated-access-token.yml @@ -1,40 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: stepName - type: string - default: 'getFederatedAccessToken' -- name: condition - type: string - default: '' -# Resource to get a token for. Common values include: -# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps -# - 'https://storage.azure.com/' for storage -# Defaults to Azure DevOps -- name: resource - type: string - default: '499b84ac-1321-427f-aa17-267ca6975798' -- name: isStepOutputVariable - type: boolean - default: false - steps: -- task: AzureCLI@2 - displayName: 'Getting federated access token for feeds' - name: ${{ parameters.stepName }} - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" - exit 1 - } - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file +- template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/publish-build-artifacts.yml b/eng/common/templates/steps/publish-build-artifacts.yml new file mode 100644 index 000000000000..6428a98dfef6 --- /dev/null +++ b/eng/common/templates/steps/publish-build-artifacts.yml @@ -0,0 +1,40 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: displayName + type: string + default: 'Publish to Build Artifact' + +- name: condition + type: string + default: succeeded() + +- name: artifactName + type: string + +- name: pathToPublish + type: string + +- name: continueOnError + type: boolean + default: false + +- name: publishLocation + type: string + default: 'Container' + +steps: +- ${{ if eq(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates cannot be referenced from a 1ES managed template': error +- task: PublishBuildArtifacts@1 + displayName: ${{ parameters.displayName }} + condition: ${{ parameters.condition }} + ${{ if parameters.continueOnError }}: + continueOnError: ${{ parameters.continueOnError }} + inputs: + PublishLocation: ${{ parameters.publishLocation }} + PathtoPublish: ${{ parameters.pathToPublish }} + ${{ if parameters.artifactName }}: + ArtifactName: ${{ parameters.artifactName }} \ No newline at end of file diff --git a/eng/common/templates/steps/publish-logs.yml b/eng/common/templates/steps/publish-logs.yml index e2f8413d8e19..4ea86bd88235 100644 --- a/eng/common/templates/steps/publish-logs.yml +++ b/eng/common/templates/steps/publish-logs.yml @@ -1,23 +1,7 @@ -parameters: - StageLabel: '' - JobLabel: '' - steps: -- task: Powershell@2 - displayName: Prepare Binlogs to Upload - inputs: - targetType: inline - script: | - New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - continueOnError: true - condition: always() +- template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: false -- task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/PostBuildLogs' - PublishLocation: Container - ArtifactName: PostBuildLogs - continueOnError: true - condition: always() + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/publish-pipeline-artifacts.yml b/eng/common/templates/steps/publish-pipeline-artifacts.yml new file mode 100644 index 000000000000..5dd698b212fc --- /dev/null +++ b/eng/common/templates/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,34 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: args + type: object + default: {} + +steps: +- ${{ if eq(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates cannot be referenced from a 1ES managed template': error +- task: PublishPipelineArtifact@1 + displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} + ${{ if parameters.args.condition }}: + condition: ${{ parameters.args.condition }} + ${{ else }}: + condition: succeeded() + ${{ if parameters.args.continueOnError }}: + continueOnError: ${{ parameters.args.continueOnError }} + inputs: + targetPath: ${{ parameters.args.targetPath }} + ${{ if parameters.args.artifactName }}: + artifactName: ${{ parameters.args.artifactName }} + ${{ if parameters.args.publishLocation }}: + publishLocation: ${{ parameters.args.publishLocation }} + ${{ if parameters.args.fileSharePath }}: + fileSharePath: ${{ parameters.args.fileSharePath }} + ${{ if parameters.args.Parallel }}: + parallel: ${{ parameters.args.Parallel }} + ${{ if parameters.args.parallelCount }}: + parallelCount: ${{ parameters.args.parallelCount }} + ${{ if parameters.args.properties }}: + properties: ${{ parameters.args.properties }} \ No newline at end of file diff --git a/eng/common/templates/steps/retain-build.yml b/eng/common/templates/steps/retain-build.yml index 83d97a26a01f..8e841ace3d29 100644 --- a/eng/common/templates/steps/retain-build.yml +++ b/eng/common/templates/steps/retain-build.yml @@ -1,28 +1,7 @@ -parameters: - # Optional azure devops PAT with build execute permissions for the build's organization, - # only needed if the build that should be retained ran on a different organization than - # the pipeline where this template is executing from - Token: '' - # Optional BuildId to retain, defaults to the current running build - BuildId: '' - # Azure devops Organization URI for the build in the https://dev.azure.com/ format. - # Defaults to the organization the current pipeline is running on - AzdoOrgUri: '$(System.CollectionUri)' - # Azure devops project for the build. Defaults to the project the current pipeline is running on - AzdoProject: '$(System.TeamProject)' - steps: - - task: powershell@2 - inputs: - targetType: 'filePath' - filePath: eng/common/retain-build.ps1 - pwsh: true - arguments: > - -AzdoOrgUri: ${{parameters.AzdoOrgUri}} - -AzdoProject ${{parameters.AzdoProject}} - -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} - -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} - displayName: Enable permanent build retention - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - BUILD_ID: $(Build.BuildId) \ No newline at end of file +- template: /eng/common/core-templates/steps/retain-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml index 22f2501307d4..39f99fc2762d 100644 --- a/eng/common/templates/steps/send-to-helix.yml +++ b/eng/common/templates/steps/send-to-helix.yml @@ -1,92 +1,7 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixConfiguration: '' # optional -- additional property attached to a job - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - HelixProjectArguments: '' # optional -- arguments passed to the build command for helixpublish.proj - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} +- template: /eng/common/core-templates/steps/send-to-helix.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/source-build.yml b/eng/common/templates/steps/source-build.yml index d08a0e92caa4..23c1d6f4e9f8 100644 --- a/eng/common/templates/steps/source-build.yml +++ b/eng/common/templates/steps/source-build.yml @@ -1,135 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. - - # This is a 'steps' template, and is intended for advanced scenarios where the existing build - # infra has a careful build methodology that must be followed. For example, a repo - # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline - # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to - # GitHub. Using this steps template leaves room for that infra to be included. - - # Defines the platform on which to run the steps. See 'eng/common/templates/job/source-build.yml' - # for details. The entire object is described in the 'job' template for simplicity, even though - # the usage of the properties on this object is split between the 'job' and 'steps' templates. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - steps: -# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) -- script: | - set -x - df -h - - # If building on the internal project, the artifact feeds variable may be available (usually only if needed) - # In that case, call the feed setup script to add internal feeds corresponding to public ones. - # In addition, add an msbuild argument to copy the WIP from the repo to the target build location. - # This is because SetupNuGetSources.sh will alter the current NuGet.config file, and we need to preserve those - # changes. - internalRestoreArgs= - if [ '$(dn-bot-dnceng-artifact-feeds-rw)' != '$''(dn-bot-dnceng-artifact-feeds-rw)' ]; then - # Temporarily work around https://github.com/dotnet/arcade/issues/7709 - chmod +x $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh - $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh $(System.DefaultWorkingDirectory)/NuGet.config $(dn-bot-dnceng-artifact-feeds-rw) - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - - # If building on the internal project, the internal storage variable may be available (usually only if needed) - # In that case, add variables to allow the download of internal runtimes if the specified versions are not found - # in the default public locations. - internalRuntimeDownloadArgs= - if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' - fi - - buildConfig=Release - # Check if AzDO substitutes in a build config from a variable, and use it if so. - if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then - buildConfig='$(_BuildConfig)' - fi - - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - - targetRidArgs= - if [ '${{ parameters.platform.targetRID }}' != '' ]; then - targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' - fi - - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml - fi - - ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ - --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ - $officialBuildArgs \ - $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ - $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ - /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ - /p:ArcadeBuildFromSource=true \ - /p:AssetManifestFileName=$assetManifestFileName - displayName: Build - -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(System.DefaultWorkingDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/source-build/self/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - -- task: PublishPipelineArtifact@1 - displayName: Publish BuildLogs - inputs: - targetPath: '$(Build.StagingDirectory)/BuildLogs' - artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) - continueOnError: true - condition: succeededOrFailed() +- template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: false -# Manually inject component detection so that we can ignore the source build upstream cache, which contains -# a nupkg cache of input packages (a local feed). -# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' -# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets -- task: ComponentGovernanceComponentDetection@0 - displayName: Component Detection (Exclude upstream cache) - inputs: - ${{ if eq(length(parameters.cgIgnoreDirectories), 0) }}: - ignoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/source-build/self/src/artifacts/obj/source-built-upstream-cache' - ${{ else }}: - ignoreDirectories: ${{ join(',', parameters.cgIgnoreDirectories) }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/variables/pool-providers.yml b/eng/common/templates/variables/pool-providers.yml index d236f9fdbb15..18693ea120d5 100644 --- a/eng/common/templates/variables/pool-providers.yml +++ b/eng/common/templates/variables/pool-providers.yml @@ -23,35 +23,37 @@ # # pool: # name: $(DncEngInternalBuildPool) -# demands: ImageOverride -equals windows.vs2019.amd64 - +# demands: ImageOverride -equals windows.vs2022.amd64 variables: - # Coalesce the target and source branches so we know when a PR targets a release branch - # If these variables are somehow missing, fall back to main (tends to have more capacity) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ else }}: + # Coalesce the target and source branches so we know when a PR targets a release branch + # If these variables are somehow missing, fall back to main (tends to have more capacity) - # Any new -Svc alternative pools should have variables added here to allow for splitting work - - name: DncEngPublicBuildPool - value: $[ - replace( + # Any new -Svc alternative pools should have variables added here to allow for splitting work + - name: DncEngPublicBuildPool + value: $[ replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore-Svc-Public' - ), - False, - 'NetCore-Public' - ) - ] + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore-Svc-Public' + ), + False, + 'NetCore-Public' + ) + ] - - name: DncEngInternalBuildPool - value: $[ - replace( + - name: DncEngInternalBuildPool + value: $[ replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore1ESPool-Svc-Internal' - ), - False, - 'NetCore1ESPool-Internal' - ) - ] + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore1ESPool-Svc-Internal' + ), + False, + 'NetCore1ESPool-Internal' + ) + ] diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index b674a90618d7..a06513a59407 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -65,6 +65,11 @@ $ErrorActionPreference = 'Stop' # Base-64 encoded SAS token that has permission to storage container described by $runtimeSourceFeed [string]$runtimeSourceFeedKey = if (Test-Path variable:runtimeSourceFeedKey) { $runtimeSourceFeedKey } else { $null } +# True if the build is a product build +[bool]$productBuild = if (Test-Path variable:productBuild) { $productBuild } else { $false } + +[String[]]$properties = if (Test-Path variable:properties) { $properties } else { @() } + function Create-Directory ([string[]] $path) { New-Item -Path $path -Force -ItemType 'Directory' | Out-Null } @@ -158,18 +163,13 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { $env:DOTNET_MULTILEVEL_LOOKUP=0 # Disable first run since we do not need all ASP.NET packages restored. - $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + $env:DOTNET_NOLOGO=1 # Disable telemetry on CI. if ($ci) { $env:DOTNET_CLI_TELEMETRY_OPTOUT=1 } - # Source Build uses DotNetCoreSdkDir variable - if ($env:DotNetCoreSdkDir -ne $null) { - $env:DOTNET_INSTALL_DIR = $env:DotNetCoreSdkDir - } - # Find the first path on %PATH% that contains the dotnet.exe if ($useInstalledDotNetCli -and (-not $globalJsonHasRuntimes) -and ($env:DOTNET_INSTALL_DIR -eq $null)) { $dotnetExecutable = GetExecutableFileName 'dotnet' @@ -228,7 +228,7 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { Write-PipelinePrependPath -Path $dotnetRoot Write-PipelineSetVariable -Name 'DOTNET_MULTILEVEL_LOOKUP' -Value '0' - Write-PipelineSetVariable -Name 'DOTNET_SKIP_FIRST_TIME_EXPERIENCE' -Value '1' + Write-PipelineSetVariable -Name 'DOTNET_NOLOGO' -Value '1' return $global:_DotNetInstallDir = $dotnetRoot } @@ -254,7 +254,6 @@ function Retry($downloadBlock, $maxRetries = 5) { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Unable to download file in $maxRetries attempts." break } - } } @@ -384,7 +383,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.12.0 + # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.12.0 $defaultXCopyMSBuildVersion = '17.12.0' if (!$vsRequirements) { @@ -424,7 +423,6 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion } else { - if (Get-Member -InputObject $GlobalJson.tools -Name 'xcopy-msbuild') { $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] @@ -450,7 +448,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = if ($xcopyMSBuildVersion.Trim() -ine "none") { $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install if ($vsInstallDir -eq $null) { - throw "Could not xcopy msbuild. Please check that package 'RoslynTools.MSBuild @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." + throw "Could not xcopy msbuild. Please check that package 'Microsoft.DotNet.Arcade.MSBuild.Xcopy @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." } } if ($vsInstallDir -eq $null) { @@ -487,7 +485,7 @@ function InstallXCopyMSBuild([string]$packageVersion) { } function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { - $packageName = 'RoslynTools.MSBuild' + $packageName = 'Microsoft.DotNet.Arcade.MSBuild.Xcopy' $packageDir = Join-Path $ToolsDir "msbuild\$packageVersion" $packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg" @@ -504,6 +502,10 @@ function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { Invoke-WebRequest "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/flat2/$packageName/$packageVersion/$packageName.$packageVersion.nupkg" -UseBasicParsing -OutFile $packagePath }) + if (!(Test-Path $packagePath)) { + Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "See https://dev.azure.com/dnceng/internal/_wiki/wikis/DNCEng%20Services%20Wiki/1074/Updating-Microsoft.DotNet.Arcade.MSBuild.Xcopy-WAS-RoslynTools.MSBuild-(xcopy-msbuild)-generation?anchor=troubleshooting for help troubleshooting issues with XCopy MSBuild" + throw + } Unzip $packagePath $packageDir } @@ -545,19 +547,26 @@ function LocateVisualStudio([object]$vsRequirements = $null){ }) } - if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs } + if (!$vsRequirements) { + if (Get-Member -InputObject $GlobalJson.tools -Name 'vs' -ErrorAction SilentlyContinue) { + $vsRequirements = $GlobalJson.tools.vs + } else { + $vsRequirements = $null + } + } + $args = @('-latest', '-format', 'json', '-requires', 'Microsoft.Component.MSBuild', '-products', '*') if (!$excludePrereleaseVS) { $args += '-prerelease' } - if (Get-Member -InputObject $vsRequirements -Name 'version') { + if ($vsRequirements -and (Get-Member -InputObject $vsRequirements -Name 'version' -ErrorAction SilentlyContinue)) { $args += '-version' $args += $vsRequirements.version } - if (Get-Member -InputObject $vsRequirements -Name 'components') { + if ($vsRequirements -and (Get-Member -InputObject $vsRequirements -Name 'components' -ErrorAction SilentlyContinue)) { foreach ($component in $vsRequirements.components) { $args += '-requires' $args += $component @@ -604,11 +613,11 @@ function InitializeBuildTool() { # Use override if it exists - commonly set by source-build if ($null -eq $env:_OverrideArcadeInitializeBuildToolFramework) { - $initializeBuildToolFramework="net8.0" + $initializeBuildToolFramework="net9.0" } else { $initializeBuildToolFramework=$env:_OverrideArcadeInitializeBuildToolFramework } - + $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = $initializeBuildToolFramework } } elseif ($msbuildEngine -eq "vs") { try { @@ -651,7 +660,7 @@ function GetNuGetPackageCachePath() { $env:NUGET_PACKAGES = Join-Path $env:UserProfile '.nuget\packages\' } else { $env:NUGET_PACKAGES = Join-Path $RepoRoot '.packages\' - $env:RESTORENOCACHE = $true + $env:RESTORENOHTTPCACHE = $true } } @@ -684,8 +693,14 @@ function Read-ArcadeSdkVersion() { } function InitializeToolset() { - if (Test-Path variable:global:_ToolsetBuildProj) { - return $global:_ToolsetBuildProj + # For Unified Build/Source-build support, check whether the environment variable is + # set. If it is, then use this as the toolset build project. + if ($env:_InitializeToolset -ne $null) { + return $global:_InitializeToolset = $env:_InitializeToolset + } + + if (Test-Path variable:global:_InitializeToolset) { + return $global:_InitializeToolset } $nugetCache = GetNuGetPackageCachePath @@ -696,7 +711,7 @@ function InitializeToolset() { if (Test-Path $toolsetLocationFile) { $path = Get-Content $toolsetLocationFile -TotalCount 1 if (Test-Path $path) { - return $global:_ToolsetBuildProj = $path + return $global:_InitializeToolset = $path } } @@ -719,7 +734,7 @@ function InitializeToolset() { throw "Invalid toolset path: $path" } - return $global:_ToolsetBuildProj = $path + return $global:_InitializeToolset = $path } function ExitWithExitCode([int] $exitCode) { @@ -771,12 +786,10 @@ function MSBuild() { # new scripts need to work with old packages, so we need to look for the old names/versions (Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.ArcadeLogging.dll')), (Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll')), - (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll')) - (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll')) (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll')) + (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll')), + (Join-Path $basePath (Join-Path net8.0 'Microsoft.DotNet.ArcadeLogging.dll')), + (Join-Path $basePath (Join-Path net8.0 'Microsoft.DotNet.Arcade.Sdk.dll')) ) $selectedPath = $null foreach ($path in $possiblePaths) { @@ -835,7 +848,8 @@ function MSBuild-Core() { } } - $env:ARCADE_BUILD_TOOL_COMMAND = "$($buildTool.Path) $cmdArgs" + # Be sure quote the path in case there are spaces in the dotnet installation location. + $env:ARCADE_BUILD_TOOL_COMMAND = "`"$($buildTool.Path)`" $cmdArgs" $exitCode = Exec-Process $buildTool.Path $cmdArgs @@ -850,7 +864,8 @@ function MSBuild-Core() { } # When running on Azure Pipelines, override the returned exit code to avoid double logging. - if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null) { + # Skip this when the build is a child of the VMR orchestrator build. + if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$productBuild -and -not($properties -like "*DotNetBuildRepo=true*")) { Write-PipelineSetResult -Result "Failed" -Message "msbuild execution failed." # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 68db15430230..01b09b65796c 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -68,6 +68,9 @@ fi runtime_source_feed=${runtime_source_feed:-''} runtime_source_feed_key=${runtime_source_feed_key:-''} +# True if the build is a product build +product_build=${product_build:-false} + # Resolve any symlinks in the given path. function ResolvePath { local path=$1 @@ -112,7 +115,7 @@ function InitializeDotNetCli { export DOTNET_MULTILEVEL_LOOKUP=0 # Disable first run since we want to control all package sources - export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + export DOTNET_NOLOGO=1 # Disable telemetry on CI if [[ $ci == true ]]; then @@ -123,11 +126,6 @@ function InitializeDotNetCli { # so it doesn't output warnings to the console. export LTTNG_HOME="$HOME" - # Source Build uses DotNetCoreSdkDir variable - if [[ -n "${DotNetCoreSdkDir:-}" ]]; then - export DOTNET_INSTALL_DIR="$DotNetCoreSdkDir" - fi - # Find the first path on $PATH that contains the dotnet.exe if [[ "$use_installed_dotnet_cli" == true && $global_json_has_runtimes == false && -z "${DOTNET_INSTALL_DIR:-}" ]]; then local dotnet_path=`command -v dotnet` @@ -146,7 +144,7 @@ function InitializeDotNetCli { if [[ $global_json_has_runtimes == false && -n "${DOTNET_INSTALL_DIR:-}" && -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then dotnet_root="$DOTNET_INSTALL_DIR" else - dotnet_root="$repo_root/.dotnet" + dotnet_root="${repo_root}.dotnet" export DOTNET_INSTALL_DIR="$dotnet_root" @@ -165,7 +163,7 @@ function InitializeDotNetCli { Write-PipelinePrependPath -path "$dotnet_root" Write-PipelineSetVariable -name "DOTNET_MULTILEVEL_LOOKUP" -value "0" - Write-PipelineSetVariable -name "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" -value "1" + Write-PipelineSetVariable -name "DOTNET_NOLOGO" -value "1" # return value _InitializeDotNetCli="$dotnet_root" @@ -310,7 +308,7 @@ function GetDotNetInstallScript { curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script" || { if command -v openssl &> /dev/null; then echo "Curl failed; dumping some information about dotnet.microsoft.com for later investigation" - echo | openssl s_client -showcerts -servername dotnet.microsoft.com -connect dotnet.microsoft.com:443 + echo | openssl s_client -showcerts -servername dotnet.microsoft.com -connect dotnet.microsoft.com:443 || true fi echo "Will now retry the same URL with verbose logging." with_retries curl "$install_script_url" -sSL --verbose --retry 10 --create-dirs -o "$install_script" || { @@ -343,20 +341,20 @@ function InitializeBuildTool { _InitializeBuildToolCommand="msbuild" # use override if it exists - commonly set by source-build if [[ "${_OverrideArcadeInitializeBuildToolFramework:-x}" == "x" ]]; then - _InitializeBuildToolFramework="net8.0" + _InitializeBuildToolFramework="net9.0" else _InitializeBuildToolFramework="${_OverrideArcadeInitializeBuildToolFramework}" fi } -# Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116 +# Set RestoreNoHttpCache as a workaround for https://github.com/NuGet/Home/issues/3116 function GetNuGetPackageCachePath { if [[ -z ${NUGET_PACKAGES:-} ]]; then if [[ "$use_global_nuget_cache" == true ]]; then - export NUGET_PACKAGES="$HOME/.nuget/packages" + export NUGET_PACKAGES="$HOME/.nuget/packages/" else - export NUGET_PACKAGES="$repo_root/.packages" - export RESTORENOCACHE=true + export NUGET_PACKAGES="$repo_root/.packages/" + export RESTORENOHTTPCACHE=true fi fi @@ -440,7 +438,7 @@ function StopProcesses { } function MSBuild { - local args=$@ + local args=( "$@" ) if [[ "$pipelines_log" == true ]]; then InitializeBuildTool InitializeToolset @@ -458,12 +456,10 @@ function MSBuild { local possiblePaths=() possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.ArcadeLogging.dll" ) possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.Arcade.Sdk.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" ) possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.ArcadeLogging.dll" ) possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.Arcade.Sdk.dll" ) + possiblePaths+=( "$toolset_dir/net8.0/Microsoft.DotNet.ArcadeLogging.dll" ) + possiblePaths+=( "$toolset_dir/net8.0/Microsoft.DotNet.Arcade.Sdk.dll" ) for path in "${possiblePaths[@]}"; do if [[ -f $path ]]; then selectedPath=$path @@ -477,7 +473,7 @@ function MSBuild { args+=( "-logger:$selectedPath" ) fi - MSBuild-Core ${args[@]} + MSBuild-Core "${args[@]}" } function MSBuild-Core { @@ -510,7 +506,8 @@ function MSBuild-Core { echo "Build failed with exit code $exit_code. Check errors above." # When running on Azure Pipelines, override the returned exit code to avoid double logging. - if [[ "$ci" == "true" && -n ${SYSTEM_TEAMPROJECT:-} ]]; then + # Skip this when the build is a child of the VMR orchestrator build. + if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$product_build" != true && "$properties" != *"DotNetBuildRepo=true"* ]]; then Write-PipelineSetResult -result "Failed" -message "msbuild execution failed." # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error diff --git a/global.json b/global.json index edcf91e50c58..43b27ffea644 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "tools": { - "dotnet": "8.0.122", + "dotnet": "9.0.112", "runtimes": { "dotnet": [ - "$(VSRedistCommonNetCoreSharedFrameworkx6480PackageVersion)" + "$(VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion)" ], "aspnetcore": [ "$(MicrosoftAspNetCoreComponentsSdkAnalyzersPackageVersion)" @@ -13,8 +13,13 @@ "version": "16.8" } }, + "native-tools": { + "cmake": "latest" + }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25611.2", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25611.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26063.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26063.2", + "Microsoft.Build.NoTargets": "3.7.0", + "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } } From 09d134444ee5e55e120f5ac9db70d22d5479996b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:19:19 +0000 Subject: [PATCH 078/133] Reset files to release/8.0.4xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 13 ++- eng/Version.Details.xml | 212 ++++++++++++++++++++-------------------- eng/Versions.props | 95 +++++++++--------- 3 files changed, 162 insertions(+), 158 deletions(-) diff --git a/NuGet.config b/NuGet.config index 60dbe4113340..a15c8be96590 100644 --- a/NuGet.config +++ b/NuGet.config @@ -1,3 +1,4 @@ + @@ -6,13 +7,12 @@ - + - @@ -20,11 +20,13 @@ - + + + @@ -50,16 +52,17 @@ - + - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8011db07203c..3e075aa26930 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,17 +1,17 @@ - + https://github.com/dotnet/templating - c60b810b74b2e1dad8159cd33363483c07195f41 + 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 - + https://github.com/dotnet/templating - c60b810b74b2e1dad8159cd33363483c07195f41 + 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 - + https://github.com/dotnet/templating - c60b810b74b2e1dad8159cd33363483c07195f41 + 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 @@ -55,61 +55,61 @@ https://github.com/dotnet/emsdk 87f89d77d2eb70ed29b3e0f37cfbf28bfd49c536 - - https://github.com/dotnet/msbuild - 7806cbf7b0fd91ea6ab55c2e42d8ed973114e197 + + https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted + 02bf66295b64ab368d12933041f7281aad186a2d - - https://github.com/dotnet/msbuild - 7806cbf7b0fd91ea6ab55c2e42d8ed973114e197 + + https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted + 02bf66295b64ab368d12933041f7281aad186a2d - - https://github.com/dotnet/msbuild - 7806cbf7b0fd91ea6ab55c2e42d8ed973114e197 + + https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted + 02bf66295b64ab368d12933041f7281aad186a2d - + https://github.com/dotnet/fsharp - fc5e9eda234e2b69aa479f4f83faddc31fdd4da7 + e11d7079bebc6f101c5313fe0d1de9e3d38a7c02 - + https://github.com/dotnet/fsharp - fc5e9eda234e2b69aa479f4f83faddc31fdd4da7 + e11d7079bebc6f101c5313fe0d1de9e3d38a7c02 - + https://github.com/dotnet/format - a8be5ff9c558f921f565c461dd7688905f84742a + b7d483d5a0ce4e96a3468514f3f4a98f3c371434 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 - + https://github.com/dotnet/roslyn - 38896ab4e7cee896fcde8a4e26914a777c794e3b + 3fb752d448006a3144a60ccf181d745e555422f9 https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -119,86 +119,86 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 568fff703254def7dcd35fda9892bf702d4c81d3 - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - - https://dev.azure.com/devdiv/DevDiv/_git/NuGet-NuGet.Client-Trusted - 550277e0616e549446f03fda35d3e23dff75dc01 + + https://github.com/nuget/nuget.client + 5469bd0d9de8108f15f21644759773b85471366c - + https://github.com/microsoft/vstest - aa59400b11e1aeee2e8af48928dbd48748a8bef9 + 7855c9b221686104532ebf3380f2d45b3613b369 - + https://github.com/microsoft/vstest - aa59400b11e1aeee2e8af48928dbd48748a8bef9 + 7855c9b221686104532ebf3380f2d45b3613b369 - + https://github.com/microsoft/vstest - aa59400b11e1aeee2e8af48928dbd48748a8bef9 + 7855c9b221686104532ebf3380f2d45b3613b369 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -293,18 +293,18 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 568fff703254def7dcd35fda9892bf702d4c81d3 - + https://github.com/dotnet/razor - e137c0322ddb9e3d4f4a5de385647baa9719f9a6 + c937db618f8c8739c6fa66ab4ca541344a468fdc - + https://github.com/dotnet/razor - e137c0322ddb9e3d4f4a5de385647baa9719f9a6 + c937db618f8c8739c6fa66ab4ca541344a468fdc - + https://github.com/dotnet/razor - e137c0322ddb9e3d4f4a5de385647baa9719f9a6 + c937db618f8c8739c6fa66ab4ca541344a468fdc https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -327,17 +327,17 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/roslyn-analyzers - 8fe06101545209b36f67bd86cbb40cfc71e55d4e + abef8ced132657943b7150f01a308e2199a17d5d - + https://github.com/dotnet/roslyn-analyzers - 8fe06101545209b36f67bd86cbb40cfc71e55d4e + abef8ced132657943b7150f01a308e2199a17d5d - + https://github.com/dotnet/roslyn-analyzers - 8fe06101545209b36f67bd86cbb40cfc71e55d4e + abef8ced132657943b7150f01a308e2199a17d5d @@ -469,9 +469,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 81cabf2857a01351e5ab578947c7403a5b128ad1 - + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - e4ede9b8979b9d2b1b1d4383f30a791414f0625b + fdc20074cf1e48b8cf11fe6ac78f255b1fbfe611 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 120b44ba25a9..0d4fe45dc9fd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,12 +11,13 @@ - 8.0.124 + 8.0.418 + 8.0.400 true release - rtm + preview rtm servicing @@ -30,10 +31,11 @@ 2.0.1-servicing-26011-01 2.0.3 13.0.3 + 4.8.6 1.2.0-beta.435 - 7.0.0 + 8.0.0 4.0.0 - 7.0.0 + 8.0.1 8.0.0-beta.25611.2 7.0.0-preview.22423.2 8.0.0 @@ -57,6 +59,7 @@ 8.0.23 8.0.23-servicing.25606.7 8.0.0 + $(MicrosoftExtensionsDependencyModelPackageVersion) 8.0.1 8.0.3 8.0.1 @@ -72,7 +75,7 @@ 8.0.0 8.0.2 8.0.1 - 8.0.0 + 8.0.7 8.0.1 8.0.2 8.0.0 @@ -85,26 +88,26 @@ - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 - 6.8.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 + 6.11.1-rc.2 $(NuGetPackagingPackageVersion) $(NuGetProjectModelPackageVersion) - 17.8.0-release-23615-02 - 17.8.0-release-23615-02 - 17.8.0-release-23615-02 + 17.11.1-release-24455-02 + 17.11.1-release-24455-02 + 17.11.1-release-24455-02 @@ -114,58 +117,56 @@ - 8.1.657407 + 8.3.657409 - 8.0.0-preview.26058.1 - 3.11.0-beta1.26058.1 + 8.0.0-preview.23614.1 + 3.11.0-beta1.23614.1 - 17.8.49 + 17.11.48 $(MicrosoftBuildPackageVersion) - $(MicrosoftBuildPackageVersion) - $(MicrosoftBuildPackageVersion) - 17.8.49-servicing-25616-08 - $(MicrosoftBuildPackageVersion) - $(MicrosoftBuildPackageVersion) + This avoids the need to juggle references to packages that have been updated in newer MSBuild. --> + 17.8.43 + $(MicrosoftBuildMinimumVersion) + $(MicrosoftBuildMinimumVersion) + 17.11.48-servicing-25466-05 + $(MicrosoftBuildMinimumVersion) + $(MicrosoftBuildMinimumVersion) $(MicrosoftBuildTasksCorePackageVersion) + $(MicrosoftBuildMinimumVersion) - 8.0.124 + 8.0.418 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 8.0.124-servicing.26056.5 + 8.0.418-servicing.26055.10 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.8.102-beta.24081.2 + 12.8.403-beta.24526.2 - 4.8.0-7.25569.25 - 4.8.0-7.25569.25 - 4.8.0-7.25569.25 - 4.8.0-7.25569.25 - 4.8.0-7.25569.25 - 4.8.0-7.25569.25 - 4.8.0-7.25569.25 + 4.11.0-3.25569.22 + 4.11.0-3.25569.22 + 4.11.0-3.25569.22 + 4.11.0-3.25569.22 + 4.11.0-3.25569.22 + 4.11.0-3.25569.22 + 4.11.0-3.25569.22 $(MicrosoftNetCompilersToolsetPackageVersion) @@ -180,9 +181,9 @@ - 7.0.0-preview.26064.3 - 7.0.0-preview.26064.3 - 7.0.0-preview.26064.3 + 9.0.0-preview.24577.3 + 9.0.0-preview.24577.3 + 9.0.0-preview.24577.3 From e480ac7959ce13f60e4e36128757cbac687fc64b Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 20 Jan 2026 02:01:35 +0000 Subject: [PATCH 079/133] Update dependencies from https://github.com/dotnet/msbuild build 20260119.1 On relative base path root Microsoft.SourceBuild.Intermediate.msbuild , Microsoft.Build.Localization From Version 17.12.55-preview-25616-06 -> To Version 17.12.57-preview-26069-01 Microsoft.Build From Version 17.12.55 -> To Version 17.12.57 --- NuGet.config | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/NuGet.config b/NuGet.config index d753c8cf4b90..451cb81909f0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -28,7 +28,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4112b8609935..aef7984ed2d7 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -73,18 +73,18 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - f42d88d8b1ac5dbe867e66278c5f4d9573eec65b + 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 - + https://github.com/dotnet/msbuild - f42d88d8b1ac5dbe867e66278c5f4d9573eec65b + 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 - + https://github.com/dotnet/msbuild - f42d88d8b1ac5dbe867e66278c5f4d9573eec65b + 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 diff --git a/eng/Versions.props b/eng/Versions.props index 766489063f26..a9182f2a1f68 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -180,8 +180,8 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.55 - 17.12.55-preview-25616-06 + 17.12.57 + 17.12.57-preview-26069-01 17.11.48 17.12 From 8a774ad7cc228c9340dae847e29730a70a4124f3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 21 Jan 2026 02:01:50 +0000 Subject: [PATCH 080/133] Update dependencies from https://github.com/dotnet/arcade build 20260120.1 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26063.2 -> To Version 9.0.0-beta.26070.1 --- eng/Version.Details.xml | 28 +++++++++---------- eng/Versions.props | 8 +++--- .../core-templates/job/source-build.yml | 2 +- global.json | 6 ++-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index aef7984ed2d7..5471f1151cfc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -589,34 +589,34 @@ - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 diff --git a/eng/Versions.props b/eng/Versions.props index a9182f2a1f68..77b118565d06 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -270,10 +270,10 @@ - 9.0.0-beta.26063.2 - 9.0.0-beta.26063.2 - 9.0.0-beta.26063.2 - 9.0.0-beta.26063.2 + 9.0.0-beta.26070.1 + 9.0.0-beta.26070.1 + 9.0.0-beta.26070.1 + 9.0.0-beta.26070.1 diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index 1037ccedcb55..0e5458e1f46c 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -65,7 +65,7 @@ jobs: demands: ImageOverride -equals build.ubuntu.2004.amd64 ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-azurelinux-3 + image: Azure-Linux-3-Amd64 os: linux ${{ else }}: pool: diff --git a/global.json b/global.json index 43b27ffea644..e82ba5d94031 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "9.0.112", + "dotnet": "9.0.113", "runtimes": { "dotnet": [ "$(VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion)" @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26063.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26063.2", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26070.1", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26070.1", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From 547c686d68d92ff740e29f712f397123dbee10b9 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 21 Jan 2026 02:01:54 +0000 Subject: [PATCH 081/133] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20260120.3 On relative base path root Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 9.0.0-alpha.1.26055.1 -> To Version 9.0.0-alpha.1.26070.3 --- eng/Version.Details.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index aef7984ed2d7..b8798df1942d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -451,9 +451,9 @@ - + https://github.com/dotnet/source-build-reference-packages - 36e2d072b287fb211f288498b2d4553efdee7990 + d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc From d972fe4a044acbed5b3b2759a9245ded66439c95 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 21 Jan 2026 02:02:07 +0000 Subject: [PATCH 082/133] Update dependencies from https://github.com/dotnet/arcade build 20260120.1 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26063.2 -> To Version 9.0.0-beta.26070.1 --- eng/Version.Details.xml | 28 +++++++++---------- eng/Versions.props | 8 +++--- .../core-templates/job/source-build.yml | 2 +- global.json | 6 ++-- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ed60ca0d36e2..eda5607ebf64 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -555,34 +555,34 @@ - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 - + https://github.com/dotnet/arcade - c85f9aceddaf85296e3efbc463daaa34fef5a375 + 9b9436a55a49bd58acb8ae95a57ad2185da26805 diff --git a/eng/Versions.props b/eng/Versions.props index f7bca87d1eb6..ed0dbcb05722 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -272,10 +272,10 @@ - 9.0.0-beta.26063.2 - 9.0.0-beta.26063.2 - 9.0.0-beta.26063.2 - 9.0.0-beta.26063.2 + 9.0.0-beta.26070.1 + 9.0.0-beta.26070.1 + 9.0.0-beta.26070.1 + 9.0.0-beta.26070.1 diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index 1037ccedcb55..0e5458e1f46c 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -65,7 +65,7 @@ jobs: demands: ImageOverride -equals build.ubuntu.2004.amd64 ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-azurelinux-3 + image: Azure-Linux-3-Amd64 os: linux ${{ else }}: pool: diff --git a/global.json b/global.json index 43b27ffea644..e82ba5d94031 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "9.0.112", + "dotnet": "9.0.113", "runtimes": { "dotnet": [ "$(VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion)" @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26063.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26063.2", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26070.1", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26070.1", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From 1317c5281c878b903a5572d0396fde883bc53c61 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 21 Jan 2026 15:34:46 +0000 Subject: [PATCH 083/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260121.1 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.25381.1 -> To Version 9.0.0-preview.26071.1 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index aef7984ed2d7..7e1716d567f5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -631,14 +631,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - 0898abbb5899ef400b8372913c2320295798a687 + e4cdae73d1aaad398c2915f319e3d8d8ed41a737 - + https://github.com/dotnet/scenario-tests - 0898abbb5899ef400b8372913c2320295798a687 + e4cdae73d1aaad398c2915f319e3d8d8ed41a737 From 4b57472b533ebe8fa1d889f948e9d8aaeef3436d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 22 Jan 2026 02:01:14 +0000 Subject: [PATCH 084/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260121.1 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.25381.1 -> To Version 9.0.0-preview.26071.1 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ed60ca0d36e2..16b4763ff5cd 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -597,14 +597,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - 0898abbb5899ef400b8372913c2320295798a687 + e4cdae73d1aaad398c2915f319e3d8d8ed41a737 - + https://github.com/dotnet/scenario-tests - 0898abbb5899ef400b8372913c2320295798a687 + e4cdae73d1aaad398c2915f319e3d8d8ed41a737 From dec8137796aa06990b8f834cdf2720427aa36b23 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sun, 25 Jan 2026 08:57:35 +0000 Subject: [PATCH 085/133] Update dependencies from https://github.com/dotnet/roslyn-analyzers build 20260125.3 On relative base path root Microsoft.SourceBuild.Intermediate.roslyn-analyzers , Microsoft.CodeAnalysis.PublicApiAnalyzers From Version 3.11.0-beta1.26057.1 -> To Version 3.11.0-beta1.26075.3 Microsoft.CodeAnalysis.NetAnalyzers From Version 9.0.0-preview.26057.1 -> To Version 9.0.0-preview.26075.3 --- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index aef7984ed2d7..b26d48f10983 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -408,16 +408,16 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + https://github.com/dotnet/roslyn-analyzers 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + https://github.com/dotnet/roslyn-analyzers 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 diff --git a/eng/Versions.props b/eng/Versions.props index a9182f2a1f68..9a57df630263 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -158,8 +158,8 @@ - 9.0.0-preview.26057.1 - 3.11.0-beta1.26057.1 + 9.0.0-preview.26075.3 + 3.11.0-beta1.26075.3 From 95daeb8c2b49f411a45b68e2ce3bfdd5d876653a Mon Sep 17 00:00:00 2001 From: "Donna Chen (BEYONDSOFT CONSULTING INC)" Date: Mon, 26 Jan 2026 16:47:16 +0800 Subject: [PATCH 086/133] Revert the change to WorkloadTests.cs --- .../WorkloadTests.cs | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/test/Microsoft.NET.Build.Tests/WorkloadTests.cs b/test/Microsoft.NET.Build.Tests/WorkloadTests.cs index f3269c8139de..f7e79ef01159 100644 --- a/test/Microsoft.NET.Build.Tests/WorkloadTests.cs +++ b/test/Microsoft.NET.Build.Tests/WorkloadTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using NuGet.Versioning; @@ -11,8 +11,7 @@ public WorkloadTests(ITestOutputHelper log) : base(log) { } - // Changing these tests to core MSBuild only for 8.0 since there were weird test failures and the Full Framework resolver doesn't ship from 8.0 into Visual Studio anymore. - [CoreMSBuildOnlyFact] + [Fact] public void It_should_build_with_workload() { var testProject = new TestProject() @@ -30,7 +29,7 @@ public void It_should_build_with_workload() .Pass(); } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_fail_without_workload() { var testProject = new TestProject() @@ -50,7 +49,7 @@ public void It_should_fail_without_workload() .HaveStdOutContaining("NETSDK1147"); } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_create_suggested_workload_items() { var testProject = new TestProject() @@ -83,7 +82,7 @@ public void It_should_create_suggested_workload_items() .BeEquivalentTo(new[] { ("microsoft-net-sdk-missingtestworkload", "microsoft.net.sdk.missingtestworkload") }); } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_fail_to_restore_without_workload_when_multitargeted() { var testProject = new TestProject() @@ -110,7 +109,7 @@ public void It_should_fail_to_restore_without_workload_when_multitargeted() // .HaveStdOutContaining("android"); } - [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/19866")] + [Fact] public void It_should_fail_to_build_without_workload_when_multitargeted() { var testProject = new TestProject() @@ -132,7 +131,7 @@ public void It_should_fail_to_build_without_workload_when_multitargeted() .HaveStdOutContaining("android"); } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_fail_to_build_when_multitargeted_to_unknown_platforms() { var testProject = new TestProject() @@ -153,7 +152,7 @@ public void It_should_fail_to_build_when_multitargeted_to_unknown_platforms() } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_fail_with_resolver_disabled() { var testProject = new TestProject() @@ -175,7 +174,7 @@ public void It_should_fail_with_resolver_disabled() .HaveStdOutContaining("NETSDK1208"); } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_import_AutoImports_for_installed_workloads() { var testProject = new TestProject() @@ -201,7 +200,7 @@ public void It_should_import_AutoImports_for_installed_workloads() .BeEquivalentTo("true"); } - [CoreMSBuildOnlyFact] + [Fact] public void It_should_import_aliased_pack() { var testProject = new TestProject() @@ -230,7 +229,7 @@ public void It_should_import_aliased_pack() .BeEquivalentTo("true"); } - [CoreMSBuildOnlyFact(Skip = "https://github.com/dotnet/sdk/issues/19866")] + [Fact] public void It_should_get_suggested_workload_by_GetRequiredWorkloads_target() { var mainProject = new TestProject() @@ -260,11 +259,11 @@ public void It_should_get_suggested_workload_by_GetRequiredWorkloads_target() .BeEquivalentTo("android"); } - [CoreMSBuildOnlyTheory(Skip = "https://github.com/dotnet/installer/issues/13361")] - [InlineData($"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "android;android-aot")] - [InlineData(ToolsetInfo.CurrentTargetFramework, $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "macos;android-aot")] - [InlineData($"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android", "macos;android-aot")] - [InlineData(ToolsetInfo.CurrentTargetFramework, ToolsetInfo.CurrentTargetFramework, "macos")] + [Theory] + [InlineData($"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "android;ios")] + [InlineData(ToolsetInfo.CurrentTargetFramework, $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android;{ToolsetInfo.CurrentTargetFramework}-ios", "android;ios")] + [InlineData($"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-ios", $"{ToolsetInfo.CurrentTargetFramework};{ToolsetInfo.CurrentTargetFramework}-android", "android;ios")] + [InlineData(ToolsetInfo.CurrentTargetFramework, ToolsetInfo.CurrentTargetFramework, null)] public void Given_multi_target_It_should_get_suggested_workload_by_GetRequiredWorkloads_target(string mainTfm, string referencingTfm, string expected) { // Skip Test if SDK is < 6.0.400 From eec1bfc127155f4f042c4736cb52c4f3d57b60f6 Mon Sep 17 00:00:00 2001 From: "Donna Chen (BEYONDSOFT CONSULTING INC)" Date: Mon, 26 Jan 2026 16:53:25 +0800 Subject: [PATCH 087/133] Revert the change to NuGet.config --- NuGet.config | 5 ----- test/Microsoft.NET.Build.Tests/WorkloadTests.cs | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/NuGet.config b/NuGet.config index 22ac8ecc7672..451cb81909f0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,10 +24,8 @@ - - @@ -35,13 +33,11 @@ - - @@ -72,7 +68,6 @@ - diff --git a/test/Microsoft.NET.Build.Tests/WorkloadTests.cs b/test/Microsoft.NET.Build.Tests/WorkloadTests.cs index f7e79ef01159..7526c08d0353 100644 --- a/test/Microsoft.NET.Build.Tests/WorkloadTests.cs +++ b/test/Microsoft.NET.Build.Tests/WorkloadTests.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using NuGet.Versioning; From f26b426ff9c783d0d955256632eaf550687c8002 Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Thu, 29 Jan 2026 12:44:00 -0600 Subject: [PATCH 088/133] Port sdk-diff-tests and license-scan pipelines to 1ES pipeline templates (#52735) --- .../pipelines/source-build-sdk-diff-tests.yml | 98 +++--- .../templates/jobs/sdk-diff-tests.yml | 16 +- .../eng/pipelines/vmr-license-scan.yml | 308 +++++++++--------- 3 files changed, 227 insertions(+), 195 deletions(-) diff --git a/src/SourceBuild/content/eng/pipelines/source-build-sdk-diff-tests.yml b/src/SourceBuild/content/eng/pipelines/source-build-sdk-diff-tests.yml index 7008c8bb080c..97ce66882e53 100644 --- a/src/SourceBuild/content/eng/pipelines/source-build-sdk-diff-tests.yml +++ b/src/SourceBuild/content/eng/pipelines/source-build-sdk-diff-tests.yml @@ -20,13 +20,15 @@ resources: - refs/heads/release/*.0.1xx-preview* - refs/heads/internal/release/*.0.1xx* + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + pr: none trigger: none -pool: - name: NetCore1ESPool-Svc-Internal - demands: ImageOverride -equals 1es-ubuntu-2204 - parameters: - name: dotnetDotnetRunId displayName: 'Specific dotnet-dotnet run ID number (e.g `2108850`)' @@ -39,46 +41,60 @@ variables: # GH access token for SB bot - BotAccount-dotnet-sb-bot-pat - group: Dotnet-SourceBuild-Secrets -jobs: -- template: templates/jobs/sdk-diff-tests.yml +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates parameters: - buildName: ${{ format('{0}_Offline_MsftSdk', variables.centOSStreamName) }} - targetRid: ${{ variables.centOSStreamX64Rid }} - architecture: x64 - dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} - publishTestResultsPr: true + pool: + name: NetCore1ESPool-Svc-Internal + image: 1es-ubuntu-2204 + os: linux + sdl: + sourceAnalysisPool: + name: NetCore1ESPool-Svc-Internal + image: 1es-windows-2022 + os: windows + stages: + - stage: stage + jobs: + - template: /eng/pipelines/templates/jobs/sdk-diff-tests.yml@self + parameters: + buildName: ${{ format('{0}_Offline_MsftSdk', variables.centOSStreamName) }} + targetRid: ${{ variables.centOSStreamX64Rid }} + architecture: x64 + dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} + publishTestResultsPr: true -- template: templates/jobs/sdk-diff-tests.yml - parameters: - buildName: ${{ format('{0}_Offline_MsftSdk', variables.almaLinuxName) }} - targetRid: ${{ variables.almaLinuxX64Rid }} - architecture: x64 - dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} + - template: /eng/pipelines/templates/jobs/sdk-diff-tests.yml@self + parameters: + buildName: ${{ format('{0}_Offline_MsftSdk', variables.almaLinuxName) }} + targetRid: ${{ variables.almaLinuxX64Rid }} + architecture: x64 + dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} -- template: templates/jobs/sdk-diff-tests.yml - parameters: - buildName: ${{ format('{0}_Offline_MsftSdk', variables.alpineName) }} - targetRid: ${{ variables.alpineX64Rid }} - architecture: x64 - dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} + - template: /eng/pipelines/templates/jobs/sdk-diff-tests.yml@self + parameters: + buildName: ${{ format('{0}_Offline_MsftSdk', variables.alpineName) }} + targetRid: ${{ variables.alpineX64Rid }} + architecture: x64 + dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} -- template: templates/jobs/sdk-diff-tests.yml - parameters: - buildName: ${{ format('{0}_Offline_MsftSdk', variables.fedoraName) }} - targetRid: ${{ variables.fedoraX64Rid }} - architecture: x64 - dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} + - template: /eng/pipelines/templates/jobs/sdk-diff-tests.yml@self + parameters: + buildName: ${{ format('{0}_Offline_MsftSdk', variables.fedoraName) }} + targetRid: ${{ variables.fedoraX64Rid }} + architecture: x64 + dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} -- template: templates/jobs/sdk-diff-tests.yml - parameters: - buildName: ${{ format('{0}_Offline_MsftSdk', variables.ubuntuName) }} - targetRid: ${{ variables.ubuntuX64Rid }} - architecture: x64 - dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} + - template: /eng/pipelines/templates/jobs/sdk-diff-tests.yml@self + parameters: + buildName: ${{ format('{0}_Offline_MsftSdk', variables.ubuntuName) }} + targetRid: ${{ variables.ubuntuX64Rid }} + architecture: x64 + dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} -- template: templates/jobs/sdk-diff-tests.yml - parameters: - buildName: ${{ format('{0}Arm64_Offline_MsftSdk', variables.ubuntuName) }} - targetRid: ${{ variables.ubuntuArm64Rid }} - architecture: arm64 - dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} + - template: /eng/pipelines/templates/jobs/sdk-diff-tests.yml@self + parameters: + buildName: ${{ format('{0}Arm64_Offline_MsftSdk', variables.ubuntuName) }} + targetRid: ${{ variables.ubuntuArm64Rid }} + architecture: arm64 + dotnetDotnetRunId: ${{ parameters.dotnetDotnetRunId }} diff --git a/src/SourceBuild/content/eng/pipelines/templates/jobs/sdk-diff-tests.yml b/src/SourceBuild/content/eng/pipelines/templates/jobs/sdk-diff-tests.yml index 9bd63a32fe0f..cd13ef57fb89 100644 --- a/src/SourceBuild/content/eng/pipelines/templates/jobs/sdk-diff-tests.yml +++ b/src/SourceBuild/content/eng/pipelines/templates/jobs/sdk-diff-tests.yml @@ -18,11 +18,15 @@ parameters: jobs: - job: ${{ parameters.buildName }}_${{ parameters.architecture }} timeoutInMinutes: 150 - pool: - name: NetCore1ESPool-Svc-Internal - demands: ImageOverride -equals 1es-ubuntu-2204 variables: - template: ../variables/pipelines.yml + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish BuildLogs' + condition: succeededOrFailed() + targetPath: '$(Build.StagingDirectory)/BuildLogs' + artifactName: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) steps: - script: | dotnet_dotnet_build='${{ replace(parameters.dotnetDotnetRunId, ' ', '') }}' @@ -151,12 +155,6 @@ jobs: continueOnError: true condition: succeededOrFailed() - - publish: '$(Build.StagingDirectory)/BuildLogs' - artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) - displayName: Publish BuildLogs - continueOnError: true - condition: succeededOrFailed() - - task: PublishTestResults@2 displayName: Publish Test Results condition: succeededOrFailed() diff --git a/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml b/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml index 1eaaa7d2a07e..657ded1a4aa2 100644 --- a/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml +++ b/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml @@ -25,6 +25,13 @@ trigger: - test/Microsoft.DotNet.SourceBuild.SmokeTests/LicenseScanTests.cs - test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/LicenseScanTests +resources: + repositories: + - repository: 1ESPipelineTemplates + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + parameters: # Provides a way to scan a specific repo. If not provided, all repos of the VMR will be scanned. - name: specificRepoName @@ -38,148 +45,159 @@ variables: - name: sdkRoot value: '$(Build.SourcesDirectory)/src/sdk' -jobs: -- job: Setup - pool: - name: NetCore1ESPool-Svc-Internal - demands: ImageOverride -equals 1es-ubuntu-2204 - steps: - - script: | - vmrSrcDir="$(Build.SourcesDirectory)/src" - # Builds an Azure DevOps matrix definition. Each entry in the matrix is a path, - # allowing a job to be run for each src repo. - matrix="" - - # Trim leading/trailing spaces from the repo name - specificRepoName=$(echo "${{ parameters.specificRepoName }}" | awk '{$1=$1};1') - - # If the repo name is provided, only scan that repo. - if [ ! -z "$specificRepoName" ]; then - matrix="\"$specificRepoName\": { \"repoPath\": \"$vmrSrcDir/$specificRepoName\" }" - else - for dir in $vmrSrcDir/*/ - do - if [ ! -z "$matrix" ]; then - matrix="$matrix," - fi - repoName=$(basename $dir) - matrix="$matrix \"$repoName\": { \"repoPath\": \"$dir\" }" - done - fi - - matrix="{ $matrix }" - - echo "##vso[task.setvariable variable=matrix;isOutput=true]$matrix" - name: GetMatrix - displayName: Get Matrix - -- job: LicenseScan - dependsOn: Setup - container: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-source-build-test-amd64 - options: '--memory=6g' - pool: - name: NetCore1ESPool-Svc-Internal - demands: ImageOverride -equals 1es-ubuntu-2204 - timeoutInMinutes: 420 - strategy: - matrix: $[ dependencies.Setup.outputs['GetMatrix.matrix'] ] - steps: - - - script: > - dotnet test - $(Build.SourcesDirectory)/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj - --filter "FullyQualifiedName=Microsoft.DotNet.SourceBuild.SmokeTests.LicenseScanTests.ScanForLicenses" - --logger:'trx;LogFileName=$(Agent.JobName)_LicenseScan.trx' - --logger:'console;verbosity=detailed' - -c Release - -bl:$(Build.SourcesDirectory)/artifacts/log/Debug/BuildTests_$(date +"%m%d%H%M%S").binlog - -flp:LogFile=$(Build.SourcesDirectory)/artifacts/logs/BuildTests_$(date +"%m%d%H%M%S").log - -clp:v=m - /p:SmokeTestsLicenseScanPath=$(repoPath) - /p:SmokeTestsWarnOnLicenseScanDiffs=false - /p:TargetRid=linux-x64 - /p:PortableRid=linux-x64 - /p:SkipPrepareSdkArchive=true - displayName: Run Tests - workingDirectory: $(Build.SourcesDirectory) - - - script: | - set -x - targetFolder=$(Build.StagingDirectory)/BuildLogs/ - mkdir -p ${targetFolder} - cd "$(Build.SourcesDirectory)" - find artifacts/log/ -type f -name "BuildTests*.binlog" -exec cp {} --parents -t ${targetFolder} \; - find artifacts/log/ -type f -name "BuildTests*.log" -exec cp {} --parents -t ${targetFolder} \; - find artifacts/TestResults/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; - find artifacts/TestResults/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \; - echo "Updated:" - find artifacts/TestResults/ -type f -name "UpdatedLicenseExclusions*.txt" - find artifacts/TestResults/ -type f -name "UpdatedLicenseExclusions*.txt" -exec cp {} --parents -t ${targetFolder} \; - find artifacts/TestResults/ -type f -name "Updated*.json" - find artifacts/TestResults/ -type f -name "Updated*.json" -exec cp {} --parents -t ${targetFolder} \; - echo "Results:" - find artifacts/TestResults/ -type f -name "scancode-results*.json" -exec cp {} --parents -t ${targetFolder} \; - echo "All:" - ls -R artifacts/TestResults/ - echo "BuildLogs:" - ls -R ${targetFolder} - displayName: Prepare BuildLogs staging directory - continueOnError: true - condition: succeededOrFailed() - - - publish: '$(Build.StagingDirectory)/BuildLogs' - artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) - displayName: Publish BuildLogs - continueOnError: true - condition: succeededOrFailed() - - - task: PublishTestResults@2 - displayName: Publish Test Results - condition: succeededOrFailed() - continueOnError: true - inputs: - testRunner: vSTest - testResultsFiles: '**/*.trx' - searchFolder: $(Build.SourcesDirectory)/artifacts/TestResults - mergeTestResults: true - publishRunAttachments: true - testRunTitle: $(Agent.JobName) - -- job: Publish_Test_Results_PR - dependsOn: LicenseScan - condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release')) - pool: - name: NetCore1ESPool-Svc-Internal - demands: ImageOverride -equals 1es-ubuntu-2204 - variables: - - template: templates/variables/pipelines.yml - steps: - - - script: | - source ./eng/common/tools.sh - InitializeDotNetCli true - echo "##vso[task.setvariable variable=DotNetPath]$_InitializeDotNetCli" - displayName: Install .NET SDK - workingDirectory: $(Build.SourcesDirectory) - - - template: templates/steps/download-pipeline-artifact.yml - parameters: - pipeline: $(SOURCE_BUILD_LICENSE_SCAN_PIPELINE_ID) - buildId: $(Build.BuildId) - artifact: '' - patterns: '**/Updated*' - displayName: Download Updated Test Files - - - script: | - find $(Pipeline.Workspace)/Artifacts -type f -exec mv {} $(Pipeline.Workspace)/Artifacts \; - displayName: Move Artifacts to root - - - template: templates/steps/create-baseline-update-pr.yml - parameters: - dotnetPath: $(DotNetPath) - pipeline: license - repo: dotnet/sdk - originalFilesDirectory: src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/LicenseScanTests - updatedFilesDirectory: $(Pipeline.Workspace)/Artifacts - pullRequestTitle: Update Source-Build License Scan Baselines and Exclusions +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates + parameters: + pool: + name: NetCore1ESPool-Svc-Internal + image: 1es-ubuntu-2204 + os: linux + sdl: + sourceAnalysisPool: + name: NetCore1ESPool-Svc-Internal + image: 1es-windows-2022 + os: windows + stages: + - stage: stage + jobs: + - job: Setup + steps: + - script: | + vmrSrcDir="$(Build.SourcesDirectory)/src" + # Builds an Azure DevOps matrix definition. Each entry in the matrix is a path, + # allowing a job to be run for each src repo. + matrix="" + + # Trim leading/trailing spaces from the repo name + specificRepoName=$(echo "${{ parameters.specificRepoName }}" | awk '{$1=$1};1') + + # If the repo name is provided, only scan that repo. + if [ ! -z "$specificRepoName" ]; then + matrix="\"$specificRepoName\": { \"repoPath\": \"$vmrSrcDir/$specificRepoName\" }" + else + for dir in $vmrSrcDir/*/ + do + if [ ! -z "$matrix" ]; then + matrix="$matrix," + fi + repoName=$(basename $dir) + matrix="$matrix \"$repoName\": { \"repoPath\": \"$dir\" }" + done + fi + + matrix="{ $matrix }" + + echo "##vso[task.setvariable variable=matrix;isOutput=true]$matrix" + name: GetMatrix + displayName: Get Matrix + + - job: LicenseScan + dependsOn: Setup + container: + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-source-build-test-amd64 + options: '--memory=6g' + pool: + name: NetCore1ESPool-Svc-Internal + demands: ImageOverride -equals 1es-ubuntu-2204 + timeoutInMinutes: 420 + strategy: + matrix: $[ dependencies.Setup.outputs['GetMatrix.matrix'] ] + steps: + + - script: > + dotnet test + $(Build.SourcesDirectory)/test/Microsoft.DotNet.SourceBuild.SmokeTests/Microsoft.DotNet.SourceBuild.SmokeTests.csproj + --filter "FullyQualifiedName=Microsoft.DotNet.SourceBuild.SmokeTests.LicenseScanTests.ScanForLicenses" + --logger:'trx;LogFileName=$(Agent.JobName)_LicenseScan.trx' + --logger:'console;verbosity=detailed' + -c Release + -bl:$(Build.SourcesDirectory)/artifacts/log/Debug/BuildTests_$(date +"%m%d%H%M%S").binlog + -flp:LogFile=$(Build.SourcesDirectory)/artifacts/logs/BuildTests_$(date +"%m%d%H%M%S").log + -clp:v=m + /p:SmokeTestsLicenseScanPath=$(repoPath) + /p:SmokeTestsWarnOnLicenseScanDiffs=false + /p:TargetRid=linux-x64 + /p:PortableRid=linux-x64 + /p:SkipPrepareSdkArchive=true + displayName: Run Tests + workingDirectory: $(Build.SourcesDirectory) + + - script: | + set -x + targetFolder=$(Build.StagingDirectory)/BuildLogs/ + mkdir -p ${targetFolder} + cd "$(Build.SourcesDirectory)" + find artifacts/log/ -type f -name "BuildTests*.binlog" -exec cp {} --parents -t ${targetFolder} \; + find artifacts/log/ -type f -name "BuildTests*.log" -exec cp {} --parents -t ${targetFolder} \; + find artifacts/TestResults/ -type f -name "*.binlog" -exec cp {} --parents -t ${targetFolder} \; + find artifacts/TestResults/ -type f -name "*.log" -exec cp {} --parents -t ${targetFolder} \; + echo "Updated:" + find artifacts/TestResults/ -type f -name "UpdatedLicenseExclusions*.txt" + find artifacts/TestResults/ -type f -name "UpdatedLicenseExclusions*.txt" -exec cp {} --parents -t ${targetFolder} \; + find artifacts/TestResults/ -type f -name "Updated*.json" + find artifacts/TestResults/ -type f -name "Updated*.json" -exec cp {} --parents -t ${targetFolder} \; + echo "Results:" + find artifacts/TestResults/ -type f -name "scancode-results*.json" -exec cp {} --parents -t ${targetFolder} \; + echo "All:" + ls -R artifacts/TestResults/ + echo "BuildLogs:" + ls -R ${targetFolder} + displayName: Prepare BuildLogs staging directory + continueOnError: true + condition: succeededOrFailed() + + - publish: '$(Build.StagingDirectory)/BuildLogs' + artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) + displayName: Publish BuildLogs + continueOnError: true + condition: succeededOrFailed() + + - task: PublishTestResults@2 + displayName: Publish Test Results + condition: succeededOrFailed() + continueOnError: true + inputs: + testRunner: vSTest + testResultsFiles: '**/*.trx' + searchFolder: $(Build.SourcesDirectory)/artifacts/TestResults + mergeTestResults: true + publishRunAttachments: true + testRunTitle: $(Agent.JobName) + + - job: Publish_Test_Results_PR + dependsOn: LicenseScan + condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release')) + pool: + name: NetCore1ESPool-Svc-Internal + demands: ImageOverride -equals 1es-ubuntu-2204 + variables: + - template: templates/variables/pipelines.yml + steps: + + - script: | + source ./eng/common/tools.sh + InitializeDotNetCli true + echo "##vso[task.setvariable variable=DotNetPath]$_InitializeDotNetCli" + displayName: Install .NET SDK + workingDirectory: $(Build.SourcesDirectory) + + - template: templates/steps/download-pipeline-artifact.yml + parameters: + pipeline: $(SOURCE_BUILD_LICENSE_SCAN_PIPELINE_ID) + buildId: $(Build.BuildId) + artifact: '' + patterns: '**/Updated*' + displayName: Download Updated Test Files + + - script: | + find $(Pipeline.Workspace)/Artifacts -type f -exec mv {} $(Pipeline.Workspace)/Artifacts \; + displayName: Move Artifacts to root + + - template: templates/steps/create-baseline-update-pr.yml + parameters: + dotnetPath: $(DotNetPath) + pipeline: license + repo: dotnet/sdk + originalFilesDirectory: src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.SmokeTests/assets/LicenseScanTests + updatedFilesDirectory: $(Pipeline.Workspace)/Artifacts + pullRequestTitle: Update Source-Build License Scan Baselines and Exclusions From 023a81824806e63a3da6632149a89c8e4e0f1c4f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 Jan 2026 18:45:36 +0000 Subject: [PATCH 089/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index 451cb81909f0..27580bfe749d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,15 +27,17 @@ + + - + - + @@ -61,11 +63,11 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index aef7984ed2d7..ed60ca0d36e2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - 49f403f06033a1d28efd68d72aac1aab949721ce + a1a11ad17b8d7a0999a8c0cfe21f15fce77ae4d6 - + https://github.com/dotnet/templating - 49f403f06033a1d28efd68d72aac1aab949721ce + a1a11ad17b8d7a0999a8c0cfe21f15fce77ae4d6 - + https://github.com/dotnet/templating - 49f403f06033a1d28efd68d72aac1aab949721ce + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a - https://github.com/dotnet/emsdk f364bf26bf50d8cbdd8652d284d25a8ccb55039a @@ -73,67 +69,67 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 6f6d310b4e44c8b10a7d2b64a712cee01afc7214 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 6f6d310b4e44c8b10a7d2b64a712cee01afc7214 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 6f6d310b4e44c8b10a7d2b64a712cee01afc7214 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - 36e2d072b287fb211f288498b2d4553efdee7990 + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index a9182f2a1f68..f7bca87d1eb6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 14 + 3 + 11 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.12-servicing.25608.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.12-servicing.25608.3 @@ -124,7 +123,10 @@ 9.0.12 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.12 9.0.12 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26057.1 - 3.11.0-beta1.26057.1 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.41 + 17.14.41-servicing-25616-07 17.11.48 17.12 - 9.0.114 + 9.0.311 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.114-servicing.26066.4 + 9.0.311-servicing.26069.1 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 9.0.12 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From 93915b90e89f39d20519c611de30441b54500673 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Mon, 2 Feb 2026 09:34:41 -0800 Subject: [PATCH 090/133] Update branding to 8.0.419 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 0d4fe45dc9fd..647a3f611fa3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ - 8.0.418 + 8.0.419 8.0.400 true From 2832ead07dbf01a1c711b281ad0022e46fa00d35 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Mon, 2 Feb 2026 09:35:01 -0800 Subject: [PATCH 091/133] Update branding to 9.0.115 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index a9182f2a1f68..0901364cea09 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -6,7 +6,7 @@ 9 0 1 - 14 + 15 From 1bf3ed11b3e29fadec1db314643ba27e60c9a55d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 2 Feb 2026 19:31:32 +0000 Subject: [PATCH 092/133] Update dependencies from https://github.com/dotnet/templating build 20260202.2 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.311 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.311-servicing.26069.1 -> To Version 9.0.312-servicing.26102.2 --- NuGet.config | 2 +- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index 27580bfe749d..17ab7a5e6912 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ed60ca0d36e2..f97c8f1cc312 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,13 +1,13 @@ - + https://github.com/dotnet/templating - a1a11ad17b8d7a0999a8c0cfe21f15fce77ae4d6 + b7755a99a42d384e8d0fa07c3f2c0c43ab3c3f8a - + https://github.com/dotnet/templating - a1a11ad17b8d7a0999a8c0cfe21f15fce77ae4d6 + b7755a99a42d384e8d0fa07c3f2c0c43ab3c3f8a diff --git a/eng/Versions.props b/eng/Versions.props index f7bca87d1eb6..bc80b4cd8162 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -189,13 +189,13 @@ - 9.0.311 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.311-servicing.26069.1 + 9.0.312-servicing.26102.2 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From c28b8b102ecd072e1b8784badf7553788f3bd03e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 3 Feb 2026 08:37:45 +0000 Subject: [PATCH 093/133] Update dependencies from https://github.com/dotnet/templating build 20260202.8 On relative base path root Microsoft.SourceBuild.Intermediate.templating , Microsoft.TemplateEngine.Mocks From Version 9.0.114-servicing.26066.4 -> To Version 9.0.115-servicing.26102.8 Microsoft.TemplateEngine.Abstractions From Version 9.0.114 -> To Version 9.0.115 --- NuGet.config | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/NuGet.config b/NuGet.config index 451cb81909f0..e448708a98fd 100644 --- a/NuGet.config +++ b/NuGet.config @@ -35,7 +35,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5471f1151cfc..122a34c0e8db 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - 49f403f06033a1d28efd68d72aac1aab949721ce + cdbf978719c3506b7d56ebfb067e5f5148167bba - + https://github.com/dotnet/templating - 49f403f06033a1d28efd68d72aac1aab949721ce + cdbf978719c3506b7d56ebfb067e5f5148167bba - + https://github.com/dotnet/templating - 49f403f06033a1d28efd68d72aac1aab949721ce + cdbf978719c3506b7d56ebfb067e5f5148167bba diff --git a/eng/Versions.props b/eng/Versions.props index fe9de214c02d..3960433a71d7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -187,13 +187,13 @@ - 9.0.114 + 9.0.115 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.114-servicing.26066.4 + 9.0.115-servicing.26102.8 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 578a65cccfab76915af831141ebf4a141c142bc3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 3 Feb 2026 08:42:17 +0000 Subject: [PATCH 094/133] Update dependencies from https://github.com/dotnet/templating build 20260202.9 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.311 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.311-servicing.26069.1 -> To Version 9.0.312-servicing.26102.9 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 17ab7a5e6912..17e02b99d23a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f97c8f1cc312..dc695f00c56a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - b7755a99a42d384e8d0fa07c3f2c0c43ab3c3f8a + 7271f433507cba3ed63328c01fd5dc061dac31a1 - + https://github.com/dotnet/templating - b7755a99a42d384e8d0fa07c3f2c0c43ab3c3f8a + 7271f433507cba3ed63328c01fd5dc061dac31a1 diff --git a/eng/Versions.props b/eng/Versions.props index 8bf93d455dba..188b88d16947 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26102.2 + 9.0.312-servicing.26102.9 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 33bfda1c9bbdaaffc9f114e025c850aec4512d4a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 3 Feb 2026 09:37:36 +0000 Subject: [PATCH 095/133] Update dependencies from https://github.com/dotnet/templating build 20260203.1 On relative base path root Microsoft.SourceBuild.Intermediate.templating , Microsoft.TemplateEngine.Mocks From Version 9.0.114-servicing.26066.4 -> To Version 9.0.115-servicing.26103.1 Microsoft.TemplateEngine.Abstractions From Version 9.0.114 -> To Version 9.0.115 --- NuGet.config | 2 +- eng/Version.Details.xml | 10 +++++----- eng/Versions.props | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index e448708a98fd..c46104cfb806 100644 --- a/NuGet.config +++ b/NuGet.config @@ -35,7 +35,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 122a34c0e8db..9cb855c4552a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,16 +3,16 @@ https://github.com/dotnet/templating - cdbf978719c3506b7d56ebfb067e5f5148167bba + e99d728d09ae2e529b3e0a17b4f02896af6e70ee - + https://github.com/dotnet/templating - cdbf978719c3506b7d56ebfb067e5f5148167bba + e99d728d09ae2e529b3e0a17b4f02896af6e70ee - + https://github.com/dotnet/templating - cdbf978719c3506b7d56ebfb067e5f5148167bba + e99d728d09ae2e529b3e0a17b4f02896af6e70ee diff --git a/eng/Versions.props b/eng/Versions.props index 3960433a71d7..d2c8bae91e90 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -193,7 +193,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26102.8 + 9.0.115-servicing.26103.1 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From f4e8b2be3db9ff957d11a103a0a393c35763104c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 3 Feb 2026 09:49:19 +0000 Subject: [PATCH 096/133] Update dependencies from https://github.com/dotnet/templating build 20260203.2 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.311 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.311-servicing.26069.1 -> To Version 9.0.312-servicing.26103.2 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 17e02b99d23a..164a68a6e3d1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0b1718ad387c..fdc1fe42f975 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - 7271f433507cba3ed63328c01fd5dc061dac31a1 + 5c37c89d64da45649f639add584c2bc19c6b0b28 - + https://github.com/dotnet/templating - 7271f433507cba3ed63328c01fd5dc061dac31a1 + 5c37c89d64da45649f639add584c2bc19c6b0b28 diff --git a/eng/Versions.props b/eng/Versions.props index bfefd7535a0a..f0af2d579886 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26102.9 + 9.0.312-servicing.26103.2 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From becbd7e7c7b82d35cae51e6ea2fdef6d846a1b97 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 3 Feb 2026 10:17:53 +0000 Subject: [PATCH 097/133] [release/9.0.3xx] Update dependencies from dotnet/msbuild (#52594) [release/9.0.3xx] Update dependencies from dotnet/msbuild - Merge branch 'release/9.0.3xx' into darc-release/9.0.3xx-d8f7811a-966c-4a87-8767-8d1875ff2eaf - Merge branch 'release/9.0.3xx' into darc-release/9.0.3xx-d8f7811a-966c-4a87-8767-8d1875ff2eaf --- NuGet.config | 2 +- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/NuGet.config b/NuGet.config index 27580bfe749d..2081bef837b6 100644 --- a/NuGet.config +++ b/NuGet.config @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 866734d51eb9..abe363f8b20c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -69,18 +69,18 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - 6f6d310b4e44c8b10a7d2b64a712cee01afc7214 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 6f6d310b4e44c8b10a7d2b64a712cee01afc7214 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 6f6d310b4e44c8b10a7d2b64a712cee01afc7214 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 diff --git a/eng/Versions.props b/eng/Versions.props index ea9121129f77..8e5076c4fa9a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -182,8 +182,8 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.14.41 - 17.14.41-servicing-25616-07 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 From 7001700c2859795c78ad032becb50291634a80ec Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 4 Feb 2026 02:02:08 +0000 Subject: [PATCH 098/133] Update dependencies from https://github.com/dotnet/templating build 20260202.5 On relative base path root Microsoft.SourceBuild.Intermediate.templating , Microsoft.TemplateEngine.Mocks From Version 8.0.418-servicing.26055.10 -> To Version 8.0.419-servicing.26102.5 Microsoft.TemplateEngine.Abstractions From Version 8.0.418 -> To Version 8.0.419 --- NuGet.config | 9 +-------- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 4 ++-- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/NuGet.config b/NuGet.config index a15c8be96590..7d3def07b816 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,26 +4,22 @@ - - - - + - @@ -50,17 +46,14 @@ - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3e075aa26930..e9af68903bef 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,17 +1,17 @@ - + https://github.com/dotnet/templating - 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 + f7df7689eef984a98b71017bef8a67146797d92b - + https://github.com/dotnet/templating - 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 + f7df7689eef984a98b71017bef8a67146797d92b - + https://github.com/dotnet/templating - 13c6760d66f74bfb5c8ce8343cf4c5d8f7471584 + f7df7689eef984a98b71017bef8a67146797d92b diff --git a/eng/Versions.props b/eng/Versions.props index 647a3f611fa3..c68493510fd5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -143,13 +143,13 @@ - 8.0.418 + 8.0.419 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 8.0.418-servicing.26055.10 + 8.0.419-servicing.26102.5 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 56746fe9af6d50ed2706741e0f9f4793bbf4b0ee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 05:41:12 +0000 Subject: [PATCH 099/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index c46104cfb806..854a7bea1124 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,15 +27,17 @@ + + - + - + @@ -61,11 +63,11 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a9e94d1908ba..098ec3573406 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 5c37c89d64da45649f639add584c2bc19c6b0b28 - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 5c37c89d64da45649f639add584c2bc19c6b0b28 - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a - https://github.com/dotnet/emsdk f364bf26bf50d8cbdd8652d284d25a8ccb55039a @@ -73,67 +69,67 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index 1794d3b682fd..ea5f81f92452 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.12-servicing.25608.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.12-servicing.25608.3 @@ -124,7 +123,10 @@ 9.0.12 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.12 9.0.12 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26103.1 + 9.0.312-servicing.26103.2 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 9.0.12 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From d26dc607f7b58192948f7a8dd8597f4f77639153 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 5 Feb 2026 02:02:06 +0000 Subject: [PATCH 100/133] Update dependencies from https://github.com/dotnet/arcade build 20260204.5 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26070.1 -> To Version 9.0.0-beta.26104.5 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 8 ++++---- global.json | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 098ec3573406..445694ca8a4d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -555,34 +555,34 @@ - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 diff --git a/eng/Versions.props b/eng/Versions.props index ea5f81f92452..0436bfb1167b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -272,10 +272,10 @@ - 9.0.0-beta.26070.1 - 9.0.0-beta.26070.1 - 9.0.0-beta.26070.1 - 9.0.0-beta.26070.1 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 diff --git a/global.json b/global.json index e82ba5d94031..13c3e979dcfe 100644 --- a/global.json +++ b/global.json @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26070.1", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26070.1", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26104.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26104.5", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From 0fe84d87e921e4a64720eb46601c7626fc639847 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 5 Feb 2026 02:02:13 +0000 Subject: [PATCH 101/133] Update dependencies from https://github.com/dotnet/arcade build 20260204.5 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26070.1 -> To Version 9.0.0-beta.26104.5 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 8 ++++---- global.json | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a9e94d1908ba..b48b9cc5331f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -589,34 +589,34 @@ - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 9b9436a55a49bd58acb8ae95a57ad2185da26805 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 diff --git a/eng/Versions.props b/eng/Versions.props index 1794d3b682fd..12e55782eefb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -270,10 +270,10 @@ - 9.0.0-beta.26070.1 - 9.0.0-beta.26070.1 - 9.0.0-beta.26070.1 - 9.0.0-beta.26070.1 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 diff --git a/global.json b/global.json index e82ba5d94031..13c3e979dcfe 100644 --- a/global.json +++ b/global.json @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26070.1", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26070.1", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26104.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26104.5", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From c85715ccd0c2d777f7cce8276b8d40cec26b3743 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 5 Feb 2026 05:39:33 +0000 Subject: [PATCH 102/133] Update dependencies from https://github.com/dotnet/templating build 20260204.4 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.312 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.312-servicing.26103.2 -> To Version 9.0.312-servicing.26104.4 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 854a7bea1124..8b8d80ac57c5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 445694ca8a4d..5df9fe9eb25e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - 5c37c89d64da45649f639add584c2bc19c6b0b28 + b7a4f3707f1370b48969306d7b22bbd62ab5a8ea - + https://github.com/dotnet/templating - 5c37c89d64da45649f639add584c2bc19c6b0b28 + b7a4f3707f1370b48969306d7b22bbd62ab5a8ea diff --git a/eng/Versions.props b/eng/Versions.props index 0436bfb1167b..1fb77d2527e7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26103.2 + 9.0.312-servicing.26104.4 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 9861f26f5ac5cc3fc31f373fb42924820a49eb21 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 06:09:59 +0000 Subject: [PATCH 103/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index c46104cfb806..854a7bea1124 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,15 +27,17 @@ + + - + - + @@ -61,11 +63,11 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b48b9cc5331f..445694ca8a4d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 5c37c89d64da45649f639add584c2bc19c6b0b28 - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 5c37c89d64da45649f639add584c2bc19c6b0b28 - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a - https://github.com/dotnet/emsdk f364bf26bf50d8cbdd8652d284d25a8ccb55039a @@ -73,67 +69,67 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index 12e55782eefb..0436bfb1167b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.12-servicing.25608.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.12-servicing.25608.3 @@ -124,7 +123,10 @@ 9.0.12 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.12 9.0.12 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26103.1 + 9.0.312-servicing.26103.2 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 9.0.12 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From d8b7771330cba77b31b801a46896b53542f309ae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 06:11:11 +0000 Subject: [PATCH 104/133] Reset files to release/9.0.1xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 38 +- eng/Version.Details.xml | 669 +++++++++++------- eng/Versions.props | 375 ++++++---- eng/common/SetupNugetSources.ps1 | 54 +- eng/common/SetupNugetSources.sh | 62 +- eng/common/build.cmd | 3 + eng/common/build.ps1 | 3 + eng/common/build.sh | 15 +- eng/common/core-templates/job/job.yml | 253 +++++++ eng/common/core-templates/job/onelocbuild.yml | 121 ++++ .../job/publish-build-assets.yml | 172 +++++ .../core-templates/job/source-build.yml | 99 +++ .../job/source-index-stage1.yml | 81 +++ .../core-templates/jobs/codeql-build.yml | 33 + eng/common/core-templates/jobs/jobs.yml | 123 ++++ .../core-templates/jobs/source-build.yml | 63 ++ .../post-build/common-variables.yml | 22 + .../core-templates/post-build/post-build.yml | 327 +++++++++ .../post-build/setup-maestro-vars.yml | 74 ++ .../steps/component-governance.yml | 16 + .../steps/enable-internal-runtimes.yml | 32 + .../steps/enable-internal-sources.yml | 47 ++ .../core-templates/steps/generate-sbom.yml | 54 ++ .../steps/get-delegation-sas.yml | 55 ++ .../steps/get-federated-access-token.yml | 42 ++ .../steps/publish-build-artifacts.yml | 20 + .../core-templates/steps/publish-logs.yml | 58 ++ .../steps/publish-pipeline-artifacts.yml | 20 + .../core-templates/steps/retain-build.yml | 28 + .../core-templates/steps/send-to-helix.yml | 93 +++ .../core-templates/steps/source-build.yml | 137 ++++ .../variables/pool-providers.yml | 8 + eng/common/cross/build-android-rootfs.sh | 8 +- eng/common/cross/build-rootfs.sh | 262 +++++-- eng/common/cross/riscv64/tizen/tizen.patch | 9 + eng/common/cross/tizen-build-rootfs.sh | 21 + eng/common/cross/tizen-fetch.sh | 19 +- eng/common/cross/toolchain.cmake | 25 +- eng/common/darc-init.ps1 | 2 +- eng/common/darc-init.sh | 2 +- eng/common/dotnet-install.sh | 5 +- eng/common/generate-sbom-prep.sh | 2 +- eng/common/helixpublish.proj | 1 + eng/common/internal/Directory.Build.props | 7 + eng/common/internal/NuGet.config | 3 + eng/common/internal/Tools.csproj | 14 +- eng/common/native/CommonLibrary.psm1 | 3 +- eng/common/native/init-compiler.sh | 117 +-- eng/common/native/init-distro-rid.sh | 76 +- eng/common/native/init-os-and-arch.sh | 7 +- .../post-build/check-channel-consistency.ps1 | 12 +- eng/common/post-build/nuget-validation.ps1 | 9 +- eng/common/post-build/nuget-verification.ps1 | 2 +- eng/common/post-build/publish-using-darc.ps1 | 15 +- eng/common/post-build/redact-logs.ps1 | 89 +++ .../post-build/sourcelink-validation.ps1 | 10 +- eng/common/post-build/symbols-validation.ps1 | 2 - eng/common/sdl/NuGet.config | 4 +- eng/common/sdl/execute-all-sdl-tools.ps1 | 4 +- eng/common/sdl/init-sdl.ps1 | 8 + eng/common/sdl/packages.config | 2 +- eng/common/sdl/sdl.ps1 | 4 +- eng/common/sdl/trim-assets-version.ps1 | 2 +- eng/common/template-guidance.md | 133 ++++ eng/common/templates-official/job/job.yml | 340 ++------- .../templates-official/job/onelocbuild.yml | 115 +-- .../job/publish-build-assets.yml | 180 +---- .../templates-official/job/source-build.yml | 82 +-- .../job/source-index-stage1.yml | 86 +-- .../templates-official/jobs/codeql-build.yml | 32 +- eng/common/templates-official/jobs/jobs.yml | 104 +-- .../templates-official/jobs/source-build.yml | 62 +- .../post-build/common-variables.yml | 26 +- .../post-build/post-build.yml | 295 +------- .../post-build/setup-maestro-vars.yml | 74 +- .../steps/component-governance.yml | 18 +- .../steps/enable-internal-runtimes.yml | 31 +- .../steps/enable-internal-sources.yml | 7 + .../steps/generate-sbom.yml | 51 +- .../steps/get-delegation-sas.yml | 55 +- .../steps/get-federated-access-token.yml | 45 +- .../steps/publish-build-artifacts.yml | 41 ++ .../templates-official/steps/publish-logs.yml | 26 +- .../steps/publish-pipeline-artifacts.yml | 28 + .../templates-official/steps/retain-build.yml | 33 +- .../steps/send-to-helix.yml | 97 +-- .../templates-official/steps/source-build.yml | 138 +--- eng/common/templates/job/job.yml | 319 ++------- eng/common/templates/job/onelocbuild.yml | 112 +-- .../templates/job/publish-build-assets.yml | 176 +---- eng/common/templates/job/source-build.yml | 81 +-- .../templates/job/source-index-stage1.yml | 85 +-- eng/common/templates/jobs/codeql-build.yml | 32 +- eng/common/templates/jobs/jobs.yml | 104 +-- eng/common/templates/jobs/source-build.yml | 62 +- .../templates/post-build/common-variables.yml | 26 +- .../templates/post-build/post-build.yml | 291 +------- .../post-build/setup-maestro-vars.yml | 74 +- .../templates/steps/component-governance.yml | 18 +- .../steps/enable-internal-runtimes.yml | 30 +- .../steps/enable-internal-sources.yml | 7 + eng/common/templates/steps/generate-sbom.yml | 51 +- .../templates/steps/get-delegation-sas.yml | 55 +- .../steps/get-federated-access-token.yml | 45 +- .../steps/publish-build-artifacts.yml | 40 ++ eng/common/templates/steps/publish-logs.yml | 26 +- .../steps/publish-pipeline-artifacts.yml | 34 + eng/common/templates/steps/retain-build.yml | 33 +- eng/common/templates/steps/send-to-helix.yml | 97 +-- eng/common/templates/steps/source-build.yml | 138 +--- .../templates/variables/pool-providers.yml | 56 +- eng/common/tools.ps1 | 73 +- eng/common/tools.sh | 39 +- global.json | 13 +- 114 files changed, 4000 insertions(+), 4159 deletions(-) create mode 100644 eng/common/build.cmd create mode 100644 eng/common/core-templates/job/job.yml create mode 100644 eng/common/core-templates/job/onelocbuild.yml create mode 100644 eng/common/core-templates/job/publish-build-assets.yml create mode 100644 eng/common/core-templates/job/source-build.yml create mode 100644 eng/common/core-templates/job/source-index-stage1.yml create mode 100644 eng/common/core-templates/jobs/codeql-build.yml create mode 100644 eng/common/core-templates/jobs/jobs.yml create mode 100644 eng/common/core-templates/jobs/source-build.yml create mode 100644 eng/common/core-templates/post-build/common-variables.yml create mode 100644 eng/common/core-templates/post-build/post-build.yml create mode 100644 eng/common/core-templates/post-build/setup-maestro-vars.yml create mode 100644 eng/common/core-templates/steps/component-governance.yml create mode 100644 eng/common/core-templates/steps/enable-internal-runtimes.yml create mode 100644 eng/common/core-templates/steps/enable-internal-sources.yml create mode 100644 eng/common/core-templates/steps/generate-sbom.yml create mode 100644 eng/common/core-templates/steps/get-delegation-sas.yml create mode 100644 eng/common/core-templates/steps/get-federated-access-token.yml create mode 100644 eng/common/core-templates/steps/publish-build-artifacts.yml create mode 100644 eng/common/core-templates/steps/publish-logs.yml create mode 100644 eng/common/core-templates/steps/publish-pipeline-artifacts.yml create mode 100644 eng/common/core-templates/steps/retain-build.yml create mode 100644 eng/common/core-templates/steps/send-to-helix.yml create mode 100644 eng/common/core-templates/steps/source-build.yml create mode 100644 eng/common/core-templates/variables/pool-providers.yml create mode 100644 eng/common/cross/riscv64/tizen/tizen.patch create mode 100644 eng/common/post-build/redact-logs.ps1 create mode 100644 eng/common/template-guidance.md create mode 100644 eng/common/templates-official/steps/enable-internal-sources.yml create mode 100644 eng/common/templates-official/steps/publish-build-artifacts.yml create mode 100644 eng/common/templates-official/steps/publish-pipeline-artifacts.yml create mode 100644 eng/common/templates/steps/enable-internal-sources.yml create mode 100644 eng/common/templates/steps/publish-build-artifacts.yml create mode 100644 eng/common/templates/steps/publish-pipeline-artifacts.yml diff --git a/NuGet.config b/NuGet.config index 7d3def07b816..c46104cfb806 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,26 +3,42 @@ + + + + + + + + + + + + + + + + + + + + - - - + - + - - @@ -30,6 +46,9 @@ + + + @@ -39,23 +58,18 @@ - - - - + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e9af68903bef..b48b9cc5331f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,521 +1,664 @@ - + https://github.com/dotnet/templating - f7df7689eef984a98b71017bef8a67146797d92b + e99d728d09ae2e529b3e0a17b4f02896af6e70ee - + https://github.com/dotnet/templating - f7df7689eef984a98b71017bef8a67146797d92b + e99d728d09ae2e529b3e0a17b4f02896af6e70ee - + + https://github.com/dotnet/templating - f7df7689eef984a98b71017bef8a67146797d92b + e99d728d09ae2e529b3e0a17b4f02896af6e70ee - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 - + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + 2f124007573374800632d39177cde00ca9fe1ef0 + + + + + + https://github.com/dotnet/core-setup + 7d57652f33493fa022125b7f63aad0d70c52d810 + + + https://github.com/dotnet/emsdk + f364bf26bf50d8cbdd8652d284d25a8ccb55039a + + + https://github.com/dotnet/emsdk + f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + + https://github.com/dotnet/emsdk - 87f89d77d2eb70ed29b3e0f37cfbf28bfd49c536 + f364bf26bf50d8cbdd8652d284d25a8ccb55039a + - - https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted - 02bf66295b64ab368d12933041f7281aad186a2d + + https://github.com/dotnet/msbuild + 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 - - https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted - 02bf66295b64ab368d12933041f7281aad186a2d + + https://github.com/dotnet/msbuild + 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 - - https://dev.azure.com/devdiv/DevDiv/_git/DotNet-msbuild-Trusted - 02bf66295b64ab368d12933041f7281aad186a2d + + + https://github.com/dotnet/msbuild + 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 - + https://github.com/dotnet/fsharp - e11d7079bebc6f101c5313fe0d1de9e3d38a7c02 + 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 - + + https://github.com/dotnet/fsharp - e11d7079bebc6f101c5313fe0d1de9e3d38a7c02 + 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 - - https://github.com/dotnet/format - b7d483d5a0ce4e96a3468514f3f4a98f3c371434 - + + https://github.com/dotnet/roslyn + fc52718eccdb37693a40a518b1178b1e23114e68 - + + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + + https://github.com/dotnet/roslyn + fc52718eccdb37693a40a518b1178b1e23114e68 + + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://github.com/dotnet/roslyn - 3fb752d448006a3144a60ccf181d745e555422f9 + fc52718eccdb37693a40a518b1178b1e23114e68 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/nuget/nuget.client - 5469bd0d9de8108f15f21644759773b85471366c + 42bfb4554167e1d2fc2b950728d9bd8164f806c1 - + https://github.com/microsoft/vstest - 7855c9b221686104532ebf3380f2d45b3613b369 - + bc9161306b23641b0364b8f93d546da4d48da1eb - + https://github.com/microsoft/vstest - 7855c9b221686104532ebf3380f2d45b3613b369 + bc9161306b23641b0364b8f93d546da4d48da1eb - + https://github.com/microsoft/vstest - 7855c9b221686104532ebf3380f2d45b3613b369 + bc9161306b23641b0364b8f93d546da4d48da1eb - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c96cd11cb2f0c204f272b2280082a329aee24cf7 + + + https://github.com/microsoft/vstest + bc9161306b23641b0364b8f93d546da4d48da1eb + - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 0167058c735054c0f948ca3925c693a958875427 + 9b9a26408ddd07dc51c232082af1ca6863af7bc9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - b132b33a48ebc857db94785fdd86d671d123911a + 58060180f2776452976616ae4894118dfd21f8d5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 - + f736effe82a61eb6f5eba46e4173eae3b7d3dffd + + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd + - + https://github.com/dotnet/razor - c937db618f8c8739c6fa66ab4ca541344a468fdc - + cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 - + https://github.com/dotnet/razor - c937db618f8c8739c6fa66ab4ca541344a468fdc + cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 - + https://github.com/dotnet/razor - c937db618f8c8739c6fa66ab4ca541344a468fdc + cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 - + + + https://github.com/dotnet/razor + cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + + + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd + + + https://github.com/dotnet/test-templates + 0385265f4d0b6413d64aea0223172366a9b9858c + + + https://github.com/dotnet/test-templates + 307b8f538d83a955d8f6dd909eee41a5555f2f4d + + + https://github.com/dotnet/test-templates + becc4bd157cd6608b51a5ffe414a5d2de6330272 + + + https://github.com/dotnet/test-templates + becc4bd157cd6608b51a5ffe414a5d2de6330272 + + + https://github.com/dotnet/test-templates + 49c9ad01f057b3c6352bbec12b117acc2224493c - + + https://github.com/dotnet/test-templates + 47c90e140b027225b799ca8413af10ee3d5f1126 + + + + https://github.com/dotnet/test-templates + 47c90e140b027225b799ca8413af10ee3d5f1126 + + + + + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms + b05fe71693c6c70b537911f88865ea456a9015f5 + + + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf + 58060180f2776452976616ae4894118dfd21f8d5 + + https://github.com/dotnet/xdt - 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b + 63ae81154c50a1cf9287cc47d8351d55b4289e6d + + + + https://github.com/dotnet/xdt + 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - abef8ced132657943b7150f01a308e2199a17d5d + 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + https://github.com/dotnet/roslyn-analyzers - abef8ced132657943b7150f01a308e2199a17d5d + 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + + https://github.com/dotnet/roslyn-analyzers - abef8ced132657943b7150f01a308e2199a17d5d + 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 - + + https://github.com/dotnet/command-line-api + 803d8598f98fb4efd94604b32627ee9407f246db + + https://github.com/dotnet/command-line-api - 02fe27cd6a9b001c8feb7938e6ef4b3799745759 + 803d8598f98fb4efd94604b32627ee9407f246db - + + + + https://github.com/dotnet/symreader + 0710a7892d89999956e8808c28e9dd0512bd53f3 + + + https://github.com/dotnet/command-line-api - 02fe27cd6a9b001c8feb7938e6ef4b3799745759 + 803d8598f98fb4efd94604b32627ee9407f246db - + + https://github.com/dotnet/source-build-externals - 5f4a123a49dd5480065c8d6182536cf86b4f4410 + 16c380d1ce5fa0b24e232251c31cb013bbf3365f - + + https://github.com/dotnet/source-build-reference-packages - 44b5b62182b48c34c4b6aef28943ec3f3e82f214 + d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc - + https://github.com/dotnet/deployment-tools - 5255d40e228ea1d4b624781b5b97ec16484a3b4b + b2d5c0c5841de4bc036ef4c84b5db3532504e5f3 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 - + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - + https://github.com/dotnet/sourcelink - 94eaac3385cafff41094454966e1af1d1cf60f00 + 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - + + + https://github.com/dotnet/sourcelink + 657ade4711e607cc4759e89e0943aa1ca8aadc63 + + + + https://github.com/dotnet/deployment-tools - 5255d40e228ea1d4b624781b5b97ec16484a3b4b + b2d5c0c5841de4bc036ef4c84b5db3532504e5f3 - + + https://github.com/dotnet/symreader - 27e584661980ee6d82c419a2a471ae505b7d122e + 0710a7892d89999956e8808c28e9dd0512bd53f3 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ef853a71052646a42abf17e888ec6d9a69614ad9 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 568fff703254def7dcd35fda9892bf702d4c81d3 + f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - fdc20074cf1e48b8cf11fe6ac78f255b1fbfe611 - - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 2f124007573374800632d39177cde00ca9fe1ef0 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 - + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - + https://github.com/dotnet/arcade - 4b01306353c43c151d713d152f48a4d523c41960 + c1205e7ef5628ab617dc234c7d89616fcd2917a8 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 81cabf2857a01351e5ab578947c7403a5b128ad1 + + https://github.com/dotnet/arcade + c1205e7ef5628ab617dc234c7d89616fcd2917a8 + + + https://github.com/dotnet/arcade + c1205e7ef5628ab617dc234c7d89616fcd2917a8 + + + + https://github.com/dotnet/arcade + c1205e7ef5628ab617dc234c7d89616fcd2917a8 + - - https://github.com/dotnet/xliff-tasks - 73f0850939d96131c28cf6ea6ee5aacb4da0083a - + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 2f124007573374800632d39177cde00ca9fe1ef0 + + + https://github.com/dotnet/arcade-services + e156e649f28395d9d0ee1e848225a689b59e0fd3 + + + https://github.com/dotnet/arcade-services + e156e649f28395d9d0ee1e848225a689b59e0fd3 + + + https://github.com/dotnet/scenario-tests + e4cdae73d1aaad398c2915f319e3d8d8ed41a737 + + + + https://github.com/dotnet/scenario-tests + e4cdae73d1aaad398c2915f319e3d8d8ed41a737 + + + + + https://github.com/dotnet/aspire + 5fa9337a84a52e9bd185d04d156eccbdcf592f74 + + + + https://github.com/dotnet/aspire + 5fa9337a84a52e9bd185d04d156eccbdcf592f74 + https://github.com/dotnet/runtime diff --git a/eng/Versions.props b/eng/Versions.props index c68493510fd5..12e55782eefb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,193 +1,267 @@ - - - + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - true - true - - - - 8.0.419 - 8.0.400 + + 9 + 0 + 1 + 15 + + $(VersionMajor).$(VersionMinor).$(VersionSDKMinor)00 + $(VersionMajor).$(VersionMinor).$(VersionSDKMinor)$(VersionFeature) + $(VersionMajor).$(VersionMinor) + $(MajorMinorVersion).$(VersionSDKMinor) true release - preview + rtm rtm servicing + + true 6.0.1 - - + + 30 + 32 + 17 + 36 + 20 + $([MSBuild]::Add($(VersionFeature), 10)) + + <_NET70ILLinkPackVersion>7.0.100-1.23211.1 + + + + https://ci.dot.net/public/ + https://dotnetclimsrc.blob.core.windows.net/dotnet/ + + + 10.0.0-preview.24609.2 1.0.0-20230414.1 - 2.21.0 + 2.22.0 2.0.1-servicing-26011-01 2.0.3 13.0.3 4.8.6 1.2.0-beta.435 - 8.0.0 - 4.0.0 - 8.0.1 - 8.0.0-beta.25611.2 - 7.0.0-preview.22423.2 - 8.0.0 - 4.3.0 - 4.3.0 4.0.5 - 8.0.1 - 4.6.0 - 2.0.0-beta4.23307.1 - 2.0.0-rtm.1.25064.1 + 2.0.0-beta4.24324.3 + 0.4.0-alpha.24324.3 + 2.0.0-rtm.1.25059.4 + 2.2.0-beta.24327.2 + 1.1.2-beta1.22216.1 + 10.3.0 3.2.2146 0.3.49-beta + + + 1.8.1 + + + 0.2.0 + - - 8.0.23 - 8.0.23-servicing.25606.7 - 8.0.23 - $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) - 8.0.2 - 8.0.23 - 8.0.23-servicing.25606.7 - 8.0.0 - $(MicrosoftExtensionsDependencyModelPackageVersion) - 8.0.1 - 8.0.3 - 8.0.1 - 8.0.23 - 8.0.0 - 8.0.0 - 8.0.23 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.2 - 8.0.1 - 8.0.7 - 8.0.1 - 8.0.2 - 8.0.0 - 8.0.1 - 8.0.6 - - 8.0.5 - 8.0.0 - 8.0.2 + + 1.1.0-beta.25317.4 - - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - 6.11.1-rc.2 - $(NuGetPackagingPackageVersion) - $(NuGetProjectModelPackageVersion) + + 9.0.12-servicing.25608.3 - - 17.11.1-release-24455-02 - 17.11.1-release-24455-02 - 17.11.1-release-24455-02 + + + 1.1.0-rtm.25262.1 - 8.0.0 - 8.0.0 - 8.0.0 + 9.0.12 + 9.0.12-servicing.25606.9 + 9.0.12 + 9.0.12 + 9.0.12-servicing.25606.9 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 8.0.0-rc.1.23414.4 + 9.0.12-servicing.25606.9 + 9.0.12-servicing.25606.9 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 2.1.0 + 9.0.12 + 8.0.0 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 8.0.0 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + 9.0.12 + + 8.0.5 + 9.0.12 + 9.0.12 - - 8.3.657409 + + 9.0.12-servicing.25609.4 + 9.0.12-servicing.25609.4 + 9.0.12 + 9.0.12 + + + + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4-rc.9 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + 6.12.4 + + + + 17.12.0-release-24508-01 + 17.12.0-release-24508-01 + 17.12.0-release-24508-01 - 8.0.0-preview.23614.1 - 3.11.0-beta1.23614.1 + 9.0.0-preview.26075.3 + 3.11.0-beta1.26075.3 - 17.11.48 - $(MicrosoftBuildPackageVersion) - - 17.8.43 - $(MicrosoftBuildMinimumVersion) - $(MicrosoftBuildMinimumVersion) - 17.11.48-servicing-25466-05 - $(MicrosoftBuildMinimumVersion) - $(MicrosoftBuildMinimumVersion) - $(MicrosoftBuildTasksCorePackageVersion) - $(MicrosoftBuildMinimumVersion) + At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. + + Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> + 17.12.57 + 17.12.57-preview-26069-01 + 17.11.48 + 17.12 - 8.0.419 + 9.0.115 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 8.0.419-servicing.26102.5 + 9.0.115-servicing.26103.1 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.8.403-beta.24526.2 + 12.9.101-beta.25070.7 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - 4.11.0-3.25569.22 - $(MicrosoftNetCompilersToolsetPackageVersion) + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 + 4.12.0-3.25609.5 - 8.0.23 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23-servicing.25609.5 - 8.0.23 + 9.0.12 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12 + 9.0.12 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 + 9.0.12-servicing.25609.3 - - 9.0.0-preview.24577.3 - 9.0.0-preview.24577.3 - 9.0.0-preview.24577.3 + + 9.0.0-preview.26069.1 + 9.0.0-preview.26069.1 + 9.0.0-preview.26069.1 - 8.0.23-servicing.25609.4 + 9.0.12-rtm.25609.3 + 9.0.12-rtm.25609.3 + + + + $(MicrosoftNETCoreAppHostwinx64PackageVersion) + $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) + $(MicrosoftAspNetCoreAppRuntimewinx64PackageVersion) + $(MicrosoftWindowsDesktopAppRuntimewinx64PackageVersion) + + + $(MicrosoftNETCoreAppRuntimePackageVersion) + $(MicrosoftNETCoreAppRuntimePackageVersion) + + + + $(MicrosoftAspNetCoreAppRuntimePackageVersion) + $(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion) + $(MicrosoftDotNetWpfProjectTemplatesPackageVersion) + $(NUnit3DotNetNewTemplatePackageVersion) + + + 2.2.0-beta.19072.10 + 2.0.0 + 9.0.0-preview.26071.1 @@ -195,17 +269,20 @@ 4.0.1 - - 1.0.0-beta.23475.1 + + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 + 9.0.0-beta.26104.5 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 - 8.0.0-beta.23615.1 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 + 9.0.0-beta.25564.5 @@ -215,8 +292,8 @@ 6.12.0 6.1.0 - 8.0.0-beta.25611.2 4.18.4 + 3.4.3 1.3.2 8.0.0-beta.23607.1 @@ -229,15 +306,35 @@ <_DotNetHiveRoot Condition="!HasTrailingSlash('$(_DotNetHiveRoot)')">$(_DotNetHiveRoot)/ $(_DotNetHiveRoot)dotnet$(ExeExtension) - + + 8.0.100 + 8.2.2 + 9.0.100 + 9.0.0 + 35.0.7 + 18.0.9617 + 18.0.9617 + 15.0.9617 + 18.0.9617 - 8.0.23 - $(MicrosoftNETWorkloadEmscriptenCurrentManifest80100PackageVersion) + 9.0.12-servicing.25602.39 + 9.0.12 + $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) - 8.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`)) + 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) $(MicrosoftNETCoreAppRefPackageVersion) - 8.0.100$([System.Text.RegularExpressions.Regex]::Match($(MonoWorkloadManifestVersion), `-rtm|-[A-z]*\.*\d*`)) + 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(MonoWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) + + + + 15.7.179 + 15.7.179 + + + + 2.0.1-servicing-26011-01 + diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 59b2d55e1a33..792b60b49d42 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -1,17 +1,10 @@ -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds. -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080 +# This script adds internal feeds required to build commits that depend on internal package sources. For instance, +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. # -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry -# under for each Maestro managed private feed. Two additional credential -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport. +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # -# This script needs to be called in every job that will restore packages and which the base repo has -# private AzDO feeds in the NuGet.config. -# -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)` -# from the AzureDevOps-Artifact-Feeds-Pats variable group. -# -# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing +# See example call for this script below. # # - task: PowerShell@2 # displayName: Setup Private Feeds Credentials @@ -21,11 +14,18 @@ # arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token # env: # Token: $(dn-bot-dnceng-artifact-feeds-rw) +# +# Note that the NuGetAuthenticate task should be called after SetupNugetSources. +# This ensures that: +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) +# - The credential provider is installed. +# +# This logic is also abstracted into enable-internal-sources.yml. [CmdletBinding()] param ( [Parameter(Mandatory = $true)][string]$ConfigFile, - [Parameter(Mandatory = $true)][string]$Password + $Password ) $ErrorActionPreference = "Stop" @@ -48,11 +48,17 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern else { Write-Host "Package source $SourceName already present." } + AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd } # Add a credential node for the specified source function AddCredential($creds, $source, $username, $pwd) { + # If no cred supplied, don't do anything. + if (!$pwd) { + return; + } + # Looks for credential configuration for the given SourceName. Create it if none is found. $sourceElement = $creds.SelectSingleNode($Source) if ($sourceElement -eq $null) @@ -110,11 +116,6 @@ if (!(Test-Path $ConfigFile -PathType Leaf)) { ExitWithExitCode 1 } -if (!$Password) { - Write-PipelineTelemetryError -Category 'Build' -Message 'Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Please supply a valid PAT' - ExitWithExitCode 1 -} - # Load NuGet.config $doc = New-Object System.Xml.XmlDocument $filename = (Get-Item $ConfigFile).FullName @@ -127,11 +128,14 @@ if ($sources -eq $null) { $doc.DocumentElement.AppendChild($sources) | Out-Null } -# Looks for a node. Create it if none is found. -$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") -if ($creds -eq $null) { - $creds = $doc.CreateElement("packageSourceCredentials") - $doc.DocumentElement.AppendChild($creds) | Out-Null +$creds = $null +if ($Password) { + # Looks for a node. Create it if none is found. + $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") + if ($creds -eq $null) { + $creds = $doc.CreateElement("packageSourceCredentials") + $doc.DocumentElement.AppendChild($creds) | Out-Null + } } # Check for disabledPackageSources; we'll enable any darc-int ones we find there @@ -153,7 +157,7 @@ if ($dotnet31Source -ne $null) { AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password } -$dotnetVersions = @('5','6','7','8') +$dotnetVersions = @('5','6','7','8','9') foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; @@ -164,4 +168,4 @@ foreach ($dotnetVersion in $dotnetVersions) { } } -$doc.Save($filename) \ No newline at end of file +$doc.Save($filename) diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh index c0e7bbef21c4..facb415ca6ff 100644 --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -1,28 +1,27 @@ #!/usr/bin/env bash -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds. -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080 +# This script adds internal feeds required to build commits that depend on internal package sources. For instance, +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. +# +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry -# under for each Maestro's managed private feed. Two additional credential -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport. -# -# This script needs to be called in every job that will restore packages and which the base repo has -# private AzDO feeds in the NuGet.config. -# -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)` -# from the AzureDevOps-Artifact-Feeds-Pats variable group. -# -# Any disabledPackageSources entries which start with "darc-int" will be re-enabled as part of this script executing. +# See example call for this script below. # # - task: Bash@3 -# displayName: Setup Private Feeds Credentials +# displayName: Setup Internal Feeds # inputs: # filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh -# arguments: $(System.DefaultWorkingDirectory)/NuGet.config $Token +# arguments: $(System.DefaultWorkingDirectory)/NuGet.config # condition: ne(variables['Agent.OS'], 'Windows_NT') -# env: -# Token: $(dn-bot-dnceng-artifact-feeds-rw) +# - task: NuGetAuthenticate@1 +# +# Note that the NuGetAuthenticate task should be called after SetupNugetSources. +# This ensures that: +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) +# - The credential provider is installed. +# +# This logic is also abstracted into enable-internal-sources.yml. ConfigFile=$1 CredToken=$2 @@ -48,11 +47,6 @@ if [ ! -f "$ConfigFile" ]; then ExitWithExitCode 1 fi -if [ -z "$CredToken" ]; then - Write-PipelineTelemetryError -category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Please supply a valid PAT" - ExitWithExitCode 1 -fi - if [[ `uname -s` == "Darwin" ]]; then NL=$'\\\n' TB='' @@ -105,7 +99,7 @@ if [ "$?" == "0" ]; then PackageSources+=('dotnet3.1-internal-transport') fi -DotNetVersions=('5' '6' '7' '8') +DotNetVersions=('5' '6' '7' '8' '9') for DotNetVersion in ${DotNetVersions[@]} ; do FeedPrefix="dotnet${DotNetVersion}"; @@ -140,18 +134,20 @@ PackageSources+="$IFS" PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') IFS=$PrevIFS -for FeedName in ${PackageSources[@]} ; do - # Check if there is no existing credential for this FeedName - grep -i "<$FeedName>" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding credentials for $FeedName." +if [ "$CredToken" ]; then + for FeedName in ${PackageSources[@]} ; do + # Check if there is no existing credential for this FeedName + grep -i "<$FeedName>" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding credentials for $FeedName." - PackageSourceCredentialsNodeFooter="" - NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" + PackageSourceCredentialsNodeFooter="" + NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" - sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile - fi -done + sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile + fi + done +fi # Re-enable any entries in disabledPackageSources where the feed name contains darc-int grep -i "" $ConfigFile diff --git a/eng/common/build.cmd b/eng/common/build.cmd new file mode 100644 index 000000000000..99daf368abae --- /dev/null +++ b/eng/common/build.cmd @@ -0,0 +1,3 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*" +exit /b %ErrorLevel% diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 33a6f2d0e248..438f9920c43e 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -19,6 +19,7 @@ Param( [switch] $pack, [switch] $publish, [switch] $clean, + [switch][Alias('pb')]$productBuild, [switch][Alias('bl')]$binaryLog, [switch][Alias('nobl')]$excludeCIBinarylog, [switch] $ci, @@ -58,6 +59,7 @@ function Print-Usage() { Write-Host " -sign Sign build outputs" Write-Host " -publish Publish artifacts (e.g. symbols)" Write-Host " -clean Clean the solution" + Write-Host " -productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)" Write-Host "" Write-Host "Advanced settings:" @@ -120,6 +122,7 @@ function Build { /p:Deploy=$deploy ` /p:Test=$test ` /p:Pack=$pack ` + /p:DotNetBuildRepo=$productBuild ` /p:IntegrationTest=$integrationTest ` /p:PerformanceTest=$performanceTest ` /p:Sign=$sign ` diff --git a/eng/common/build.sh b/eng/common/build.sh index 50af40cdd2ce..ac1ee8620cd2 100755 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -22,6 +22,9 @@ usage() echo " --sourceBuild Source-build the solution (short: -sb)" echo " Will additionally trigger the following actions: --restore, --build, --pack" echo " If --configuration is not set explicitly, will also set it to 'Release'" + echo " --productBuild Build the solution in the way it will be built in the full .NET product (VMR) build (short: -pb)" + echo " Will additionally trigger the following actions: --restore, --build, --pack" + echo " If --configuration is not set explicitly, will also set it to 'Release'" echo " --rebuild Rebuild solution" echo " --test Run all unit tests in the solution (short: -t)" echo " --integrationTest Run all integration tests in the solution" @@ -59,6 +62,7 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" restore=false build=false source_build=false +product_build=false rebuild=false test=false integration_test=false @@ -105,7 +109,7 @@ while [[ $# > 0 ]]; do -binarylog|-bl) binary_log=true ;; - -excludeCIBinarylog|-nobl) + -excludecibinarylog|-nobl) exclude_ci_binary_log=true ;; -pipelineslog|-pl) @@ -126,6 +130,13 @@ while [[ $# > 0 ]]; do -sourcebuild|-sb) build=true source_build=true + product_build=true + restore=true + pack=true + ;; + -productBuild|-pb) + build=true + product_build=true restore=true pack=true ;; @@ -219,7 +230,9 @@ function Build { /p:RepoRoot="$repo_root" \ /p:Restore=$restore \ /p:Build=$build \ + /p:DotNetBuildRepo=$product_build \ /p:ArcadeBuildFromSource=$source_build \ + /p:DotNetBuildSourceOnly=$source_build \ /p:Rebuild=$rebuild \ /p:Test=$test \ /p:Pack=$pack \ diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml new file mode 100644 index 000000000000..8da43d3b5837 --- /dev/null +++ b/eng/common/core-templates/job/job.yml @@ -0,0 +1,253 @@ +parameters: +# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + cancelTimeoutInMinutes: '' + condition: '' + container: '' + continueOnError: false + dependsOn: '' + displayName: '' + pool: '' + steps: [] + strategy: '' + timeoutInMinutes: '' + variables: [] + workspace: '' + templateContext: {} + +# Job base template specific parameters + # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md + # publishing defaults + artifacts: '' + enableMicrobuild: false + microbuildUseESRP: true + enablePublishBuildArtifacts: false + enablePublishBuildAssets: false + enablePublishTestResults: false + enablePublishUsingPipelines: false + enableBuildRetry: false + mergeTestResults: false + testRunTitle: '' + testResultsFormat: '' + name: '' + componentGovernanceSteps: [] + preSteps: [] + artifactPublishSteps: [] + runAsPublic: false + +# 1es specific parameters + is1ESPipeline: '' + +jobs: +- job: ${{ parameters.name }} + + ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: + cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} + + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + + ${{ if ne(parameters.container, '') }}: + container: ${{ parameters.container }} + + ${{ if ne(parameters.continueOnError, '') }}: + continueOnError: ${{ parameters.continueOnError }} + + ${{ if ne(parameters.dependsOn, '') }}: + dependsOn: ${{ parameters.dependsOn }} + + ${{ if ne(parameters.displayName, '') }}: + displayName: ${{ parameters.displayName }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + + ${{ if ne(parameters.strategy, '') }}: + strategy: ${{ parameters.strategy }} + + ${{ if ne(parameters.timeoutInMinutes, '') }}: + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + + ${{ if ne(parameters.templateContext, '') }}: + templateContext: ${{ parameters.templateContext }} + + variables: + - ${{ if ne(parameters.enableTelemetry, 'false') }}: + - name: DOTNET_CLI_TELEMETRY_PROFILE + value: '$(Build.Repository.Uri)' + - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: + - name: EnableRichCodeNavigation + value: 'true' + # Retry signature validation up to three times, waiting 2 seconds between attempts. + # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures + - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY + value: 3,2000 + - ${{ each variable in parameters.variables }}: + # handle name-value variable syntax + # example: + # - name: [key] + # value: [value] + - ${{ if ne(variable.name, '') }}: + - name: ${{ variable.name }} + value: ${{ variable.value }} + + # handle variable groups + - ${{ if ne(variable.group, '') }}: + - group: ${{ variable.group }} + + # handle template variable syntax + # example: + # - template: path/to/template.yml + # parameters: + # [key]: [value] + - ${{ if ne(variable.template, '') }}: + - template: ${{ variable.template }} + ${{ if ne(variable.parameters, '') }}: + parameters: ${{ variable.parameters }} + + # handle key-value variable syntax. + # example: + # - [key]: [value] + - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: + - ${{ each pair in variable }}: + - name: ${{ pair.key }} + value: ${{ pair.value }} + + # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds + - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: DotNet-HelixApi-Access + + ${{ if ne(parameters.workspace, '') }}: + workspace: ${{ parameters.workspace }} + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if ne(parameters.preSteps, '') }}: + - ${{ each preStep in parameters.preSteps }}: + - ${{ preStep }} + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - task: MicroBuildSigningPlugin@4 + displayName: Install MicroBuild plugin + inputs: + signType: $(_SignType) + zipSources: false + feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + ${{ if eq(parameters.microbuildUseESRP, true) }}: + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea + ${{ else }}: + ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca + env: + TeamName: $(_TeamName) + MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)' + continueOnError: ${{ parameters.continueOnError }} + condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + + - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: + - task: NuGetAuthenticate@1 + + - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: + - task: DownloadPipelineArtifact@2 + inputs: + buildType: current + artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} + targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} + itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} + + - ${{ each step in parameters.steps }}: + - ${{ step }} + + - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: + - task: RichCodeNavIndexer@0 + displayName: RichCodeNav Upload + inputs: + languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} + environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'internal') }} + richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin + uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} + continueOnError: true + + - ${{ each step in parameters.componentGovernanceSteps }}: + - ${{ step }} + + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: MicroBuildCleanup@1 + displayName: Execute Microbuild cleanup tasks + condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + env: + TeamName: $(_TeamName) + + # Publish test results + - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: + - task: PublishTestResults@2 + displayName: Publish XUnit Test Results + inputs: + testResultsFormat: 'xUnit' + testResultsFiles: '*.xml' + searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' + testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit + mergeTestResults: ${{ parameters.mergeTestResults }} + continueOnError: true + condition: always() + - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: + - task: PublishTestResults@2 + displayName: Publish TRX Test Results + inputs: + testResultsFormat: 'VSTest' + testResultsFiles: '*.trx' + searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' + testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx + mergeTestResults: ${{ parameters.mergeTestResults }} + continueOnError: true + condition: always() + + # gather artifacts + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - task: CopyFiles@2 + displayName: Gather binaries for publish to artifacts + inputs: + SourceFolder: 'artifacts/bin' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' + - task: CopyFiles@2 + displayName: Gather packages for publish to artifacts + inputs: + SourceFolder: 'artifacts/packages' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - task: CopyFiles@2 + displayName: Gather logs for publish to artifacts + inputs: + SourceFolder: 'artifacts/log' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log' + continueOnError: true + condition: always() + + - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: + - task: CopyFiles@2 + displayName: Gather logs for publish to artifacts + inputs: + SourceFolder: 'artifacts/log/$(_BuildConfig)' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + continueOnError: true + condition: always() + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - task: CopyFiles@2 + displayName: Gather buildconfiguration for build retry + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/eng/common/BuildConfiguration' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration' + continueOnError: true + condition: always() + - ${{ each step in parameters.artifactPublishSteps }}: + - ${{ step }} diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml new file mode 100644 index 000000000000..edefa789d360 --- /dev/null +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -0,0 +1,121 @@ +parameters: + # Optional: dependencies of the job + dependsOn: '' + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: '' + + CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex + GithubPat: $(BotAccount-dotnet-bot-repo-PAT) + + SourcesDirectory: $(System.DefaultWorkingDirectory) + CreatePr: true + AutoCompletePr: false + ReusePr: true + UseLfLineEndings: true + UseCheckedInLocProjectJson: false + SkipLocProjectJsonGeneration: false + LanguageSet: VS_Main_Languages + LclSource: lclFilesInRepo + LclPackageId: '' + RepoType: gitHub + GitHubOrg: dotnet + MirrorRepo: '' + MirrorBranch: main + condition: '' + JobNameSuffix: '' + is1ESPipeline: '' +jobs: +- job: OneLocBuild${{ parameters.JobNameSuffix }} + + dependsOn: ${{ parameters.dependsOn }} + + displayName: OneLocBuild${{ parameters.JobNameSuffix }} + + variables: + - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat + - name: _GenerateLocProjectArguments + value: -SourcesDirectory ${{ parameters.SourcesDirectory }} + -LanguageSet "${{ parameters.LanguageSet }}" + -CreateNeutralXlfs + - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: + - name: _GenerateLocProjectArguments + value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: + - task: Powershell@2 + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1 + arguments: $(_GenerateLocProjectArguments) + displayName: Generate LocProject.json + condition: ${{ parameters.condition }} + + - task: OneLocBuild@2 + displayName: OneLocBuild + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + locProj: eng/Localize/LocProject.json + outDir: $(Build.ArtifactStagingDirectory) + lclSource: ${{ parameters.LclSource }} + lclPackageId: ${{ parameters.LclPackageId }} + isCreatePrSelected: ${{ parameters.CreatePr }} + isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} + ${{ if eq(parameters.CreatePr, true) }}: + isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + isShouldReusePrSelected: ${{ parameters.ReusePr }} + packageSourceAuth: patAuth + patVariable: ${{ parameters.CeapexPat }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + repoType: ${{ parameters.RepoType }} + gitHubPatVariable: "${{ parameters.GithubPat }}" + ${{ if ne(parameters.MirrorRepo, '') }}: + isMirrorRepoSelected: true + gitHubOrganization: ${{ parameters.GitHubOrg }} + mirrorRepo: ${{ parameters.MirrorRepo }} + mirrorBranch: ${{ parameters.MirrorBranch }} + condition: ${{ parameters.condition }} + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish Localization Files + pathToPublish: '$(Build.ArtifactStagingDirectory)/loc' + publishLocation: Container + artifactName: Loc + condition: ${{ parameters.condition }} + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish LocProject.json + pathToPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' + publishLocation: Container + artifactName: Loc + condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml new file mode 100644 index 000000000000..3cb20fb5041f --- /dev/null +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -0,0 +1,172 @@ +parameters: + configuration: 'Debug' + + # Optional: condition for the job to run + condition: '' + + # Optional: 'true' if future jobs should run even if this job fails + continueOnError: false + + # Optional: dependencies of the job + dependsOn: '' + + # Optional: Include PublishBuildArtifacts task + enablePublishBuildArtifacts: false + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: {} + + # Optional: should run as a public build even in the internal project + # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. + runAsPublic: false + + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishUsingPipelines: false + + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishAssetsImmediately: false + + artifactsPublishingAdditionalParameters: '' + + signingValidationAdditionalParameters: '' + + is1ESPipeline: '' + + repositoryAlias: self + + officialBuildId: '' + +jobs: +- job: Asset_Registry_Publish + + dependsOn: ${{ parameters.dependsOn }} + timeoutInMinutes: 150 + + ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + displayName: Publish Assets + ${{ else }}: + displayName: Publish to Build Asset Registry + + variables: + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: Publish-Build-Assets + - group: AzureDevOps-Artifact-Feeds-Pats + - name: runCodesignValidationInjection + value: false + # unconditional - needed for logs publishing (redactor tool version) + - template: /eng/common/core-templates/post-build/common-variables.yml + - name: OfficialBuildId + ${{ if ne(parameters.officialBuildId, '') }}: + value: ${{ parameters.officialBuildId }} + ${{ else }}: + value: $(Build.BuildNumber) + + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: NetCore1ESPool-Publishing-Internal + image: windows.vs2022.amd64 + os: windows + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - checkout: ${{ parameters.repositoryAlias }} + fetchDepth: 3 + clean: true + + - task: DownloadBuildArtifacts@0 + displayName: Download artifact + inputs: + artifactName: AssetManifests + downloadPath: '$(Build.StagingDirectory)/Download' + checkDownloadedFiles: true + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + + - task: NuGetAuthenticate@1 + + - task: AzureCLI@2 + displayName: Publish Build Assets + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 + arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' + /p:MaestroApiEndpoint=https://maestro.dot.net + /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} + /p:OfficialBuildId=$(OfficialBuildId) + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + + - task: powershell@2 + displayName: Create ReleaseConfigs Artifact + inputs: + targetType: inline + script: | + New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force + $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt" + Add-Content -Path $filePath -Value $(BARBuildId) + Add-Content -Path $filePath -Value "$(DefaultChannels)" + Add-Content -Path $filePath -Value $(IsStableBuild) + + $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt" + if (Test-Path -Path $symbolExclusionfile) + { + Write-Host "SymbolExclusionFile exists" + Copy-Item -Path $symbolExclusionfile -Destination "$(Build.StagingDirectory)/ReleaseConfigs" + } + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish ReleaseConfigs Artifact + pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs' + publishLocation: Container + artifactName: ReleaseConfigs + + - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + # Darc is targeting 8.0, so make sure it's installed + - task: UseDotNet@2 + inputs: + version: 8.0.x + + - task: AzureCLI@2 + displayName: Publish Using Darc + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: > + -BuildId $(BARBuildId) + -PublishingInfraVersion 3 + -AzdoToken '$(System.AccessToken)' + -WaitPublishingFinish true + -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + + - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: + - template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml new file mode 100644 index 000000000000..0e5458e1f46c --- /dev/null +++ b/eng/common/core-templates/job/source-build.yml @@ -0,0 +1,99 @@ +parameters: + # This template adds arcade-powered source-build to CI. The template produces a server job with a + # default ID 'Source_Build_Complete' to put in a dependency list if necessary. + + # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. + jobNamePrefix: 'Source_Build' + + # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for + # managed-only repositories. This is an object with these properties: + # + # name: '' + # The name of the job. This is included in the job ID. + # targetRID: '' + # The name of the target RID to use, instead of the one auto-detected by Arcade. + # nonPortable: false + # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than + # linux-x64), and compiling against distro-provided packages rather than portable ones. + # skipPublishValidation: false + # Disables publishing validation. By default, a check is performed to ensure no packages are + # published by source-build. + # container: '' + # A container to use. Runs in docker. + # pool: {} + # A pool to use. Runs directly on an agent. + # buildScript: '' + # Specifies the build script to invoke to perform the build in the repo. The default + # './build.sh' should work for typical Arcade repositories, but this is customizable for + # difficult situations. + # buildArguments: '' + # Specifies additional build arguments to pass to the build script. + # jobProperties: {} + # A list of job properties to inject at the top level, for potential extensibility beyond + # container and pool. + platform: {} + + # Optional list of directories to ignore for component governance scans. + componentGovernanceIgnoreDirectories: [] + + is1ESPipeline: '' + + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + +jobs: +- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} + displayName: Source-Build (${{ parameters.platform.name }}) + + ${{ each property in parameters.platform.jobProperties }}: + ${{ property.key }}: ${{ property.value }} + + ${{ if ne(parameters.platform.container, '') }}: + container: ${{ parameters.platform.container }} + + ${{ if eq(parameters.platform.pool, '') }}: + # The default VM host AzDO pool. This should be capable of running Docker containers: almost all + # source-build builds run in Docker, including the default managed platform. + # /eng/common/core-templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic + ${{ if eq(parameters.is1ESPipeline, 'true') }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] + demands: ImageOverride -equals build.ubuntu.2004.amd64 + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] + image: Azure-Linux-3-Amd64 + os: linux + ${{ else }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64 + ${{ if ne(parameters.platform.pool, '') }}: + pool: ${{ parameters.platform.pool }} + + workspace: + clean: all + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if eq(parameters.enableInternalSources, true) }}: + - template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + - template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + - template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + platform: ${{ parameters.platform }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml new file mode 100644 index 000000000000..ddf8c2e00d80 --- /dev/null +++ b/eng/common/core-templates/job/source-index-stage1.yml @@ -0,0 +1,81 @@ +parameters: + runAsPublic: false + sourceIndexUploadPackageVersion: 2.0.0-20250425.2 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 + sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json + sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" + preSteps: [] + binlogPath: artifacts/log/Debug/Build.binlog + condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') + dependsOn: '' + pool: '' + is1ESPipeline: '' + +jobs: +- job: SourceIndexStage1 + dependsOn: ${{ parameters.dependsOn }} + condition: ${{ parameters.condition }} + variables: + - name: SourceIndexUploadPackageVersion + value: ${{ parameters.sourceIndexUploadPackageVersion }} + - name: SourceIndexProcessBinlogPackageVersion + value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} + - name: SourceIndexPackageSource + value: ${{ parameters.sourceIndexPackageSource }} + - name: BinlogPath + value: ${{ parameters.binlogPath }} + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $(DncEngPublicBuildPool) + image: 1es-windows-2022-open + os: windows + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ each preStep in parameters.preSteps }}: + - ${{ preStep }} + + - task: UseDotNet@2 + displayName: Use .NET 8 SDK + inputs: + packageType: sdk + version: 8.0.x + installationPath: $(Agent.TempDirectory)/dotnet + workingDirectory: $(Agent.TempDirectory) + + - script: | + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + displayName: Download Tools + # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. + workingDirectory: $(Agent.TempDirectory) + + - script: ${{ parameters.sourceIndexBuildCommand }} + displayName: Build Repository + + - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output + displayName: Process Binlog into indexable sln + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: AzureCLI@2 + displayName: Log in to Azure and upload stage1 artifacts to source index + inputs: + azureSubscription: 'SourceDotNet Stage1 Publish' + addSpnToEnvironment: true + scriptType: 'ps' + scriptLocation: 'inlineScript' + inlineScript: | + $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 diff --git a/eng/common/core-templates/jobs/codeql-build.yml b/eng/common/core-templates/jobs/codeql-build.yml new file mode 100644 index 000000000000..4571a7864df6 --- /dev/null +++ b/eng/common/core-templates/jobs/codeql-build.yml @@ -0,0 +1,33 @@ +parameters: + # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md + continueOnError: false + # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + jobs: [] + # Optional: if specified, restore and use this version of Guardian instead of the default. + overrideGuardianVersion: '' + is1ESPipeline: '' + +jobs: +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + enableMicrobuild: false + enablePublishBuildArtifacts: false + enablePublishTestResults: false + enablePublishBuildAssets: false + enablePublishUsingPipelines: false + enableTelemetry: true + + variables: + - group: Publish-Build-Assets + # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in + # sync with the packages.config file. + - name: DefaultGuardianVersion + value: 0.109.0 + - name: GuardianPackagesConfigFile + value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config + - name: GuardianVersion + value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} + + jobs: ${{ parameters.jobs }} + diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml new file mode 100644 index 000000000000..bf33cdc2cc77 --- /dev/null +++ b/eng/common/core-templates/jobs/jobs.yml @@ -0,0 +1,123 @@ +parameters: + # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md + continueOnError: false + + # Optional: Include PublishBuildArtifacts task + enablePublishBuildArtifacts: false + + # Optional: Enable publishing using release pipelines + enablePublishUsingPipelines: false + + # Optional: Enable running the source-build jobs to build repo from source + enableSourceBuild: false + + # Optional: Parameters for source-build template. + # See /eng/common/core-templates/jobs/source-build.yml for options + sourceBuildParameters: [] + + graphFileGeneration: + # Optional: Enable generating the graph files at the end of the build + enabled: false + # Optional: Include toolset dependencies in the generated graph files + includeToolset: false + + # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + jobs: [] + + # Optional: Override automatically derived dependsOn value for "publish build assets" job + publishBuildAssetsDependsOn: '' + + # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. + publishAssetsImmediately: false + + # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) + artifactsPublishingAdditionalParameters: '' + signingValidationAdditionalParameters: '' + + # Optional: should run as a public build even in the internal project + # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. + runAsPublic: false + + enableSourceIndex: false + sourceIndexParams: {} + + artifacts: {} + is1ESPipeline: '' + repositoryAlias: self + officialBuildId: '' + +# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, +# and some (Microbuild) should only be applied to non-PR cases for internal builds. + +jobs: +- ${{ each job in parameters.jobs }}: + - ${{ if eq(parameters.is1ESPipeline, 'true') }}: + - template: /eng/common/templates-official/job/job.yml + parameters: + # pass along parameters + ${{ each parameter in parameters }}: + ${{ if ne(parameter.key, 'jobs') }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # pass along job properties + ${{ each property in job }}: + ${{ if ne(property.key, 'job') }}: + ${{ property.key }}: ${{ property.value }} + + name: ${{ job.job }} + + - ${{ else }}: + - template: /eng/common/templates/job/job.yml + parameters: + # pass along parameters + ${{ each parameter in parameters }}: + ${{ if ne(parameter.key, 'jobs') }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # pass along job properties + ${{ each property in job }}: + ${{ if ne(property.key, 'job') }}: + ${{ property.key }}: ${{ property.value }} + + name: ${{ job.job }} + +- ${{ if eq(parameters.enableSourceBuild, true) }}: + - template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + allCompletedJobId: Source_Build_Complete + ${{ each parameter in parameters.sourceBuildParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + +- ${{ if eq(parameters.enableSourceIndex, 'true') }}: + - template: ../job/source-index-stage1.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + runAsPublic: ${{ parameters.runAsPublic }} + ${{ each parameter in parameters.sourceIndexParams }}: + ${{ parameter.key }}: ${{ parameter.value }} + +- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: + - template: ../job/publish-build-assets.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + continueOnError: ${{ parameters.continueOnError }} + dependsOn: + - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: + - ${{ each job in parameters.publishBuildAssetsDependsOn }}: + - ${{ job.job }} + - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: + - ${{ each job in parameters.jobs }}: + - ${{ job.job }} + - ${{ if eq(parameters.enableSourceBuild, true) }}: + - Source_Build_Complete + + runAsPublic: ${{ parameters.runAsPublic }} + publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} + publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} + enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} + artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} + signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} + repositoryAlias: ${{ parameters.repositoryAlias }} + officialBuildId: ${{ parameters.officialBuildId }} diff --git a/eng/common/core-templates/jobs/source-build.yml b/eng/common/core-templates/jobs/source-build.yml new file mode 100644 index 000000000000..0b408a67bd51 --- /dev/null +++ b/eng/common/core-templates/jobs/source-build.yml @@ -0,0 +1,63 @@ +parameters: + # This template adds arcade-powered source-build to CI. A job is created for each platform, as + # well as an optional server job that completes when all platform jobs complete. + + # The name of the "join" job for all source-build platforms. If set to empty string, the job is + # not included. Existing repo pipelines can use this job depend on all source-build jobs + # completing without maintaining a separate list of every single job ID: just depend on this one + # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. + allCompletedJobId: '' + + # See /eng/common/core-templates/job/source-build.yml + jobNamePrefix: 'Source_Build' + + # This is the default platform provided by Arcade, intended for use by a managed-only repo. + defaultManagedPlatform: + name: 'Managed' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' + + # Defines the platforms on which to run build jobs. One job is created for each platform, and the + # object in this array is sent to the job template as 'platform'. If no platforms are specified, + # one job runs on 'defaultManagedPlatform'. + platforms: [] + + # Optional list of directories to ignore for component governance scans. + componentGovernanceIgnoreDirectories: [] + + is1ESPipeline: '' + + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + +jobs: + +- ${{ if ne(parameters.allCompletedJobId, '') }}: + - job: ${{ parameters.allCompletedJobId }} + displayName: Source-Build Complete + pool: server + dependsOn: + - ${{ each platform in parameters.platforms }}: + - ${{ parameters.jobNamePrefix }}_${{ platform.name }} + - ${{ if eq(length(parameters.platforms), 0) }}: + - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} + +- ${{ each platform in parameters.platforms }}: + - template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ platform }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + enableInternalSources: ${{ parameters.enableInternalSources }} + +- ${{ if eq(length(parameters.platforms), 0) }}: + - template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ parameters.defaultManagedPlatform }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml new file mode 100644 index 000000000000..d5627a994ae5 --- /dev/null +++ b/eng/common/core-templates/post-build/common-variables.yml @@ -0,0 +1,22 @@ +variables: + - group: Publish-Build-Assets + + # Whether the build is internal or not + - name: IsInternalBuild + value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} + + # Default Maestro++ API Endpoint and API Version + - name: MaestroApiEndPoint + value: "https://maestro.dot.net" + - name: MaestroApiVersion + value: "2020-02-20" + + - name: SourceLinkCLIVersion + value: 3.0.0 + - name: SymbolToolVersion + value: 1.0.1 + - name: BinlogToolVersion + value: 1.0.11 + + - name: runCodesignValidationInjection + value: false diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml new file mode 100644 index 000000000000..864427d9694a --- /dev/null +++ b/eng/common/core-templates/post-build/post-build.yml @@ -0,0 +1,327 @@ +parameters: + # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. + # Publishing V1 is no longer supported + # Publishing V2 is no longer supported + # Publishing V3 is the default + - name: publishingInfraVersion + displayName: Which version of publishing should be used to promote the build definition? + type: number + default: 3 + values: + - 3 + + - name: BARBuildId + displayName: BAR Build Id + type: number + default: 0 + + - name: PromoteToChannelIds + displayName: Channel to promote BARBuildId to + type: string + default: '' + + - name: enableSourceLinkValidation + displayName: Enable SourceLink validation + type: boolean + default: false + + - name: enableSigningValidation + displayName: Enable signing validation + type: boolean + default: true + + - name: enableSymbolValidation + displayName: Enable symbol validation + type: boolean + default: false + + - name: enableNugetValidation + displayName: Enable NuGet validation + type: boolean + default: true + + - name: publishInstallersAndChecksums + displayName: Publish installers and checksums + type: boolean + default: true + + - name: requireDefaultChannels + displayName: Fail the build if there are no default channel(s) registrations for the current build + type: boolean + default: false + + - name: SDLValidationParameters + type: object + default: + enable: false + publishGdn: false + continueOnError: false + params: '' + artifactNames: '' + downloadArtifacts: true + + # These parameters let the user customize the call to sdk-task.ps1 for publishing + # symbols & general artifacts as well as for signing validation + - name: symbolPublishingAdditionalParameters + displayName: Symbol publishing additional parameters + type: string + default: '' + + - name: artifactsPublishingAdditionalParameters + displayName: Artifact publishing additional parameters + type: string + default: '' + + - name: signingValidationAdditionalParameters + displayName: Signing validation additional parameters + type: string + default: '' + + # Which stages should finish execution before post-build stages start + - name: validateDependsOn + type: object + default: + - build + + - name: publishDependsOn + type: object + default: + - Validate + + # Optional: Call asset publishing rather than running in a separate stage + - name: publishAssetsImmediately + type: boolean + default: false + + - name: is1ESPipeline + type: boolean + default: false + +stages: +- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + - stage: Validate + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Validate Build Assets + variables: + - template: /eng/common/core-templates/post-build/common-variables.yml + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobs: + - job: + displayName: NuGet Validation + condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: windows.vs2022.amd64 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2022.amd64 + + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 + arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ + + - job: + displayName: Signing Validation + condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2022.amd64 + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + itemPattern: | + ** + !**/Microsoft.SourceBuild.Intermediate.*.nupkg + + # This is necessary whenever we want to publish/restore to an AzDO private feed + # Since sdk-task.ps1 tries to restore packages we need to do this authentication here + # otherwise it'll complain about accessing a private feed. + - task: NuGetAuthenticate@1 + displayName: 'Authenticate to AzDO Feeds' + + # Signing validation will optionally work with the buildmanifest file which is downloaded from + # Azure DevOps above. + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task SigningValidation -restore -msbuildEngine vs + /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' + /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' + ${{ parameters.signingValidationAdditionalParameters }} + + - template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + StageLabel: 'Validation' + JobLabel: 'Signing' + BinlogToolVersion: $(BinlogToolVersion) + + - job: + displayName: SourceLink Validation + condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2022.amd64 + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Blob Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BlobArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 + arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ + -ExtractPath $(Agent.BuildDirectory)/Extract/ + -GHRepoName $(Build.Repository.Name) + -GHCommit $(Build.SourceVersion) + -SourcelinkCliVersion $(SourceLinkCLIVersion) + continueOnError: true + +- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: + - stage: publish_using_darc + ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + dependsOn: ${{ parameters.publishDependsOn }} + ${{ else }}: + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Publish using Darc + variables: + - template: /eng/common/core-templates/post-build/common-variables.yml + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobs: + - job: + displayName: Publish Using Darc + timeoutInMinutes: 120 + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: NetCore1ESPool-Publishing-Internal + image: windows.vs2022.amd64 + os: windows + ${{ else }}: + name: NetCore1ESPool-Publishing-Internal + demands: ImageOverride -equals windows.vs2022.amd64 + steps: + - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + - task: NuGetAuthenticate@1 + + # Darc is targeting 8.0, so make sure it's installed + - task: UseDotNet@2 + inputs: + version: 8.0.x + + - task: AzureCLI@2 + displayName: Publish Using Darc + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: > + -BuildId $(BARBuildId) + -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} + -AzdoToken '$(System.AccessToken)' + -WaitPublishingFinish true + -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} + -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml new file mode 100644 index 000000000000..a7abd58c4bb6 --- /dev/null +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -0,0 +1,74 @@ +parameters: + BARBuildId: '' + PromoteToChannelIds: '' + is1ESPipeline: '' + +steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Release Configs + inputs: + buildType: current + artifactName: ReleaseConfigs + checkDownloadedFiles: true + + - task: AzureCLI@2 + name: setReleaseVars + displayName: Set Release Configs Vars + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + try { + if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { + $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt + + $BarId = $Content | Select -Index 0 + $Channels = $Content | Select -Index 1 + $IsStableBuild = $Content | Select -Index 2 + + $AzureDevOpsProject = $Env:System_TeamProject + $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId + $AzureDevOpsBuildId = $Env:Build_BuildId + } + else { + . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1 + $darc = Get-Darc + $buildInfo = & $darc get-build ` + --id ${{ parameters.BARBuildId }} ` + --extended ` + --output-format json ` + --ci ` + | convertFrom-Json + + $BarId = ${{ parameters.BARBuildId }} + $Channels = $Env:PromoteToMaestroChannels -split "," + $Channels = $Channels -join "][" + $Channels = "[$Channels]" + + $IsStableBuild = $buildInfo.stable + $AzureDevOpsProject = $buildInfo.azureDevOpsProject + $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId + $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId + } + + Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" + Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" + Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" + + Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" + Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" + Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" + } + catch { + Write-Host $_ + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + exit 1 + } + env: + PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml new file mode 100644 index 000000000000..cf0649aa9565 --- /dev/null +++ b/eng/common/core-templates/steps/component-governance.yml @@ -0,0 +1,16 @@ +parameters: + disableComponentGovernance: false + componentGovernanceIgnoreDirectories: '' + is1ESPipeline: false + displayName: 'Component Detection' + +steps: +- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable +- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: + - task: ComponentGovernanceComponentDetection@0 + continueOnError: true + displayName: ${{ parameters.displayName }} + inputs: + ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/eng/common/core-templates/steps/enable-internal-runtimes.yml b/eng/common/core-templates/steps/enable-internal-runtimes.yml new file mode 100644 index 000000000000..6bdbf62ac500 --- /dev/null +++ b/eng/common/core-templates/steps/enable-internal-runtimes.yml @@ -0,0 +1,32 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default + +parameters: +- name: federatedServiceConnection + type: string + default: 'dotnetbuilds-internal-read' +- name: outputVariableName + type: string + default: 'dotnetbuilds-internal-container-read-token-base64' +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: true +- name: is1ESPipeline + type: boolean + default: false + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + federatedServiceConnection: ${{ parameters.federatedServiceConnection }} + outputVariableName: ${{ parameters.outputVariableName }} + expiryInHours: ${{ parameters.expiryInHours }} + base64Encode: ${{ parameters.base64Encode }} + storageAccount: dotnetbuilds + container: internal + permissions: rl + is1ESPipeline: ${{ parameters.is1ESPipeline }} \ No newline at end of file diff --git a/eng/common/core-templates/steps/enable-internal-sources.yml b/eng/common/core-templates/steps/enable-internal-sources.yml new file mode 100644 index 000000000000..4085512b6909 --- /dev/null +++ b/eng/common/core-templates/steps/enable-internal-sources.yml @@ -0,0 +1,47 @@ +parameters: +# This is the Azure federated service connection that we log into to get an access token. +- name: nugetFederatedServiceConnection + type: string + default: 'dnceng-artifacts-feeds-read' +- name: is1ESPipeline + type: boolean + default: false +# Legacy parameters to allow for PAT usage +- name: legacyCredential + type: string + default: '' + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - ${{ if ne(parameters.legacyCredential, '') }}: + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token + env: + Token: ${{ parameters.legacyCredential }} + # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate. + # If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that + # may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token. + - ${{ else }}: + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config + - ${{ else }}: + - template: /eng/common/templates/steps/get-federated-access-token.yml + parameters: + federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }} + outputVariableName: 'dnceng-artifacts-feeds-read-access-token' + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token) + # This is required in certain scenarios to install the ADO credential provider. + # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others + # (e.g. dotnet msbuild). + - task: NuGetAuthenticate@1 diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml new file mode 100644 index 000000000000..7f5b84c4cb82 --- /dev/null +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -0,0 +1,54 @@ +# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. +# PackageName - The name of the package this SBOM represents. +# PackageVersion - The version of the package this SBOM represents. +# ManifestDirPath - The path of the directory where the generated manifest files will be placed +# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. + +parameters: + PackageVersion: 9.0.0 + BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' + PackageName: '.NET' + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom + IgnoreDirectories: '' + sbomContinueOnError: true + is1ESPipeline: false + # disable publishArtifacts if some other step is publishing the artifacts (like job.yml). + publishArtifacts: true + +steps: +- task: PowerShell@2 + displayName: Prep for SBOM generation in (Non-linux) + condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) + inputs: + filePath: ./eng/common/generate-sbom-prep.ps1 + arguments: ${{parameters.manifestDirPath}} + +# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 +- script: | + chmod +x ./eng/common/generate-sbom-prep.sh + ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} + displayName: Prep for SBOM generation in (Linux) + condition: eq(variables['Agent.Os'], 'Linux') + continueOnError: ${{ parameters.sbomContinueOnError }} + +- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 + displayName: 'Generate SBOM manifest' + continueOnError: ${{ parameters.sbomContinueOnError }} + inputs: + PackageName: ${{ parameters.packageName }} + BuildDropPath: ${{ parameters.buildDropPath }} + PackageVersion: ${{ parameters.packageVersion }} + ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) + ${{ if ne(parameters.IgnoreDirectories, '') }}: + AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' + +- ${{ if eq(parameters.publishArtifacts, 'true')}}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish SBOM manifest + continueOnError: ${{parameters.sbomContinueOnError}} + targetPath: '${{ parameters.manifestDirPath }}' + artifactName: $(ARTIFACT_NAME) + diff --git a/eng/common/core-templates/steps/get-delegation-sas.yml b/eng/common/core-templates/steps/get-delegation-sas.yml new file mode 100644 index 000000000000..9db5617ea7de --- /dev/null +++ b/eng/common/core-templates/steps/get-delegation-sas.yml @@ -0,0 +1,55 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: false +- name: storageAccount + type: string +- name: container + type: string +- name: permissions + type: string + default: 'rl' +- name: is1ESPipeline + type: boolean + default: false + +steps: +- task: AzureCLI@2 + displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + # Calculate the expiration of the SAS token and convert to UTC + $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") + + # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads + # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 + $sas = "" + do { + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + } while($sas.IndexOf('/') -ne -1) + + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + + if ('${{ parameters.base64Encode }}' -eq 'true') { + $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) + } + + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" diff --git a/eng/common/core-templates/steps/get-federated-access-token.yml b/eng/common/core-templates/steps/get-federated-access-token.yml new file mode 100644 index 000000000000..3a4d4410c482 --- /dev/null +++ b/eng/common/core-templates/steps/get-federated-access-token.yml @@ -0,0 +1,42 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: is1ESPipeline + type: boolean +- name: stepName + type: string + default: 'getFederatedAccessToken' +- name: condition + type: string + default: '' +# Resource to get a token for. Common values include: +# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps +# - 'https://storage.azure.com/' for storage +# Defaults to Azure DevOps +- name: resource + type: string + default: '499b84ac-1321-427f-aa17-267ca6975798' +- name: isStepOutputVariable + type: boolean + default: false + +steps: +- task: AzureCLI@2 + displayName: 'Getting federated access token for feeds' + name: ${{ parameters.stepName }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" + exit 1 + } + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file diff --git a/eng/common/core-templates/steps/publish-build-artifacts.yml b/eng/common/core-templates/steps/publish-build-artifacts.yml new file mode 100644 index 000000000000..f24ce346684e --- /dev/null +++ b/eng/common/core-templates/steps/publish-build-artifacts.yml @@ -0,0 +1,20 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false +- name: args + type: object + default: {} +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - template: /eng/common/templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ each parameter in parameters.args }}: + ${{ parameter.key }}: ${{ parameter.value }} +- ${{ else }}: + - template: /eng/common/templates-official/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ each parameter in parameters.args }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml new file mode 100644 index 000000000000..0623ac6e1123 --- /dev/null +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -0,0 +1,58 @@ +parameters: + StageLabel: '' + JobLabel: '' + CustomSensitiveDataList: '' + # A default - in case value from eng/common/core-templates/post-build/common-variables.yml is not passed + BinlogToolVersion: '1.0.11' + is1ESPipeline: false + +steps: +- task: Powershell@2 + displayName: Prepare Binlogs to Upload + inputs: + targetType: inline + script: | + New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ + Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ + continueOnError: true + condition: always() + +- task: PowerShell@2 + displayName: Redact Logs + inputs: + filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/redact-logs.ps1 + # For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml + # Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + # If the file exists - sensitive data for redaction will be sourced from it + # (single entry per line, lines starting with '# ' are considered comments and skipped) + arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' + -BinlogToolVersion ${{parameters.BinlogToolVersion}} + -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + '$(publishing-dnceng-devdiv-code-r-build-re)' + '$(MaestroAccessToken)' + '$(dn-bot-all-orgs-artifact-feeds-rw)' + '$(akams-client-id)' + '$(microsoft-symbol-server-pat)' + '$(symweb-symbol-server-pat)' + '$(dn-bot-all-orgs-build-rw-code-rw)' + ${{parameters.CustomSensitiveDataList}} + continueOnError: true + condition: always() + +- task: CopyFiles@2 + displayName: Gather post build logs + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + +- template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish Logs + pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + publishLocation: Container + artifactName: PostBuildLogs + continueOnError: true + condition: always() diff --git a/eng/common/core-templates/steps/publish-pipeline-artifacts.yml b/eng/common/core-templates/steps/publish-pipeline-artifacts.yml new file mode 100644 index 000000000000..2efec04dc2c1 --- /dev/null +++ b/eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,20 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: args + type: object + default: {} + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - template: /eng/common/templates/steps/publish-pipeline-artifacts.yml + parameters: + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} +- ${{ else }}: + - template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml + parameters: + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/core-templates/steps/retain-build.yml b/eng/common/core-templates/steps/retain-build.yml new file mode 100644 index 000000000000..83d97a26a01f --- /dev/null +++ b/eng/common/core-templates/steps/retain-build.yml @@ -0,0 +1,28 @@ +parameters: + # Optional azure devops PAT with build execute permissions for the build's organization, + # only needed if the build that should be retained ran on a different organization than + # the pipeline where this template is executing from + Token: '' + # Optional BuildId to retain, defaults to the current running build + BuildId: '' + # Azure devops Organization URI for the build in the https://dev.azure.com/ format. + # Defaults to the organization the current pipeline is running on + AzdoOrgUri: '$(System.CollectionUri)' + # Azure devops project for the build. Defaults to the project the current pipeline is running on + AzdoProject: '$(System.TeamProject)' + +steps: + - task: powershell@2 + inputs: + targetType: 'filePath' + filePath: eng/common/retain-build.ps1 + pwsh: true + arguments: > + -AzdoOrgUri: ${{parameters.AzdoOrgUri}} + -AzdoProject ${{parameters.AzdoProject}} + -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} + -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} + displayName: Enable permanent build retention + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + BUILD_ID: $(Build.BuildId) \ No newline at end of file diff --git a/eng/common/core-templates/steps/send-to-helix.yml b/eng/common/core-templates/steps/send-to-helix.yml new file mode 100644 index 000000000000..68fa739c4ab2 --- /dev/null +++ b/eng/common/core-templates/steps/send-to-helix.yml @@ -0,0 +1,93 @@ +# Please remember to update the documentation if you make changes to these parameters! +parameters: + HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ + HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' + HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number + HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues + HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY + HelixProjectArguments: '' # optional -- arguments passed to the build command + HelixConfiguration: '' # optional -- additional property attached to a job + HelixPreCommands: '' # optional -- commands to run before Helix work item execution + HelixPostCommands: '' # optional -- commands to run after Helix work item execution + WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects + WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects + WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects + CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload + XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects + XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects + XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner + XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects + IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion + DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." + IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set + HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) + Creator: '' # optional -- if the build is external, use this to specify who is sending the job + DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO + condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() + continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false + +steps: + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + displayName: ${{ parameters.DisplayNamePrefix }} (Windows) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + displayName: ${{ parameters.DisplayNamePrefix }} (Unix) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml new file mode 100644 index 000000000000..7846584d2a77 --- /dev/null +++ b/eng/common/core-templates/steps/source-build.yml @@ -0,0 +1,137 @@ +parameters: + # This template adds arcade-powered source-build to CI. + + # This is a 'steps' template, and is intended for advanced scenarios where the existing build + # infra has a careful build methodology that must be followed. For example, a repo + # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline + # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to + # GitHub. Using this steps template leaves room for that infra to be included. + + # Defines the platform on which to run the steps. See 'eng/common/core-templates/job/source-build.yml' + # for details. The entire object is described in the 'job' template for simplicity, even though + # the usage of the properties on this object is split between the 'job' and 'steps' templates. + platform: {} + + # Optional list of directories to ignore for component governance scans. + componentGovernanceIgnoreDirectories: [] + + is1ESPipeline: false + +steps: +# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) +- script: | + set -x + df -h + + # If file changes are detected, set CopyWipIntoInnerSourceBuildRepo to copy the WIP changes into the inner source build repo. + internalRestoreArgs= + if ! git diff --quiet; then + internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' + # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. + # This only works if there is a username/email configured, which won't be the case in most CI runs. + git config --get user.email + if [ $? -ne 0 ]; then + git config user.email dn-bot@microsoft.com + git config user.name dn-bot + fi + fi + + # If building on the internal project, the internal storage variable may be available (usually only if needed) + # In that case, add variables to allow the download of internal runtimes if the specified versions are not found + # in the default public locations. + internalRuntimeDownloadArgs= + if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' + fi + + buildConfig=Release + # Check if AzDO substitutes in a build config from a variable, and use it if so. + if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then + buildConfig='$(_BuildConfig)' + fi + + officialBuildArgs= + if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then + officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' + fi + + targetRidArgs= + if [ '${{ parameters.platform.targetRID }}' != '' ]; then + targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' + fi + + runtimeOsArgs= + if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then + runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' + fi + + baseOsArgs= + if [ '${{ parameters.platform.baseOS }}' != '' ]; then + baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + fi + + publishArgs= + if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then + publishArgs='--publish' + fi + + assetManifestFileName=SourceBuild_RidSpecific.xml + if [ '${{ parameters.platform.name }}' != '' ]; then + assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml + fi + + ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ + --configuration $buildConfig \ + --restore --build --pack $publishArgs -bl \ + ${{ parameters.platform.buildArguments }} \ + $officialBuildArgs \ + $internalRuntimeDownloadArgs \ + $internalRestoreArgs \ + $targetRidArgs \ + $runtimeOsArgs \ + $baseOsArgs \ + /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ + /p:ArcadeBuildFromSource=true \ + /p:DotNetBuildSourceOnly=true \ + /p:DotNetBuildRepo=true \ + /p:AssetManifestFileName=$assetManifestFileName + displayName: Build + +# Upload build logs for diagnosis. +- task: CopyFiles@2 + displayName: Prepare BuildLogs staging directory + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)' + Contents: | + **/*.log + **/*.binlog + artifacts/sb/prebuilt-report/** + TargetFolder: '$(Build.StagingDirectory)/BuildLogs' + CleanTargetFolder: true + continueOnError: true + condition: succeededOrFailed() + +- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish BuildLogs + targetPath: '$(Build.StagingDirectory)/BuildLogs' + artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) + continueOnError: true + condition: succeededOrFailed() + sbomEnabled: false # we don't need SBOM for logs + +# Manually inject component detection so that we can ignore the source build upstream cache, which contains +# a nupkg cache of input packages (a local feed). +# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' +# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + displayName: Component Detection (Exclude upstream cache) + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ if eq(length(parameters.componentGovernanceIgnoreDirectories), 0) }}: + componentGovernanceIgnoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/sb/src/artifacts/obj/source-built-upstream-cache' + ${{ else }}: + componentGovernanceIgnoreDirectories: ${{ join(',', parameters.componentGovernanceIgnoreDirectories) }} + disableComponentGovernance: ${{ eq(variables['System.TeamProject'], 'public') }} diff --git a/eng/common/core-templates/variables/pool-providers.yml b/eng/common/core-templates/variables/pool-providers.yml new file mode 100644 index 000000000000..41053d382a2e --- /dev/null +++ b/eng/common/core-templates/variables/pool-providers.yml @@ -0,0 +1,8 @@ +parameters: + is1ESPipeline: false + +variables: + - ${{ if eq(parameters.is1ESPipeline, 'true') }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ else }}: + - template: /eng/common/templates/variables/pool-providers.yml \ No newline at end of file diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh index f163fb9dae96..7e9ba2b75ed3 100755 --- a/eng/common/cross/build-android-rootfs.sh +++ b/eng/common/cross/build-android-rootfs.sh @@ -5,15 +5,15 @@ __NDK_Version=r21 usage() { echo "Creates a toolchain and sysroot used for cross-compiling for Android." - echo. + echo echo "Usage: $0 [BuildArch] [ApiLevel]" - echo. + echo echo "BuildArch is the target architecture of Android. Currently only arm64 is supported." echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html" - echo. + echo echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior" echo "by setting the TOOLCHAIN_DIR environment variable" - echo. + echo echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation," echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK." echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.28-arm64. This file is to replace '/etc/os-release', which is not available for Android." diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh index 9caf9b021dbd..4b5e8d7166bd 100755 --- a/eng/common/cross/build-rootfs.sh +++ b/eng/common/cross/build-rootfs.sh @@ -8,7 +8,7 @@ usage() echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86" echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine" echo " for alpine can be specified with version: alpineX.YY or alpineedge" - echo " for FreeBSD can be: freebsd12, freebsd13" + echo " for FreeBSD can be: freebsd13, freebsd14" echo " for illumos can be: illumos" echo " for Haiku can be: haiku." echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine and FreeBSD" @@ -30,7 +30,8 @@ __IllumosArch=arm7 __HaikuArch=arm __QEMUArch=arm __UbuntuArch=armhf -__UbuntuRepo="http://ports.ubuntu.com/" +__UbuntuRepo= +__UbuntuSuites="updates security backports" __LLDB_Package="liblldb-3.9-dev" __SkipUnmount=0 @@ -71,9 +72,9 @@ __AlpinePackages+=" krb5-dev" __AlpinePackages+=" openssl-dev" __AlpinePackages+=" zlib-dev" -__FreeBSDBase="12.4-RELEASE" +__FreeBSDBase="13.3-RELEASE" __FreeBSDPkg="1.17.0" -__FreeBSDABI="12" +__FreeBSDABI="13" __FreeBSDPackages="libunwind" __FreeBSDPackages+=" icu" __FreeBSDPackages+=" libinotify" @@ -129,6 +130,7 @@ __AlpineKeys=' 616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ== ' __Keyring= +__KeyringFile="/usr/share/keyrings/ubuntu-archive-keyring.gpg" __SkipSigCheck=0 __UseMirror=0 @@ -142,7 +144,6 @@ while :; do case $lowerI in -\?|-h|--help) usage - exit 1 ;; arm) __BuildArch=arm @@ -163,6 +164,7 @@ while :; do __UbuntuArch=armel __UbuntuRepo="http://ftp.debian.org/debian/" __CodeName=jessie + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" ;; armv6) __BuildArch=armv6 @@ -170,10 +172,12 @@ while :; do __QEMUArch=arm __UbuntuRepo="http://raspbian.raspberrypi.org/raspbian/" __CodeName=buster + __KeyringFile="/usr/share/keyrings/raspbian-archive-keyring.gpg" __LLDB_Package="liblldb-6.0-dev" + __UbuntuSuites= - if [[ -e "/usr/share/keyrings/raspbian-archive-keyring.gpg" ]]; then - __Keyring="--keyring /usr/share/keyrings/raspbian-archive-keyring.gpg" + if [[ -e "$__KeyringFile" ]]; then + __Keyring="--keyring $__KeyringFile" fi ;; riscv64) @@ -182,13 +186,8 @@ while :; do __AlpinePackages="${__AlpinePackages// lldb-dev/}" __QEMUArch=riscv64 __UbuntuArch=riscv64 - __UbuntuRepo="http://deb.debian.org/debian-ports" __UbuntuPackages="${__UbuntuPackages// libunwind8-dev/}" unset __LLDB_Package - - if [[ -e "/usr/share/keyrings/debian-ports-archive-keyring.gpg" ]]; then - __Keyring="--keyring /usr/share/keyrings/debian-ports-archive-keyring.gpg --include=debian-ports-archive-keyring" - fi ;; ppc64le) __BuildArch=ppc64le @@ -229,12 +228,19 @@ while :; do __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" ;; lldb*) - version="${lowerI/lldb/}" - parts=(${version//./ }) + version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" + majorVersion="${version%%.*}" + + [ -z "${version##*.*}" ] && minorVersion="${version#*.}" + if [ -z "$minorVersion" ]; then + minorVersion=0 + fi # for versions > 6.0, lldb has dropped the minor version - if [[ "${parts[0]}" -gt 6 ]]; then - version="${parts[0]}" + if [ "$majorVersion" -le 6 ]; then + version="$majorVersion.$minorVersion" + else + version="$majorVersion" fi __LLDB_Package="liblldb-${version}-dev" @@ -243,15 +249,19 @@ while :; do unset __LLDB_Package ;; llvm*) - version="${lowerI/llvm/}" - parts=(${version//./ }) - __LLVM_MajorVersion="${parts[0]}" - __LLVM_MinorVersion="${parts[1]}" - - # for versions > 6.0, llvm has dropped the minor version - if [[ -z "$__LLVM_MinorVersion" && "$__LLVM_MajorVersion" -le 6 ]]; then - __LLVM_MinorVersion=0; + version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" + __LLVM_MajorVersion="${version%%.*}" + + [ -z "${version##*.*}" ] && __LLVM_MinorVersion="${version#*.}" + if [ -z "$__LLVM_MinorVersion" ]; then + __LLVM_MinorVersion=0 + fi + + # for versions > 6.0, lldb has dropped the minor version + if [ "$__LLVM_MajorVersion" -gt 6 ]; then + __LLVM_MinorVersion= fi + ;; xenial) # Ubuntu 16.04 if [[ "$__CodeName" != "jessie" ]]; then @@ -278,8 +288,17 @@ while :; do __CodeName=jammy fi ;; + noble) # Ubuntu 24.04 + if [[ "$__CodeName" != "jessie" ]]; then + __CodeName=noble + fi + if [[ -n "$__LLDB_Package" ]]; then + __LLDB_Package="liblldb-18-dev" + fi + ;; jessie) # Debian 8 __CodeName=jessie + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -288,6 +307,7 @@ while :; do stretch) # Debian 9 __CodeName=stretch __LLDB_Package="liblldb-6.0-dev" + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -296,6 +316,7 @@ while :; do buster) # Debian 10 __CodeName=buster __LLDB_Package="liblldb-6.0-dev" + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -303,6 +324,15 @@ while :; do ;; bullseye) # Debian 11 __CodeName=bullseye + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + bookworm) # Debian 12 + __CodeName=bookworm + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -310,6 +340,7 @@ while :; do ;; sid) # Debian sid __CodeName=sid + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then __UbuntuRepo="http://ftp.debian.org/debian/" @@ -323,25 +354,24 @@ while :; do alpine*) __CodeName=alpine __UbuntuRepo= - version="${lowerI/alpine/}" - if [[ "$version" == "edge" ]]; then + if [[ "$lowerI" == "alpineedge" ]]; then __AlpineVersion=edge else - parts=(${version//./ }) - __AlpineMajorVersion="${parts[0]}" - __AlpineMinoVersion="${parts[1]}" - __AlpineVersion="$__AlpineMajorVersion.$__AlpineMinoVersion" + version="$(echo "$lowerI" | tr -d '[:alpha:]-=')" + __AlpineMajorVersion="${version%%.*}" + __AlpineMinorVersion="${version#*.}" + __AlpineVersion="$__AlpineMajorVersion.$__AlpineMinorVersion" fi ;; - freebsd12) + freebsd13) __CodeName=freebsd __SkipUnmount=1 ;; - freebsd13) + freebsd14) __CodeName=freebsd - __FreeBSDBase="13.2-RELEASE" - __FreeBSDABI="13" + __FreeBSDBase="14.0-RELEASE" + __FreeBSDABI="14" __SkipUnmount=1 ;; illumos) @@ -420,6 +450,10 @@ fi __UbuntuPackages+=" ${__LLDB_Package:-}" +if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ports.ubuntu.com/" +fi + if [[ -n "$__LLVM_MajorVersion" ]]; then __UbuntuPackages+=" libclang-common-${__LLVM_MajorVersion}${__LLVM_MinorVersion:+.$__LLVM_MinorVersion}-dev" fi @@ -442,13 +476,39 @@ fi mkdir -p "$__RootfsDir" __RootfsDir="$( cd "$__RootfsDir" && pwd )" +__hasWget= +ensureDownloadTool() +{ + if command -v wget &> /dev/null; then + __hasWget=1 + elif command -v curl &> /dev/null; then + __hasWget=0 + else + >&2 echo "ERROR: either wget or curl is required by this script." + exit 1 + fi +} + if [[ "$__CodeName" == "alpine" ]]; then __ApkToolsVersion=2.12.11 - __ApkToolsSHA512SUM=53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33 __ApkToolsDir="$(mktemp -d)" __ApkKeysDir="$(mktemp -d)" + arch="$(uname -m)" - wget "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic//v$__ApkToolsVersion/x86_64/apk.static" -P "$__ApkToolsDir" + ensureDownloadTool + + if [[ "$__hasWget" == 1 ]]; then + wget -P "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static" + else + curl -SLO --create-dirs --output-dir "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static" + fi + if [[ "$arch" == "x86_64" ]]; then + __ApkToolsSHA512SUM="53e57b49230da07ef44ee0765b9592580308c407a8d4da7125550957bb72cb59638e04f8892a18b584451c8d841d1c7cb0f0ab680cc323a3015776affaa3be33" + elif [[ "$arch" == "aarch64" ]]; then + __ApkToolsSHA512SUM="9e2b37ecb2b56c05dad23d379be84fd494c14bd730b620d0d576bda760588e1f2f59a7fcb2f2080577e0085f23a0ca8eadd993b4e61c2ab29549fdb71969afd0" + else + echo "WARNING: add missing hash for your host architecture. To find the value, use: 'find /tmp -name apk.static -exec sha512sum {} \;'" + fi echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c chmod +x "$__ApkToolsDir/apk.static" @@ -477,20 +537,23 @@ if [[ "$__CodeName" == "alpine" ]]; then fi # initialize DB + # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" --initdb add if [[ "$__AlpineLlvmLibsLookup" == 1 ]]; then + # shellcheck disable=SC2086 __AlpinePackages+=" $("$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \ - search 'llvm*-libs' | sort | tail -1 | sed 's/-[^-]*//2g')" + search 'llvm*-libs' | grep -E '^llvm' | sort | tail -1 | sed 's/-[^-]*//2g')" fi # install all packages in one go + # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ @@ -501,12 +564,23 @@ if [[ "$__CodeName" == "alpine" ]]; then elif [[ "$__CodeName" == "freebsd" ]]; then mkdir -p "$__RootfsDir"/usr/local/etc JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} - wget -O - "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + + ensureDownloadTool + + if [[ "$__hasWget" == 1 ]]; then + wget -O- "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + else + curl -SL "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version + fi echo "ABI = \"FreeBSD:${__FreeBSDABI}:${__FreeBSDMachineArch}\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > "${__RootfsDir}"/usr/local/etc/pkg.conf echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"${__RootfsDir}/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf mkdir -p "$__RootfsDir"/tmp # get and build package manager - wget -O - "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + else + curl -SL "https://github.com/freebsd/pkg/archive/${__FreeBSDPkg}.tar.gz" | tar -C "$__RootfsDir"/tmp -zxf - + fi cd "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" # needed for install to succeed mkdir -p "$__RootfsDir"/host/etc @@ -514,27 +588,43 @@ elif [[ "$__CodeName" == "freebsd" ]]; then rm -rf "$__RootfsDir/tmp/pkg-${__FreeBSDPkg}" # install packages we need. INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf update + # shellcheck disable=SC2086 INSTALL_AS_USER=$(whoami) "$__RootfsDir"/host/sbin/pkg -r "$__RootfsDir" -C "$__RootfsDir"/usr/local/etc/pkg.conf install --yes $__FreeBSDPackages elif [[ "$__CodeName" == "illumos" ]]; then mkdir "$__RootfsDir/tmp" pushd "$__RootfsDir/tmp" JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} + + ensureDownloadTool + echo "Downloading sysroot." - wget -O - https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + else + curl -SL https://github.com/illumos/sysroot/releases/download/20181213-de6af22ae73b-v1/illumos-sysroot-i386-20181213-de6af22ae73b-v1.tar.gz | tar -C "$__RootfsDir" -xzf - + fi echo "Building binutils. Please wait.." - wget -O - https://ftp.gnu.org/gnu/binutils/binutils-2.33.1.tar.bz2 | tar -xjf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf - + else + curl -SL https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz | tar -xJf - + fi mkdir build-binutils && cd build-binutils - ../binutils-2.33.1/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" + ../binutils-2.42/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" make -j "$JOBS" && make install && cd .. echo "Building gcc. Please wait.." - wget -O - https://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xz | tar -xJf - + if [[ "$__hasWget" == 1 ]]; then + wget -O- https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf - + else + curl -SL https://ftp.gnu.org/gnu/gcc/gcc-13.3.0/gcc-13.3.0.tar.xz | tar -xJf - + fi CFLAGS="-fPIC" CXXFLAGS="-fPIC" CXXFLAGS_FOR_TARGET="-fPIC" CFLAGS_FOR_TARGET="-fPIC" export CFLAGS CXXFLAGS CXXFLAGS_FOR_TARGET CFLAGS_FOR_TARGET mkdir build-gcc && cd build-gcc - ../gcc-8.4.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.10" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \ + ../gcc-13.3.0/configure --prefix="$__RootfsDir" --target="${__illumosArch}-sun-solaris2.11" --program-prefix="${__illumosArch}-illumos-" --with-sysroot="$__RootfsDir" --with-gnu-as \ --with-gnu-ld --disable-nls --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv --disable-libcilkrts --disable-libada --disable-libsanitizer \ --disable-libquadmath-support --disable-shared --enable-tls make -j "$JOBS" && make install && cd .. @@ -542,9 +632,13 @@ elif [[ "$__CodeName" == "illumos" ]]; then if [[ "$__UseMirror" == 1 ]]; then BaseUrl=https://pkgsrc.smartos.skylime.net fi - BaseUrl="$BaseUrl/packages/SmartOS/trunk/${__illumosArch}/All" + BaseUrl="$BaseUrl/packages/SmartOS/2019Q4/${__illumosArch}/All" echo "Downloading manifest" - wget "$BaseUrl" + if [[ "$__hasWget" == 1 ]]; then + wget "$BaseUrl" + else + curl -SLO "$BaseUrl" + fi echo "Downloading dependencies." read -ra array <<<"$__IllumosPackages" for package in "${array[@]}"; do @@ -552,7 +646,11 @@ elif [[ "$__CodeName" == "illumos" ]]; then # find last occurrence of package in listing and extract its name package="$(sed -En '/.*href="('"$package"'-[0-9].*).tgz".*/h;$!d;g;s//\1/p' All)" echo "Resolved name '$package'" - wget "$BaseUrl"/"$package".tgz + if [[ "$__hasWget" == 1 ]]; then + wget "$BaseUrl"/"$package".tgz + else + curl -SLO "$BaseUrl"/"$package".tgz + fi ar -x "$package".tgz tar --skip-old-files -xzf "$package".tmp.tg* -C "$__RootfsDir" 2>/dev/null done @@ -561,10 +659,17 @@ elif [[ "$__CodeName" == "illumos" ]]; then rm -rf "$__RootfsDir"/{tmp,+*} mkdir -p "$__RootfsDir"/usr/include/net mkdir -p "$__RootfsDir"/usr/include/netpacket - wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h - wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h - wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h - wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h + if [[ "$__hasWget" == 1 ]]; then + wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h + wget -P "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h + wget -P "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h + wget -P "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h + else + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/bpf.h + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/net https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/io/bpf/net/dlt.h + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/netpacket https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/inet/sockmods/netpacket/packet.h + curl -SLO --create-dirs --output-dir "$__RootfsDir"/usr/include/sys https://raw.githubusercontent.com/illumos/illumos-gate/master/usr/src/uts/common/sys/sdt.h + fi elif [[ "$__CodeName" == "haiku" ]]; then JOBS=${MAXJOBS:="$(getconf _NPROCESSORS_ONLN)"} @@ -574,9 +679,16 @@ elif [[ "$__CodeName" == "haiku" ]]; then mkdir "$__RootfsDir/tmp/download" + ensureDownloadTool + echo "Downloading Haiku package tool" - git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 $__RootfsDir/tmp/script - wget -O "$__RootfsDir/tmp/download/hosttools.zip" $($__RootfsDir/tmp/script/fetch.sh --hosttools) + git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 "$__RootfsDir/tmp/script" + if [[ "$__hasWget" == 1 ]]; then + wget -O "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)" + else + curl -SLo "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)" + fi + unzip -o "$__RootfsDir/tmp/download/hosttools.zip" -d "$__RootfsDir/tmp/bin" DepotBaseUrl="https://depot.haiku-os.org/__api/v2/pkg/get-pkg" @@ -589,14 +701,25 @@ elif [[ "$__CodeName" == "haiku" ]]; then echo "Downloading $package..." # API documented here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L60 # The schema here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L598 - hpkgDownloadUrl="$(wget -qO- --post-data='{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ - --header='Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" - wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" + if [[ "$__hasWget" == 1 ]]; then + hpkgDownloadUrl="$(wget -qO- --post-data '{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ + --header 'Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" + wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" + else + hpkgDownloadUrl="$(curl -sSL -XPOST --data '{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ + --header 'Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" + curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" + fi done for package in haiku haiku_devel; do echo "Downloading $package..." - hpkgVersion="$(wget -qO- $HpkgBaseUrl | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" - wget -P "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + if [[ "$__hasWget" == 1 ]]; then + hpkgVersion="$(wget -qO- "$HpkgBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" + wget -P "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + else + hpkgVersion="$(curl -sSL "$HpkgBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" + curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + fi done # Set up the sysroot @@ -609,7 +732,11 @@ elif [[ "$__CodeName" == "haiku" ]]; then # Download buildtools echo "Downloading Haiku buildtools" - wget -O "$__RootfsDir/tmp/download/buildtools.zip" $($__RootfsDir/tmp/script/fetch.sh --buildtools --arch=$__HaikuArch) + if [[ "$__hasWget" == 1 ]]; then + wget -O "$__RootfsDir/tmp/download/buildtools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch)" + else + curl -SLo "$__RootfsDir/tmp/download/buildtools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --buildtools --arch=$__HaikuArch)" + fi unzip -o "$__RootfsDir/tmp/download/buildtools.zip" -d "$__RootfsDir" # Cleaning up temporary files @@ -622,10 +749,22 @@ elif [[ -n "$__CodeName" ]]; then __Keyring="$__Keyring --force-check-gpg" fi + # shellcheck disable=SC2086 + echo running debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" - cp "$__CrossDir/$__BuildArch/sources.list.$__CodeName" "$__RootfsDir/etc/apt/sources.list" + + mkdir -p "$__RootfsDir/etc/apt/sources.list.d/" + cat > "$__RootfsDir/etc/apt/sources.list.d/$__CodeName.sources" <>Start configuring Tizen rootfs" ln -sfn asm-${LINK_ARCH} ./usr/include/asm patch -p1 < $__TIZEN_CROSSDIR/tizen.patch +if [[ "$TIZEN_ARCH" == "riscv64" ]]; then + echo "Fixing broken symlinks in $PWD" + rm ./usr/lib64/libresolv.so + ln -s ../../lib64/libresolv.so.2 ./usr/lib64/libresolv.so + rm ./usr/lib64/libpthread.so + ln -s ../../lib64/libpthread.so.0 ./usr/lib64/libpthread.so + rm ./usr/lib64/libdl.so + ln -s ../../lib64/libdl.so.2 ./usr/lib64/libdl.so + rm ./usr/lib64/libutil.so + ln -s ../../lib64/libutil.so.1 ./usr/lib64/libutil.so + rm ./usr/lib64/libm.so + ln -s ../../lib64/libm.so.6 ./usr/lib64/libm.so + rm ./usr/lib64/librt.so + ln -s ../../lib64/librt.so.1 ./usr/lib64/librt.so + rm ./lib/ld-linux-riscv64-lp64d.so.1 + ln -s ../lib64/ld-linux-riscv64-lp64d.so.1 ./lib/ld-linux-riscv64-lp64d.so.1 +fi echo "<:--stdlib=${CLR_CMAKE_CXX_STANDARD_LIBRARY}>) + add_link_options($<$:--stdlib=${CLR_CMAKE_CXX_STANDARD_LIBRARY}>) +endif() + +option(CLR_CMAKE_CXX_STANDARD_LIBRARY_STATIC "Statically link against the C++ standard library" OFF) +if(CLR_CMAKE_CXX_STANDARD_LIBRARY_STATIC) + add_link_options($<$:-static-libstdc++>) +endif() + +set(CLR_CMAKE_CXX_ABI_LIBRARY "" CACHE STRING "C++ ABI implementation library to link against. Only supported with the Clang compiler.") +if (CLR_CMAKE_CXX_ABI_LIBRARY) + # The user may specify the ABI library with the 'lib' prefix, like 'libstdc++'. Strip the prefix here so the linker finds the right library. + string(REGEX REPLACE "^lib(.+)" "\\1" CLR_CMAKE_CXX_ABI_LIBRARY ${CLR_CMAKE_CXX_ABI_LIBRARY}) + # We need to specify this as a linker-backend option as Clang will filter this option out when linking to libc++. + add_link_options("LINKER:-l${CLR_CMAKE_CXX_ABI_LIBRARY}") +endif() + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index 8fda30bdce2b..e33743105635 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -1,6 +1,6 @@ param ( $darcVersion = $null, - $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16', + $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20', $verbosity = 'minimal', $toolpath = $null ) diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index c305ae6bd771..36dbd45e1ce8 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -2,7 +2,7 @@ source="${BASH_SOURCE[0]}" darcVersion='' -versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16' +versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20' verbosity='minimal' while [[ $# > 0 ]]; do diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh index 7e69e3a9e24a..7b9d97e3bd4d 100755 --- a/eng/common/dotnet-install.sh +++ b/eng/common/dotnet-install.sh @@ -71,6 +71,9 @@ case $cpuname in i[3-6]86) buildarch=x86 ;; + riscv64) + buildarch=riscv64 + ;; *) echo "Unknown CPU $cpuname detected, treating it as x64" buildarch=x64 @@ -82,7 +85,7 @@ if [[ $architecture != "" ]] && [[ $architecture != $buildarch ]]; then dotnetRoot="$dotnetRoot/$architecture" fi -InstallDotNet $dotnetRoot $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { +InstallDotNet "$dotnetRoot" $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { local exit_code=$? Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 ExitWithExitCode $exit_code diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh index bbb4922151e6..b8ecca72bbf5 100644 --- a/eng/common/generate-sbom-prep.sh +++ b/eng/common/generate-sbom-prep.sh @@ -14,10 +14,10 @@ done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . $scriptroot/pipeline-logging-functions.sh + # replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" - manifest_dir=$1 # Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly diff --git a/eng/common/helixpublish.proj b/eng/common/helixpublish.proj index d7f185856e79..c1323bf41210 100644 --- a/eng/common/helixpublish.proj +++ b/eng/common/helixpublish.proj @@ -1,3 +1,4 @@ + diff --git a/eng/common/internal/Directory.Build.props b/eng/common/internal/Directory.Build.props index dbf99d82a5c2..f1d041c33da5 100644 --- a/eng/common/internal/Directory.Build.props +++ b/eng/common/internal/Directory.Build.props @@ -1,4 +1,11 @@ + + + false + false + + + diff --git a/eng/common/internal/NuGet.config b/eng/common/internal/NuGet.config index 19d3d311b166..f70261ed689b 100644 --- a/eng/common/internal/NuGet.config +++ b/eng/common/internal/NuGet.config @@ -4,4 +4,7 @@ + + + diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj index 7f5ce6d60813..feaa6d20812d 100644 --- a/eng/common/internal/Tools.csproj +++ b/eng/common/internal/Tools.csproj @@ -1,9 +1,10 @@ + net472 - false false + false @@ -14,17 +15,8 @@ - - - - https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json; - - - $(RestoreSources); - https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json; - - + diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1 index ca38268c44d8..f71f6af6cdbc 100644 --- a/eng/common/native/CommonLibrary.psm1 +++ b/eng/common/native/CommonLibrary.psm1 @@ -277,7 +277,8 @@ function Get-MachineArchitecture { if (($ProcessorArchitecture -Eq "AMD64") -Or ($ProcessorArchitecture -Eq "IA64") -Or ($ProcessorArchitecture -Eq "ARM64") -Or - ($ProcessorArchitecture -Eq "LOONGARCH64")) { + ($ProcessorArchitecture -Eq "LOONGARCH64") -Or + ($ProcessorArchitecture -Eq "RISCV64")) { return "x64" } return "x86" diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh index 2d5660642b8d..9a0e1f2b4567 100644 --- a/eng/common/native/init-compiler.sh +++ b/eng/common/native/init-compiler.sh @@ -2,7 +2,9 @@ # # This file detects the C/C++ compiler and exports it to the CC/CXX environment variables # -# NOTE: some scripts source this file and rely on stdout being empty, make sure to not output anything here! +# NOTE: some scripts source this file and rely on stdout being empty, make sure +# to not output *anything* here, unless it is an error message that fails the +# build. if [ -z "$build_arch" ] || [ -z "$compiler" ]; then echo "Usage..." @@ -17,11 +19,9 @@ case "$compiler" in # clangx.y or clang-x.y version="$(echo "$compiler" | tr -d '[:alpha:]-=')" majorVersion="${version%%.*}" - [ -z "${version##*.*}" ] && minorVersion="${version#*.}" - if [ -z "$minorVersion" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -le 6 ]; then - minorVersion=0; - fi + # LLVM based on v18 released in early 2024, with two releases per year + maxVersion="$((18 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 6)))" compiler=clang ;; @@ -29,7 +29,9 @@ case "$compiler" in # gccx.y or gcc-x.y version="$(echo "$compiler" | tr -d '[:alpha:]-=')" majorVersion="${version%%.*}" - [ -z "${version##*.*}" ] && minorVersion="${version#*.}" + + # GCC based on v14 released in early 2024, with one release per year + maxVersion="$((14 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 12)))" compiler=gcc ;; esac @@ -47,91 +49,98 @@ check_version_exists() { desired_version=-1 # Set up the environment to be used for building with the desired compiler. - if command -v "$compiler-$1.$2" > /dev/null; then - desired_version="-$1.$2" - elif command -v "$compiler$1$2" > /dev/null; then - desired_version="$1$2" - elif command -v "$compiler-$1$2" > /dev/null; then - desired_version="-$1$2" + if command -v "$compiler-$1" > /dev/null; then + desired_version="-$1" + elif command -v "$compiler$1" > /dev/null; then + desired_version="$1" fi echo "$desired_version" } +__baseOS="$(uname)" +set_compiler_version_from_CC() { + if [ "$__baseOS" = "Darwin" ]; then + # On Darwin, the versions from -version/-dumpversion refer to Xcode + # versions, not llvm versions, so we can't rely on them. + return + fi + + version="$("$CC" -dumpversion)" + if [ -z "$version" ]; then + echo "Error: $CC -dumpversion didn't provide a version" + exit 1 + fi + + # gcc and clang often display 3 part versions. However, gcc can show only 1 part in some environments. + IFS=. read -r majorVersion _ < /dev/null; then - if [ "$(uname)" != "Darwin" ]; then - echo "Warning: Specific version of $compiler not found, falling back to use the one in PATH." - fi - CC="$(command -v "$compiler")" - CXX="$(command -v "$cxxCompiler")" - else - echo "No usable version of $compiler found." + if ! command -v "$compiler" > /dev/null; then + echo "Error: No compatible version of $compiler was found within the range of $minVersion to $maxVersion. Please upgrade your toolchain or specify the compiler explicitly using CLR_CC and CLR_CXX environment variables." exit 1 fi - else - if [ "$compiler" = "clang" ] && [ "$majorVersion" -lt 5 ]; then - if [ "$build_arch" = "arm" ] || [ "$build_arch" = "armel" ]; then - if command -v "$compiler" > /dev/null; then - echo "Warning: Found clang version $majorVersion which is not supported on arm/armel architectures, falling back to use clang from PATH." - CC="$(command -v "$compiler")" - CXX="$(command -v "$cxxCompiler")" - else - echo "Found clang version $majorVersion which is not supported on arm/armel architectures, and there is no clang in PATH." - exit 1 - fi - fi - fi + + CC="$(command -v "$compiler" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler" 2> /dev/null)" + set_compiler_version_from_CC fi else - desired_version="$(check_version_exists "$majorVersion" "$minorVersion")" + desired_version="$(check_version_exists "$majorVersion")" if [ "$desired_version" = "-1" ]; then - echo "Could not find specific version of $compiler: $majorVersion $minorVersion." + echo "Error: Could not find specific version of $compiler: $majorVersion." exit 1 fi fi if [ -z "$CC" ]; then - CC="$(command -v "$compiler$desired_version")" - CXX="$(command -v "$cxxCompiler$desired_version")" - if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler")"; fi + CC="$(command -v "$compiler$desired_version" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler$desired_version" 2> /dev/null)" + if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler" 2> /dev/null)"; fi + set_compiler_version_from_CC fi else if [ ! -f "$CLR_CC" ]; then - echo "CLR_CC is set but path '$CLR_CC' does not exist" + echo "Error: CLR_CC is set but path '$CLR_CC' does not exist" exit 1 fi CC="$CLR_CC" CXX="$CLR_CXX" + set_compiler_version_from_CC fi if [ -z "$CC" ]; then - echo "Unable to find $compiler." + echo "Error: Unable to find $compiler." exit 1 fi -# Only lld version >= 9 can be considered stable. lld doesn't support s390x. -if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && [ "$build_arch" != "s390x" ]; then - if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then - LDFLAGS="-fuse-ld=lld" +if [ "$__baseOS" != "Darwin" ]; then + # On Darwin, we always want to use the Apple linker. + + # Only lld version >= 9 can be considered stable. lld supports s390x starting from 18.0. + if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && { [ "$build_arch" != "s390x" ] || [ "$majorVersion" -ge 18 ]; }; then + if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then + LDFLAGS="-fuse-ld=lld" + fi fi fi -SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version")" +SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version" 2> /dev/null)" export CC CXX LDFLAGS SCAN_BUILD_COMMAND diff --git a/eng/common/native/init-distro-rid.sh b/eng/common/native/init-distro-rid.sh index de1687b2ccbe..83ea7aab0e08 100644 --- a/eng/common/native/init-distro-rid.sh +++ b/eng/common/native/init-distro-rid.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # getNonPortableDistroRid # @@ -11,21 +11,16 @@ # non-portable rid getNonPortableDistroRid() { - local targetOs="$1" - local targetArch="$2" - local rootfsDir="$3" - local nonPortableRid="" + targetOs="$1" + targetArch="$2" + rootfsDir="$3" + nonPortableRid="" if [ "$targetOs" = "linux" ]; then + # shellcheck disable=SC1091 if [ -e "${rootfsDir}/etc/os-release" ]; then - source "${rootfsDir}/etc/os-release" - - if [[ "${ID}" == "rhel" || "${ID}" == "rocky" || "${ID}" == "alpine" ]]; then - # remove the last version digit - VERSION_ID="${VERSION_ID%.*}" - fi - - if [[ "${VERSION_ID:-}" =~ ^([[:digit:]]|\.)+$ ]]; then + . "${rootfsDir}/etc/os-release" + if echo "${VERSION_ID:-}" | grep -qE '^([[:digit:]]|\.)+$'; then nonPortableRid="${ID}.${VERSION_ID}-${targetArch}" else # Rolling release distros either do not set VERSION_ID, set it as blank or @@ -33,45 +28,33 @@ getNonPortableDistroRid() # so omit it here to be consistent with everything else. nonPortableRid="${ID}-${targetArch}" fi - elif [ -e "${rootfsDir}/android_platform" ]; then - source "$rootfsDir"/android_platform + # shellcheck disable=SC1091 + . "${rootfsDir}/android_platform" nonPortableRid="$RID" fi fi if [ "$targetOs" = "freebsd" ]; then - # $rootfsDir can be empty. freebsd-version is shell script and it should always work. - __freebsd_major_version=$($rootfsDir/bin/freebsd-version | { read v; echo "${v%%.*}"; }) + # $rootfsDir can be empty. freebsd-version is a shell script and should always work. + __freebsd_major_version=$("$rootfsDir"/bin/freebsd-version | cut -d'.' -f1) nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" - elif command -v getprop && getprop ro.product.system.model 2>&1 | grep -qi android; then + elif command -v getprop >/dev/null && getprop ro.product.system.model | grep -qi android; then __android_sdk_version=$(getprop ro.build.version.sdk) nonPortableRid="android.$__android_sdk_version-${targetArch}" elif [ "$targetOs" = "illumos" ]; then __uname_version=$(uname -v) - case "$__uname_version" in - omnios-*) - __omnios_major_version=$(echo "${__uname_version:8:2}") - nonPortableRid=omnios."$__omnios_major_version"-"$targetArch" - ;; - joyent_*) - __smartos_major_version=$(echo "${__uname_version:7:4}") - nonPortableRid=smartos."$__smartos_major_version"-"$targetArch" - ;; - illumos_*) - nonPortableRid=openindiana-"$targetArch" - ;; - esac + nonPortableRid="illumos-${targetArch}" elif [ "$targetOs" = "solaris" ]; then __uname_version=$(uname -v) - __solaris_major_version=$(echo "${__uname_version%.*}") - nonPortableRid=solaris."$__solaris_major_version"-"$targetArch" + __solaris_major_version=$(echo "$__uname_version" | cut -d'.' -f1) + nonPortableRid="solaris.$__solaris_major_version-${targetArch}" elif [ "$targetOs" = "haiku" ]; then - __uname_release=$(uname -r) + __uname_release="$(uname -r)" nonPortableRid=haiku.r"$__uname_release"-"$targetArch" fi - echo "$(echo $nonPortableRid | tr '[:upper:]' '[:lower:]')" + echo "$nonPortableRid" | tr '[:upper:]' '[:lower:]' } # initDistroRidGlobal @@ -85,26 +68,23 @@ getNonPortableDistroRid() # None # # Notes: -# -# It is important to note that the function does not return anything, but it -# exports the following variables on success: -# -# __DistroRid : Non-portable rid of the target platform. -# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. -# +# It is important to note that the function does not return anything, but it +# exports the following variables on success: +# __DistroRid : Non-portable rid of the target platform. +# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. initDistroRidGlobal() { - local targetOs="$1" - local targetArch="$2" - local rootfsDir="" - if [ "$#" -ge 3 ]; then + targetOs="$1" + targetArch="$2" + rootfsDir="" + if [ $# -ge 3 ]; then rootfsDir="$3" fi if [ -n "${rootfsDir}" ]; then # We may have a cross build. Check for the existence of the rootfsDir if [ ! -e "${rootfsDir}" ]; then - echo "Error rootfsDir has been passed, but the location is not valid." + echo "Error: rootfsDir has been passed, but the location is not valid." exit 1 fi fi @@ -119,7 +99,7 @@ initDistroRidGlobal() STRINGS="$(command -v llvm-strings || true)" fi - # Check for musl-based distros (e.g Alpine Linux, Void Linux). + # Check for musl-based distros (e.g. Alpine Linux, Void Linux). if "${rootfsDir}/usr/bin/ldd" --version 2>&1 | grep -q musl || ( [ -n "$STRINGS" ] && "$STRINGS" "${rootfsDir}/usr/bin/ldd" 2>&1 | grep -q musl ); then __PortableTargetOS="linux-musl" diff --git a/eng/common/native/init-os-and-arch.sh b/eng/common/native/init-os-and-arch.sh index e693617a6c2b..38921d4338f7 100644 --- a/eng/common/native/init-os-and-arch.sh +++ b/eng/common/native/init-os-and-arch.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # Use uname to determine what the OS is. OSName=$(uname -s | tr '[:upper:]' '[:lower:]') @@ -35,6 +35,10 @@ fi case "$CPUName" in arm64|aarch64) arch=arm64 + if [ "$(getconf LONG_BIT)" -lt 64 ]; then + # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) + arch=arm + fi ;; loongarch64) @@ -50,6 +54,7 @@ case "$CPUName" in ;; armv7l|armv8l) + # shellcheck disable=SC1091 if (NAME=""; . /etc/os-release; test "$NAME" = "Tizen"); then arch=armel else diff --git a/eng/common/post-build/check-channel-consistency.ps1 b/eng/common/post-build/check-channel-consistency.ps1 index 63f3464c986a..61208d2d1351 100644 --- a/eng/common/post-build/check-channel-consistency.ps1 +++ b/eng/common/post-build/check-channel-consistency.ps1 @@ -4,10 +4,18 @@ param( ) try { - . $PSScriptRoot\post-build-utils.ps1 + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 if ($PromoteToChannels -eq "") { - Write-PipelineTaskError -Type 'warning' -Message "This build won't publish assets as it's not configured to any Maestro channel. If that wasn't intended use Darc to configure a default channel using add-default-channel for this branch or to promote it to a channel using add-build-to-channel. See https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#assigning-an-individual-build-to-a-channel for more info." + Write-PipelineTaskError -Type 'warning' -Message "This build won't publish assets as it's not configured to any Maestro channel. If that wasn't intended use Darc to configure a default channel using add-default-channel for this branch or to promote it to a channel using add-build-to-channel. See https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md#assigning-an-individual-build-to-a-channel for more info." ExitWithExitCode 0 } diff --git a/eng/common/post-build/nuget-validation.ps1 b/eng/common/post-build/nuget-validation.ps1 index 22b1c4dfe4a7..e5de00c89836 100644 --- a/eng/common/post-build/nuget-validation.ps1 +++ b/eng/common/post-build/nuget-validation.ps1 @@ -5,9 +5,14 @@ param( [Parameter(Mandatory=$true)][string] $PackagesPath # Path to where the packages to be validated are ) -try { - . $PSScriptRoot\post-build-utils.ps1 +# `tools.ps1` checks $ci to perform some actions. Since the post-build +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +$disableConfigureToolsetImport = $true +. $PSScriptRoot\..\tools.ps1 +try { & $PSScriptRoot\nuget-verification.ps1 ${PackagesPath}\*.nupkg } catch { diff --git a/eng/common/post-build/nuget-verification.ps1 b/eng/common/post-build/nuget-verification.ps1 index 6cbbcafade26..eea88e653c91 100644 --- a/eng/common/post-build/nuget-verification.ps1 +++ b/eng/common/post-build/nuget-verification.ps1 @@ -118,4 +118,4 @@ if ($LASTEXITCODE -ne 0) { Write-Error "The verify tool found some problems." } else { Write-Output "The verify tool succeeded." -} \ No newline at end of file +} diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 238945cb5ab4..a261517ef906 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -5,11 +5,17 @@ param( [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net', [Parameter(Mandatory=$true)][string] $WaitPublishingFinish, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, - [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters + [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters, + [Parameter(Mandatory=$false)][string] $RequireDefaultChannels ) try { - . $PSScriptRoot\post-build-utils.ps1 + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 $darc = Get-Darc @@ -28,6 +34,10 @@ try { if ("false" -eq $WaitPublishingFinish) { $optionalParams.Add("--no-wait") | Out-Null } + + if ("true" -eq $RequireDefaultChannels) { + $optionalParams.Add("--default-channels-required") | Out-Null + } & $darc add-build-to-channel ` --id $buildId ` @@ -37,6 +47,7 @@ try { --azdev-pat "$AzdoToken" ` --bar-uri "$MaestroApiEndPoint" ` --ci ` + --verbose ` @optionalParams if ($LastExitCode -ne 0) { diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1 new file mode 100644 index 000000000000..b7fc19591507 --- /dev/null +++ b/eng/common/post-build/redact-logs.ps1 @@ -0,0 +1,89 @@ +[CmdletBinding(PositionalBinding=$False)] +param( + [Parameter(Mandatory=$true, Position=0)][string] $InputPath, + [Parameter(Mandatory=$true)][string] $BinlogToolVersion, + [Parameter(Mandatory=$false)][string] $DotnetPath, + [Parameter(Mandatory=$false)][string] $PackageFeed = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json', + # File with strings to redact - separated by newlines. + # For comments start the line with '# ' - such lines are ignored + [Parameter(Mandatory=$false)][string] $TokensFilePath, + [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact +) + +try { + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 + + $packageName = 'binlogtool' + + $dotnet = $DotnetPath + + if (!$dotnet) { + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + } + + $toolList = & "$dotnet" tool list -g + + if ($toolList -like "*$packageName*") { + & "$dotnet" tool uninstall $packageName -g + } + + $toolPath = "$PSScriptRoot\..\..\..\.tools" + $verbosity = 'minimal' + + New-Item -ItemType Directory -Force -Path $toolPath + + Push-Location -Path $toolPath + + try { + Write-Host "Installing Binlog redactor CLI..." + Write-Host "'$dotnet' new tool-manifest" + & "$dotnet" new tool-manifest + Write-Host "'$dotnet' tool install $packageName --local --add-source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" + & "$dotnet" tool install $packageName --local --add-source "$PackageFeed" -v $verbosity --version $BinlogToolVersion + + if (Test-Path $TokensFilePath) { + Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath + $TokensToRedact += Get-Content -Path $TokensFilePath | Foreach {$_.Trim()} | Where { $_ -notmatch "^# " } + } + + $optionalParams = [System.Collections.ArrayList]::new() + + Foreach ($p in $TokensToRedact) + { + if($p -match '^\$\(.*\)$') + { + Write-Host ("Ignoring token {0} as it is probably unexpanded AzDO variable" -f $p) + } + elseif($p) + { + $optionalParams.Add("-p:" + $p) | Out-Null + } + } + + & $dotnet binlogtool redact --input:$InputPath --recurse --in-place ` + @optionalParams + + if ($LastExitCode -ne 0) { + Write-PipelineTelemetryError -Category 'Redactor' -Type 'warning' -Message "Problems using Redactor tool (exit code: $LastExitCode). But ignoring them now." + } + } + finally { + Pop-Location + } + + Write-Host 'done.' +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Category 'Redactor' -Message "There was an error while trying to redact logs. Error: $_" + ExitWithExitCode 1 +} diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 index 4011d324e739..1976ef70fb85 100644 --- a/eng/common/post-build/sourcelink-validation.ps1 +++ b/eng/common/post-build/sourcelink-validation.ps1 @@ -6,7 +6,15 @@ param( [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use ) -. $PSScriptRoot\post-build-utils.ps1 +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +# `tools.ps1` checks $ci to perform some actions. Since the post-build +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +$disableConfigureToolsetImport = $true +. $PSScriptRoot\..\tools.ps1 # Cache/HashMap (File -> Exist flag) used to consult whether a file exist # in the repository at a specific commit point. This is populated by inserting diff --git a/eng/common/post-build/symbols-validation.ps1 b/eng/common/post-build/symbols-validation.ps1 index cd2181bafa05..7146e593ffae 100644 --- a/eng/common/post-build/symbols-validation.ps1 +++ b/eng/common/post-build/symbols-validation.ps1 @@ -322,8 +322,6 @@ function InstallDotnetSymbol { } try { - . $PSScriptRoot\post-build-utils.ps1 - InstallDotnetSymbol foreach ($Job in @(Get-Job)) { diff --git a/eng/common/sdl/NuGet.config b/eng/common/sdl/NuGet.config index 5bfbb02ef043..3849bdb3cf51 100644 --- a/eng/common/sdl/NuGet.config +++ b/eng/common/sdl/NuGet.config @@ -5,11 +5,11 @@ - + - + diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1 index 81ded5b7f477..4715d75e974d 100644 --- a/eng/common/sdl/execute-all-sdl-tools.ps1 +++ b/eng/common/sdl/execute-all-sdl-tools.ps1 @@ -6,6 +6,7 @@ Param( [string] $BranchName=$env:BUILD_SOURCEBRANCH, # Optional: name of branch or version of gdn settings; defaults to master [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, # Required: the directory where source files are located [string] $ArtifactsDirectory = (Join-Path $env:BUILD_ARTIFACTSTAGINGDIRECTORY ('artifacts')), # Required: the directory where build artifacts are located + [string] $AzureDevOpsAccessToken, # Required: access token for dnceng; should be provided via KeyVault # Optional: list of SDL tools to run on source code. See 'configure-sdl-tool.ps1' for tools list # format. @@ -74,7 +75,7 @@ try { } Exec-BlockVerbosely { - & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -GuardianLoggerLevel $GuardianLoggerLevel + & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel } $gdnFolder = Join-Path $workingDirectory '.gdn' @@ -103,6 +104,7 @@ try { -TargetDirectory $targetDirectory ` -GdnFolder $gdnFolder ` -ToolsList $tools ` + -AzureDevOpsAccessToken $AzureDevOpsAccessToken ` -GuardianLoggerLevel $GuardianLoggerLevel ` -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams ` -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams ` diff --git a/eng/common/sdl/init-sdl.ps1 b/eng/common/sdl/init-sdl.ps1 index 588ff8e22fbe..3ac1d92b3700 100644 --- a/eng/common/sdl/init-sdl.ps1 +++ b/eng/common/sdl/init-sdl.ps1 @@ -3,6 +3,7 @@ Param( [string] $Repository, [string] $BranchName='master', [string] $WorkingDirectory, + [string] $AzureDevOpsAccessToken, [string] $GuardianLoggerLevel='Standard' ) @@ -20,7 +21,14 @@ $ci = $true # Don't display the console progress UI - it's a huge perf hit $ProgressPreference = 'SilentlyContinue' +# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file +$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken")) +$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn") +$uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0" +$zipFile = "$WorkingDirectory/gdn.zip" + Add-Type -AssemblyName System.IO.Compression.FileSystem +$gdnFolder = (Join-Path $WorkingDirectory '.gdn') try { # if the folder does not exist, we'll do a guardian init and push it to the remote repository diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config index e5f543ea68c2..4585cfd6bba1 100644 --- a/eng/common/sdl/packages.config +++ b/eng/common/sdl/packages.config @@ -1,4 +1,4 @@ - + diff --git a/eng/common/sdl/sdl.ps1 b/eng/common/sdl/sdl.ps1 index 7fe603fe995d..648c5068d7d6 100644 --- a/eng/common/sdl/sdl.ps1 +++ b/eng/common/sdl/sdl.ps1 @@ -4,8 +4,6 @@ function Install-Gdn { [Parameter(Mandatory=$true)] [string]$Path, - [string]$Source = "https://pkgs.dev.azure.com/dnceng/_packaging/Guardian1ESPTUpstreamOrgFeed/nuget/v3/index.json", - # If omitted, install the latest version of Guardian, otherwise install that specific version. [string]$Version ) @@ -21,7 +19,7 @@ function Install-Gdn { $ci = $true . $PSScriptRoot\..\tools.ps1 - $argumentList = @("install", "Microsoft.Guardian.Cli.win-x64", "-Source $Source", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") + $argumentList = @("install", "Microsoft.Guardian.Cli", "-Source https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") if ($Version) { $argumentList += "-Version $Version" diff --git a/eng/common/sdl/trim-assets-version.ps1 b/eng/common/sdl/trim-assets-version.ps1 index a2e004877045..0daa2a9e9462 100644 --- a/eng/common/sdl/trim-assets-version.ps1 +++ b/eng/common/sdl/trim-assets-version.ps1 @@ -72,4 +72,4 @@ catch { Write-Host $_ Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ ExitWithExitCode 1 -} \ No newline at end of file +} diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md new file mode 100644 index 000000000000..4bf4cf41bd7c --- /dev/null +++ b/eng/common/template-guidance.md @@ -0,0 +1,133 @@ +# Overview + +Arcade provides templates for public (`/templates`) and 1ES pipeline templates (`/templates-official`) scenarios. Pipelines which are required to be managed by 1ES pipeline templates should reference `/templates-offical`, all other pipelines may reference `/templates`. + +## How to use + +Basic guidance is: + +- 1ES Pipeline Template or 1ES Microbuild template runs should reference `eng/common/templates-official`. Any internal production-graded pipeline should use these templates. + +- All other runs should reference `eng/common/templates`. + +See [azure-pipelines.yml](../../azure-pipelines.yml) (templates-official example) or [azure-pipelines-pr.yml](../../azure-pipelines-pr.yml) (templates example) for examples. + +#### The `templateIs1ESManaged` parameter + +The `templateIs1ESManaged` is available on most templates and affects which of the variants is used for nested templates. See [Development Notes](#development-notes) below for more information on the `templateIs1ESManaged1 parameter. + +- For templates under `job/`, `jobs/`, `steps`, or `post-build/`, this parameter must be explicitly set. + +## Multiple outputs + +1ES pipeline templates impose a policy where every publish artifact execution results in additional security scans being injected into your pipeline. When using `templates-official/jobs/jobs.yml`, Arcade reduces the number of additional security injections by gathering all publishing outputs into the [Build.ArtifactStagingDirectory](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services), and utilizing the [outputParentDirectory](https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/1es-pipeline-templates/features/outputs#multiple-outputs) feature of 1ES pipeline templates. When implementing your pipeline, if you ensure publish artifacts are located in the `$(Build.ArtifactStagingDirectory)`, and utilize the 1ES provided template context, then you can reduce the number of security scans for your pipeline. + +Example: +``` yaml +# azure-pipelines.yml +extends: + template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + parameters: + stages: + - stage: build + jobs: + - template: /eng/common/templates-official/jobs/jobs.yml@self + parameters: + # 1ES makes use of outputs to reduce security task injection overhead + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish logs from source' + continueOnError: true + condition: always() + targetPath: $(Build.ArtifactStagingDirectory)/artifacts/log + artifactName: Logs + jobs: + - job: Windows + steps: + - script: echo "friendly neighborhood" > artifacts/marvel/spiderman.txt + # copy build outputs to artifact staging directory for publishing + - task: CopyFiles@2 + displayName: Gather build output + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/artifacts/marvel' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/marvel' +``` + +Note: Multiple outputs are ONLY applicable to 1ES PT publishing (only usable when referencing `templates-official`). + +## Development notes + +**Folder / file structure** + +``` text +eng\common\ + [templates || templates-official]\ + job\ + job.yml (shim + artifact publishing logic) + onelocbuild.yml (shim) + publish-build-assets.yml (shim) + source-build.yml (shim) + source-index-stage1.yml (shim) + jobs\ + codeql-build.yml (shim) + jobs.yml (shim) + source-build.yml (shim) + post-build\ + post-build.yml (shim) + common-variabls.yml (shim) + setup-maestro-vars.yml (shim) + steps\ + publish-build-artifacts.yml (logic) + publish-pipeline-artifacts.yml (logic) + component-governance.yml (shim) + generate-sbom.yml (shim) + publish-logs.yml (shim) + retain-build.yml (shim) + send-to-helix.yml (shim) + source-build.yml (shim) + variables\ + pool-providers.yml (logic + redirect) # templates/variables/pool-providers.yml will redirect to templates-official/variables/pool-providers.yml if you are running in the internal project + sdl-variables.yml (logic) + core-templates\ + job\ + job.yml (logic) + onelocbuild.yml (logic) + publish-build-assets.yml (logic) + source-build.yml (logic) + source-index-stage1.yml (logic) + jobs\ + codeql-build.yml (logic) + jobs.yml (logic) + source-build.yml (logic) + post-build\ + common-variabls.yml (logic) + post-build.yml (logic) + setup-maestro-vars.yml (logic) + steps\ + component-governance.yml (logic) + generate-sbom.yml (logic) + publish-build-artifacts.yml (redirect) + publish-logs.yml (logic) + publish-pipeline-artifacts.yml (redirect) + retain-build.yml (logic) + send-to-helix.yml (logic) + source-build.yml (logic) + variables\ + pool-providers.yml (redirect) +``` + +In the table above, a file is designated as "shim", "logic", or "redirect". + +- shim - represents a yaml file which is an intermediate step between pipeline logic and .Net Core Engineering's templates (`core-templates`) and defines the `is1ESPipeline` parameter value. + +- logic - represents actual base template logic. + +- redirect- represents a file in `core-templates` which redirects to the "logic" file in either `templates` or `templates-official`. + +Logic for Arcade's templates live **primarily** in the `core-templates` folder. The exceptions to the location of the logic files are around artifact publishing, which is handled differently between 1es pipeline templates and standard templates. `templates` and `templates-official` provide shim entry points which redirect to `core-templates` while also defining the `is1ESPipeline` parameter. If a shim is referenced in `templates`, then `is1ESPipeline` is set to `false`. If a shim is referenced in `templates-official`, then `is1ESPipeline` is set to `true`. + +Within `templates` and `templates-official`, the templates at the "stages", and "jobs" / "job" level have been replaced with shims. Templates at the "steps" and "variables" level are typically too granular to be replaced with shims and instead persist logic which is directly applicable to either scenario. + +Within `core-templates`, there are a handful of places where logic is dependent on which shim entry point was used. In those places, we redirect back to the respective logic file in `templates` or `templates-official`. diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 4cca1114fcca..81ea7a261f2d 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -1,271 +1,81 @@ -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - parameters: -# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - cancelTimeoutInMinutes: '' - condition: '' - container: '' - continueOnError: false - dependsOn: '' - displayName: '' - pool: '' - steps: [] - strategy: '' - timeoutInMinutes: '' - variables: [] - workspace: '' - templateContext: '' - -# Job base template specific parameters - # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md - artifacts: '' - enableMicrobuild: false - microbuildUseESRP: true - enablePublishBuildArtifacts: false - enablePublishBuildAssets: false - enablePublishTestResults: false - enablePublishUsingPipelines: false - enableBuildRetry: false - disableComponentGovernance: '' - componentGovernanceIgnoreDirectories: '' - mergeTestResults: false - testRunTitle: '' - testResultsFormat: '' - name: '' - preSteps: [] - runAsPublic: false # Sbom related params enableSbom: true - PackageVersion: 7.0.0 + runAsPublic: false + PackageVersion: 9.0.0 BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom jobs: -- job: ${{ parameters.name }} - - ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: - cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} - - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - - ${{ if ne(parameters.container, '') }}: - container: ${{ parameters.container }} - - ${{ if ne(parameters.continueOnError, '') }}: - continueOnError: ${{ parameters.continueOnError }} - - ${{ if ne(parameters.dependsOn, '') }}: - dependsOn: ${{ parameters.dependsOn }} - - ${{ if ne(parameters.displayName, '') }}: - displayName: ${{ parameters.displayName }} - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - - ${{ if ne(parameters.strategy, '') }}: - strategy: ${{ parameters.strategy }} - - ${{ if ne(parameters.timeoutInMinutes, '') }}: - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - ${{ if ne(parameters.templateContext, '') }}: - templateContext: ${{ parameters.templateContext }} - - variables: - - ${{ if ne(parameters.enableTelemetry, 'false') }}: - - name: DOTNET_CLI_TELEMETRY_PROFILE - value: '$(Build.Repository.Uri)' - - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: - - name: EnableRichCodeNavigation - value: 'true' - # Retry signature validation up to three times, waiting 2 seconds between attempts. - # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures - - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY - value: 3,2000 - - ${{ each variable in parameters.variables }}: - # handle name-value variable syntax - # example: - # - name: [key] - # value: [value] - - ${{ if ne(variable.name, '') }}: - - name: ${{ variable.name }} - value: ${{ variable.value }} - - # handle variable groups - - ${{ if ne(variable.group, '') }}: - - group: ${{ variable.group }} - - # handle template variable syntax - # example: - # - template: path/to/template.yml - # parameters: - # [key]: [value] - - ${{ if ne(variable.template, '') }}: - - template: ${{ variable.template }} - ${{ if ne(variable.parameters, '') }}: - parameters: ${{ variable.parameters }} - - # handle key-value variable syntax. - # example: - # - [key]: [value] - - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: - - ${{ each pair in variable }}: - - name: ${{ pair.key }} - value: ${{ pair.value }} - - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds - - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: DotNet-HelixApi-Access - - ${{ if ne(parameters.workspace, '') }}: - workspace: ${{ parameters.workspace }} - - steps: - - ${{ if ne(parameters.preSteps, '') }}: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - ${{ if eq(parameters.microbuildUseESRP, true) }}: - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea - ${{ else }}: - ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca - env: - TeamName: $(_TeamName) - MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)' - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - - - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - - task: NuGetAuthenticate@1 - - - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: - - task: DownloadPipelineArtifact@2 - inputs: - buildType: current - artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} - targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} - itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} - - - ${{ each step in parameters.steps }}: - - ${{ step }} - - - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: - - task: RichCodeNavIndexer@0 - displayName: RichCodeNav Upload - inputs: - languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} - environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }} - richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin - uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} - continueOnError: true - - - template: /eng/common/templates-official/steps/component-governance.yml - parameters: - ${{ if eq(parameters.disableComponentGovernance, '') }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: - disableComponentGovernance: false - ${{ else }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - env: - TeamName: $(_TeamName) - - - ${{ if ne(parameters.artifacts.publish, '') }}: - - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - task: CopyFiles@2 - displayName: Gather binaries for publish to artifacts - inputs: - SourceFolder: 'artifacts/bin' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' - - task: CopyFiles@2 - displayName: Gather packages for publish to artifacts - inputs: - SourceFolder: 'artifacts/packages' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish pipeline artifacts - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - continueOnError: true - condition: always() - - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - - task: 1ES.PublishPipelineArtifact@1 - inputs: - targetPath: 'artifacts/log' - artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} - displayName: 'Publish logs' - continueOnError: true - condition: always() - - - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} - continueOnError: true - condition: always() - - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: - - task: PublishTestResults@2 - displayName: Publish XUnit Test Results - inputs: - testResultsFormat: 'xUnit' - testResultsFiles: '*.xml' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: - - task: PublishTestResults@2 - displayName: Publish TRX Test Results - inputs: - testResultsFormat: 'VSTest' - testResultsFiles: '*.trx' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: - - template: /eng/common/templates-official/steps/generate-sbom.yml - parameters: - PackageVersion: ${{ parameters.packageVersion}} - BuildDropPath: ${{ parameters.buildDropPath }} - IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - - task: 1ES.PublishPipelineArtifact@1 - inputs: - targetPath: '$(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration' - artifactName: 'BuildConfiguration' - displayName: 'Publish build retry configuration' - continueOnError: true +- template: /eng/common/core-templates/job/job.yml + parameters: + is1ESPipeline: true + + componentGovernanceSteps: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + - template: /eng/common/templates/steps/generate-sbom.yml + parameters: + PackageVersion: ${{ parameters.packageVersion }} + BuildDropPath: ${{ parameters.buildDropPath }} + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom + publishArtifacts: false + + # publish artifacts + # for 1ES managed templates, use the templateContext.output to handle multiple outputs. + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - output: buildArtifacts + displayName: Publish pipeline artifacts + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + condition: always() + continueOnError: true + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - output: pipelineArtifact + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log' + artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)_Attempt$(System.JobAttempt)') }} + displayName: 'Publish logs' + continueOnError: true + condition: always() + sbomEnabled: false # we don't need SBOM for logs + + - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: + - output: buildArtifacts + displayName: Publish Logs + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + publishLocation: Container + ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + continueOnError: true + condition: always() + sbomEnabled: false # we don't need SBOM for logs + + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - output: pipelineArtifact + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/eng/common/BuildConfiguration' + artifactName: 'BuildConfiguration' + displayName: 'Publish build retry configuration' + continueOnError: true + sbomEnabled: false # we don't need SBOM for BuildConfiguration + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + - output: pipelineArtifact + displayName: Publish SBOM manifest + continueOnError: true + targetPath: $(Build.ArtifactStagingDirectory)/sbom + artifactName: $(ARTIFACT_NAME) + + # add any outputs provided via root yaml + - ${{ if ne(parameters.templateContext.outputs, '') }}: + - ${{ each output in parameters.templateContext.outputs }}: + - ${{ output }} + + # add any remaining templateContext properties + ${{ each context in parameters.templateContext }}: + ${{ if and(ne(context.key, 'outputParentDirectory'), ne(context.key, 'outputs')) }}: + ${{ context.key }}: ${{ context.value }} + + ${{ each parameter in parameters }}: + ${{ if and(ne(parameter.key, 'templateContext'), ne(parameter.key, 'is1ESPipeline')) }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/onelocbuild.yml b/eng/common/templates-official/job/onelocbuild.yml index 68e7a65605c5..0f0c514b912d 100644 --- a/eng/common/templates-official/job/onelocbuild.yml +++ b/eng/common/templates-official/job/onelocbuild.yml @@ -1,112 +1,7 @@ -parameters: - # Optional: dependencies of the job - dependsOn: '' - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: '' - - CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex - GithubPat: $(BotAccount-dotnet-bot-repo-PAT) - - SourcesDirectory: $(System.DefaultWorkingDirectory) - CreatePr: true - AutoCompletePr: false - ReusePr: true - UseLfLineEndings: true - UseCheckedInLocProjectJson: false - SkipLocProjectJsonGeneration: false - LanguageSet: VS_Main_Languages - LclSource: lclFilesInRepo - LclPackageId: '' - RepoType: gitHub - GitHubOrg: dotnet - MirrorRepo: '' - MirrorBranch: main - condition: '' - JobNameSuffix: '' - jobs: -- job: OneLocBuild${{ parameters.JobNameSuffix }} - - dependsOn: ${{ parameters.dependsOn }} - - displayName: OneLocBuild${{ parameters.JobNameSuffix }} - - variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - - name: _GenerateLocProjectArguments - value: -SourcesDirectory ${{ parameters.SourcesDirectory }} - -LanguageSet "${{ parameters.LanguageSet }}" - -CreateNeutralXlfs - - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: - - name: _GenerateLocProjectArguments - value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - - steps: - - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: - - task: Powershell@2 - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1 - arguments: $(_GenerateLocProjectArguments) - displayName: Generate LocProject.json - condition: ${{ parameters.condition }} - - - task: OneLocBuild@2 - displayName: OneLocBuild - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - inputs: - locProj: eng/Localize/LocProject.json - outDir: $(Build.ArtifactStagingDirectory) - lclSource: ${{ parameters.LclSource }} - lclPackageId: ${{ parameters.LclPackageId }} - isCreatePrSelected: ${{ parameters.CreatePr }} - isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} - ${{ if eq(parameters.CreatePr, true) }}: - isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - isShouldReusePrSelected: ${{ parameters.ReusePr }} - packageSourceAuth: patAuth - patVariable: ${{ parameters.CeapexPat }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - repoType: ${{ parameters.RepoType }} - gitHubPatVariable: "${{ parameters.GithubPat }}" - ${{ if ne(parameters.MirrorRepo, '') }}: - isMirrorRepoSelected: true - gitHubOrganization: ${{ parameters.GitHubOrg }} - mirrorRepo: ${{ parameters.MirrorRepo }} - mirrorBranch: ${{ parameters.MirrorBranch }} - condition: ${{ parameters.condition }} - - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish Localization Files - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} +- template: /eng/common/core-templates/job/onelocbuild.yml + parameters: + is1ESPipeline: true - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish LocProject.json - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} \ No newline at end of file + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index 53109246d948..d667a70e8de7 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -1,177 +1,7 @@ -parameters: - configuration: 'Debug' - - # Optional: condition for the job to run - condition: '' - - # Optional: 'true' if future jobs should run even if this job fails - continueOnError: false - - # Optional: dependencies of the job - dependsOn: '' - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: {} - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishUsingPipelines: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishAssetsImmediately: false - - artifactsPublishingAdditionalParameters: '' - - signingValidationAdditionalParameters: '' - - repositoryAlias: self - - officialBuildId: '' - jobs: -- job: Asset_Registry_Publish - - dependsOn: ${{ parameters.dependsOn }} - timeoutInMinutes: 150 - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - displayName: Publish Assets - ${{ else }}: - displayName: Publish to Build Asset Registry - - variables: - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: Publish-Build-Assets - - group: AzureDevOps-Artifact-Feeds-Pats - - name: runCodesignValidationInjection - value: false - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates-official/post-build/common-variables.yml - - name: OfficialBuildId - ${{ if ne(parameters.officialBuildId, '') }}: - value: ${{ parameters.officialBuildId }} - ${{ else }}: - value: $(Build.BuildNumber) - - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Publishing-Internal - image: windows.vs2019.amd64 - os: windows - steps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - checkout: ${{ parameters.repositoryAlias }} - fetchDepth: 3 - clean: true - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - checkDownloadedFiles: true - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: NuGetAuthenticate@1 - - - task: AzureCLI@2 - displayName: Publish Build Assets - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 - arguments: > - -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:MaestroApiEndpoint=https://maestro.dot.net - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} - /p:OfficialBuildId=$(OfficialBuildId) - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: powershell@2 - displayName: Create ReleaseConfigs Artifact - inputs: - targetType: inline - script: | - New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force - $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt" - Add-Content -Path $filePath -Value $(BARBuildId) - Add-Content -Path $filePath -Value "$(DefaultChannels)" - Add-Content -Path $filePath -Value $(IsStableBuild) - - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish ReleaseConfigs Artifact - inputs: - PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - task: powershell@2 - displayName: Check if SymbolPublishingExclusionsFile.txt exists - inputs: - targetType: inline - script: | - $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt" - if(Test-Path -Path $symbolExclusionfile) - { - Write-Host "SymbolExclusionFile exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]true" - } - else{ - Write-Host "Symbols Exclusion file does not exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]false" - } - - - task: 1ES.PublishBuildArtifacts@1 - displayName: Publish SymbolPublishingExclusionsFile Artifact - condition: eq(variables['SymbolExclusionFile'], 'true') - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates-official/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion 3 - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' +- template: /eng/common/core-templates/job/publish-build-assets.yml + parameters: + is1ESPipeline: true - - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - - template: /eng/common/templates-official/steps/publish-logs.yml - parameters: - JobLabel: 'Publish_Artifacts_Logs' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml index f75400757d1e..1a480034b678 100644 --- a/eng/common/templates-official/job/source-build.yml +++ b/eng/common/templates-official/job/source-build.yml @@ -1,79 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. The template produces a server job with a - # default ID 'Source_Build_Complete' to put in a dependency list if necessary. - - # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. - jobNamePrefix: 'Source_Build' - - # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for - # managed-only repositories. This is an object with these properties: - # - # name: '' - # The name of the job. This is included in the job ID. - # targetRID: '' - # The name of the target RID to use, instead of the one auto-detected by Arcade. - # nonPortable: false - # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than - # linux-x64), and compiling against distro-provided packages rather than portable ones. - # skipPublishValidation: false - # Disables publishing validation. By default, a check is performed to ensure no packages are - # published by source-build. - # container: '' - # A container to use. Runs in docker. - # pool: {} - # A pool to use. Runs directly on an agent. - # buildScript: '' - # Specifies the build script to invoke to perform the build in the repo. The default - # './build.sh' should work for typical Arcade repositories, but this is customizable for - # difficult situations. - # jobProperties: {} - # A list of job properties to inject at the top level, for potential extensibility beyond - # container and pool. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: -- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} - displayName: Source-Build (${{ parameters.platform.name }}) - - ${{ each property in parameters.platform.jobProperties }}: - ${{ property.key }}: ${{ property.value }} - - ${{ if ne(parameters.platform.container, '') }}: - container: ${{ parameters.platform.container }} - - ${{ if eq(parameters.platform.pool, '') }}: - # The default VM host AzDO pool. This should be capable of running Docker containers: almost all - # source-build builds run in Docker, including the default managed platform. - # /eng/common/templates-official/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-azurelinux-3 - os: linux - - ${{ if ne(parameters.platform.pool, '') }}: - pool: ${{ parameters.platform.pool }} - - workspace: - clean: all +- template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: true - steps: - - ${{ if eq(parameters.enableInternalSources, true) }}: - - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml - - template: /eng/common/templates-official/steps/source-build.yml - parameters: - platform: ${{ parameters.platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml index 8de0dfaf3494..6d5ead316f92 100644 --- a/eng/common/templates-official/job/source-index-stage1.yml +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -1,83 +1,7 @@ -parameters: - runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20250425.2 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 - sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json - sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" - preSteps: [] - binlogPath: artifacts/log/Debug/Build.binlog - condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') - dependsOn: '' - pool: '' - jobs: -- job: SourceIndexStage1 - dependsOn: ${{ parameters.dependsOn }} - condition: ${{ parameters.condition }} - variables: - - name: SourceIndexUploadPackageVersion - value: ${{ parameters.sourceIndexUploadPackageVersion }} - - name: SourceIndexProcessBinlogPackageVersion - value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - - name: SourceIndexPackageSource - value: ${{ parameters.sourceIndexPackageSource }} - - name: BinlogPath - value: ${{ parameters.binlogPath }} - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $(DncEngPublicBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64.open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $(DncEngInternalBuildPool) - image: windows.vs2022.amd64 - os: windows - - steps: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - task: UseDotNet@2 - displayName: Use .NET 8 SDK - inputs: - packageType: sdk - version: 8.0.x - installationPath: $(Agent.TempDirectory)/dotnet - workingDirectory: $(Agent.TempDirectory) - - - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - displayName: Download Tools - # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. - workingDirectory: $(Agent.TempDirectory) - - - script: ${{ parameters.sourceIndexBuildCommand }} - displayName: Build Repository - - - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output - displayName: Process Binlog into indexable sln - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: AzureCLI@2 - displayName: Get stage 1 auth token - inputs: - azureSubscription: 'SourceDotNet Stage1 Publish' - addSpnToEnvironment: true - scriptType: 'ps' - scriptLocation: 'inlineScript' - inlineScript: | - echo "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$env:servicePrincipalId" - echo "##vso[task.setvariable variable=ARM_ID_TOKEN;issecret=true]$env:idToken" - echo "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$env:tenantId" - - - script: | - az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) - displayName: "Login to Azure" +- template: /eng/common/core-templates/job/source-index-stage1.yml + parameters: + is1ESPipeline: true - - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/jobs/codeql-build.yml b/eng/common/templates-official/jobs/codeql-build.yml index f6476912a861..a726322ecfe0 100644 --- a/eng/common/templates-official/jobs/codeql-build.yml +++ b/eng/common/templates-official/jobs/codeql-build.yml @@ -1,31 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - # Optional: if specified, restore and use this version of Guardian instead of the default. - overrideGuardianVersion: '' - jobs: -- template: /eng/common/templates-official/jobs/jobs.yml +- template: /eng/common/core-templates/jobs/codeql-build.yml parameters: - enableMicrobuild: false - enablePublishBuildArtifacts: false - enablePublishTestResults: false - enablePublishBuildAssets: false - enablePublishUsingPipelines: false - enableTelemetry: true + is1ESPipeline: true - variables: - - group: Publish-Build-Assets - # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in - # sync with the packages.config file. - - name: DefaultGuardianVersion - value: 0.109.0 - - name: GuardianPackagesConfigFile - value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config - - name: GuardianVersion - value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} - - jobs: ${{ parameters.jobs }} - + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/jobs/jobs.yml b/eng/common/templates-official/jobs/jobs.yml index 03aa64e1741f..007deddaea0f 100644 --- a/eng/common/templates-official/jobs/jobs.yml +++ b/eng/common/templates-official/jobs/jobs.yml @@ -1,101 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: Enable publishing using release pipelines - enablePublishUsingPipelines: false - - # Optional: Enable running the source-build jobs to build repo from source - enableSourceBuild: false - - # Optional: Parameters for source-build template. - # See /eng/common/templates-official/jobs/source-build.yml for options - sourceBuildParameters: [] - - graphFileGeneration: - # Optional: Enable generating the graph files at the end of the build - enabled: false - # Optional: Include toolset dependencies in the generated graph files - includeToolset: false - - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - - # Optional: Override automatically derived dependsOn value for "publish build assets" job - publishBuildAssetsDependsOn: '' - - # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. - publishAssetsImmediately: false - - # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) - artifactsPublishingAdditionalParameters: '' - signingValidationAdditionalParameters: '' - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - enableSourceIndex: false - sourceIndexParams: {} - repositoryAlias: self - officialBuildId: '' - -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - jobs: -- ${{ each job in parameters.jobs }}: - - template: ../job/job.yml - parameters: - # pass along parameters - ${{ each parameter in parameters }}: - ${{ if ne(parameter.key, 'jobs') }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # pass along job properties - ${{ each property in job }}: - ${{ if ne(property.key, 'job') }}: - ${{ property.key }}: ${{ property.value }} - - name: ${{ job.job }} - -- ${{ if eq(parameters.enableSourceBuild, true) }}: - - template: /eng/common/templates-official/jobs/source-build.yml - parameters: - allCompletedJobId: Source_Build_Complete - ${{ each parameter in parameters.sourceBuildParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if eq(parameters.enableSourceIndex, 'true') }}: - - template: ../job/source-index-stage1.yml - parameters: - runAsPublic: ${{ parameters.runAsPublic }} - ${{ each parameter in parameters.sourceIndexParams }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: - - template: ../job/publish-build-assets.yml - parameters: - continueOnError: ${{ parameters.continueOnError }} - dependsOn: - - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.publishBuildAssetsDependsOn }}: - - ${{ job.job }} - - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.jobs }}: - - ${{ job.job }} - - ${{ if eq(parameters.enableSourceBuild, true) }}: - - Source_Build_Complete +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: true - runAsPublic: ${{ parameters.runAsPublic }} - publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} - publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} - enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} - signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} - repositoryAlias: ${{ parameters.repositoryAlias }} - officialBuildId: ${{ parameters.officialBuildId }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/jobs/source-build.yml b/eng/common/templates-official/jobs/source-build.yml index 21a346fbd6c7..483e7b611f34 100644 --- a/eng/common/templates-official/jobs/source-build.yml +++ b/eng/common/templates-official/jobs/source-build.yml @@ -1,59 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. A job is created for each platform, as - # well as an optional server job that completes when all platform jobs complete. - - # The name of the "join" job for all source-build platforms. If set to empty string, the job is - # not included. Existing repo pipelines can use this job depend on all source-build jobs - # completing without maintaining a separate list of every single job ID: just depend on this one - # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. - allCompletedJobId: '' - - # See /eng/common/templates-official/job/source-build.yml - jobNamePrefix: 'Source_Build' - - # This is the default platform provided by Arcade, intended for use by a managed-only repo. - defaultManagedPlatform: - name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-9-amd64' - - # Defines the platforms on which to run build jobs. One job is created for each platform, and the - # object in this array is sent to the job template as 'platform'. If no platforms are specified, - # one job runs on 'defaultManagedPlatform'. - platforms: [] - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal nuget and blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: +- template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: true -- ${{ if ne(parameters.allCompletedJobId, '') }}: - - job: ${{ parameters.allCompletedJobId }} - displayName: Source-Build Complete - pool: server - dependsOn: - - ${{ each platform in parameters.platforms }}: - - ${{ parameters.jobNamePrefix }}_${{ platform.name }} - - ${{ if eq(length(parameters.platforms), 0) }}: - - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} - -- ${{ each platform in parameters.platforms }}: - - template: /eng/common/templates-official/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} - -- ${{ if eq(length(parameters.platforms), 0) }}: - - template: /eng/common/templates-official/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ parameters.defaultManagedPlatform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/post-build/common-variables.yml b/eng/common/templates-official/post-build/common-variables.yml index 173914f2364a..c32fc49233f8 100644 --- a/eng/common/templates-official/post-build/common-variables.yml +++ b/eng/common/templates-official/post-build/common-variables.yml @@ -1,22 +1,8 @@ variables: - - group: Publish-Build-Assets +- template: /eng/common/core-templates/post-build/common-variables.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true - # Whether the build is internal or not - - name: IsInternalBuild - value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} - - # Default Maestro++ API Endpoint and API Version - - name: MaestroApiEndPoint - value: "https://maestro.dot.net" - - name: MaestroApiAccessToken - value: $(MaestroAccessToken) - - name: MaestroApiVersion - value: "2020-02-20" - - - name: SourceLinkCLIVersion - value: 3.0.0 - - name: SymbolToolVersion - value: 1.0.1 - - - name: runCodesignValidationInjection - value: false + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml index 07837055ee30..2364c0fd4a52 100644 --- a/eng/common/templates-official/post-build/post-build.yml +++ b/eng/common/templates-official/post-build/post-build.yml @@ -1,291 +1,8 @@ -parameters: - # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. - # Publishing V1 is no longer supported - # Publishing V2 is no longer supported - # Publishing V3 is the default - - name: publishingInfraVersion - displayName: Which version of publishing should be used to promote the build definition? - type: number - default: 3 - values: - - 3 - - - name: BARBuildId - displayName: BAR Build Id - type: number - default: 0 - - - name: PromoteToChannelIds - displayName: Channel to promote BARBuildId to - type: string - default: '' - - - name: enableSourceLinkValidation - displayName: Enable SourceLink validation - type: boolean - default: false - - - name: enableSigningValidation - displayName: Enable signing validation - type: boolean - default: true - - - name: enableSymbolValidation - displayName: Enable symbol validation - type: boolean - default: false - - - name: enableNugetValidation - displayName: Enable NuGet validation - type: boolean - default: true - - - name: publishInstallersAndChecksums - displayName: Publish installers and checksums - type: boolean - default: true - - - name: SDLValidationParameters - type: object - default: - enable: false - publishGdn: false - continueOnError: false - params: '' - artifactNames: '' - downloadArtifacts: true - - # These parameters let the user customize the call to sdk-task.ps1 for publishing - # symbols & general artifacts as well as for signing validation - - name: symbolPublishingAdditionalParameters - displayName: Symbol publishing additional parameters - type: string - default: '' - - - name: artifactsPublishingAdditionalParameters - displayName: Artifact publishing additional parameters - type: string - default: '' - - - name: signingValidationAdditionalParameters - displayName: Signing validation additional parameters - type: string - default: '' - - # Which stages should finish execution before post-build stages start - - name: validateDependsOn - type: object - default: - - build - - - name: publishDependsOn - type: object - default: - - Validate - - # Optional: Call asset publishing rather than running in a separate stage - - name: publishAssetsImmediately - type: boolean - default: false - stages: -- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - - stage: Validate - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Validate Build Assets - variables: - - template: common-variables.yml - - template: /eng/common/templates-official/variables/pool-providers.yml - jobs: - - job: - displayName: NuGet Validation - condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - - - job: - displayName: Signing Validation - condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - itemPattern: | - ** - !**/Microsoft.SourceBuild.Intermediate.*.nupkg - - # This is necessary whenever we want to publish/restore to an AzDO private feed - # Since sdk-task.ps1 tries to restore packages we need to do this authentication here - # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@1 - displayName: 'Authenticate to AzDO Feeds' - - # Signing validation will optionally work with the buildmanifest file which is downloaded from - # Azure DevOps above. - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore -msbuildEngine vs - /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' - /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' - ${{ parameters.signingValidationAdditionalParameters }} - - - template: ../steps/publish-logs.yml - parameters: - StageLabel: 'Validation' - JobLabel: 'Signing' - BinlogToolVersion: $(BinlogToolVersion) - - - job: - displayName: SourceLink Validation - condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) - -GHCommit $(Build.SourceVersion) - -SourcelinkCliVersion $(SourceLinkCLIVersion) - continueOnError: true - -- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - - stage: publish_using_darc - ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - dependsOn: ${{ parameters.publishDependsOn }} - ${{ else }}: - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Publish using Darc - variables: - - template: common-variables.yml - - template: /eng/common/templates-official/variables/pool-providers.yml - jobs: - - job: - displayName: Publish Using Darc - timeoutInMinutes: 120 - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - name: NetCore1ESPool-Publishing-Internal - image: windows.vs2019.amd64 - os: windows - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: NuGetAuthenticate@1 - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x +- template: /eng/common/core-templates/post-build/post-build.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/post-build/setup-maestro-vars.yml b/eng/common/templates-official/post-build/setup-maestro-vars.yml index 3a56abf8922e..024397d87864 100644 --- a/eng/common/templates-official/post-build/setup-maestro-vars.yml +++ b/eng/common/templates-official/post-build/setup-maestro-vars.yml @@ -1,70 +1,8 @@ -parameters: - BARBuildId: '' - PromoteToChannelIds: '' - steps: - - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Release Configs - inputs: - buildType: current - artifactName: ReleaseConfigs - checkDownloadedFiles: true - - - task: PowerShell@2 - name: setReleaseVars - displayName: Set Release Configs Vars - inputs: - targetType: inline - pwsh: true - script: | - try { - if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { - $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt - - $BarId = $Content | Select -Index 0 - $Channels = $Content | Select -Index 1 - $IsStableBuild = $Content | Select -Index 2 - - $AzureDevOpsProject = $Env:System_TeamProject - $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId - $AzureDevOpsBuildId = $Env:Build_BuildId - } - else { - $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}" - - $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]' - $apiHeaders.Add('Accept', 'application/json') - $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}") - - $buildInfo = try { Invoke-WebRequest -UseBasicParsing -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } - - $BarId = $Env:BARBuildId - $Channels = $Env:PromoteToMaestroChannels -split "," - $Channels = $Channels -join "][" - $Channels = "[$Channels]" - - $IsStableBuild = $buildInfo.stable - $AzureDevOpsProject = $buildInfo.azureDevOpsProject - $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId - $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId - } - - Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" - Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" - Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" +- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true - Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" - Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" - Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" - } - catch { - Write-Host $_ - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - exit 1 - } - env: - MAESTRO_API_TOKEN: $(MaestroApiAccessToken) - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml index cbba0596709d..30bb3985ca2b 100644 --- a/eng/common/templates-official/steps/component-governance.yml +++ b/eng/common/templates-official/steps/component-governance.yml @@ -1,13 +1,7 @@ -parameters: - disableComponentGovernance: false - componentGovernanceIgnoreDirectories: '' - steps: -- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable -- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - - task: ComponentGovernanceComponentDetection@0 - continueOnError: true - inputs: - ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} \ No newline at end of file +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/enable-internal-runtimes.yml b/eng/common/templates-official/steps/enable-internal-runtimes.yml index 93a8394a666b..f9dd238c6cd5 100644 --- a/eng/common/templates-official/steps/enable-internal-runtimes.yml +++ b/eng/common/templates-official/steps/enable-internal-runtimes.yml @@ -1,28 +1,9 @@ # Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' # variable with the base64-encoded SAS token, by default - -parameters: -- name: federatedServiceConnection - type: string - default: 'dotnetbuilds-internal-read' -- name: outputVariableName - type: string - default: 'dotnetbuilds-internal-container-read-token-base64' -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: true - steps: -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - template: /eng/common/templates-official/steps/get-delegation-sas.yml - parameters: - federatedServiceConnection: ${{ parameters.federatedServiceConnection }} - outputVariableName: ${{ parameters.outputVariableName }} - expiryInHours: ${{ parameters.expiryInHours }} - base64Encode: ${{ parameters.base64Encode }} - storageAccount: dotnetbuilds - container: internal - permissions: rl +- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/enable-internal-sources.yml b/eng/common/templates-official/steps/enable-internal-sources.yml new file mode 100644 index 000000000000..e6d57182284d --- /dev/null +++ b/eng/common/templates-official/steps/enable-internal-sources.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/generate-sbom.yml b/eng/common/templates-official/steps/generate-sbom.yml index 1536353566c7..9a89a4706d94 100644 --- a/eng/common/templates-official/steps/generate-sbom.yml +++ b/eng/common/templates-official/steps/generate-sbom.yml @@ -1,48 +1,7 @@ -# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. -# PackageName - The name of the package this SBOM represents. -# PackageVersion - The version of the package this SBOM represents. -# ManifestDirPath - The path of the directory where the generated manifest files will be placed -# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. - -parameters: - PackageVersion: 8.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - PackageName: '.NET' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom - IgnoreDirectories: '' - sbomContinueOnError: true - steps: -- task: PowerShell@2 - displayName: Prep for SBOM generation in (Non-linux) - condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) - inputs: - filePath: ./eng/common/generate-sbom-prep.ps1 - arguments: ${{parameters.manifestDirPath}} - -# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 -- script: | - chmod +x ./eng/common/generate-sbom-prep.sh - ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} - displayName: Prep for SBOM generation in (Linux) - condition: eq(variables['Agent.Os'], 'Linux') - continueOnError: ${{ parameters.sbomContinueOnError }} - -- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: 'Generate SBOM manifest' - continueOnError: ${{ parameters.sbomContinueOnError }} - inputs: - PackageName: ${{ parameters.packageName }} - BuildDropPath: ${{ parameters.buildDropPath }} - PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) - ${{ if ne(parameters.IgnoreDirectories, '') }}: - AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' - -- task: 1ES.PublishPipelineArtifact@1 - displayName: Publish SBOM manifest - continueOnError: ${{parameters.sbomContinueOnError}} - inputs: - targetPath: '${{parameters.manifestDirPath}}' - artifactName: $(ARTIFACT_NAME) +- template: /eng/common/core-templates/steps/generate-sbom.yml + parameters: + is1ESPipeline: true + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/get-delegation-sas.yml b/eng/common/templates-official/steps/get-delegation-sas.yml index c690cc0a070c..c5a9c1f8275c 100644 --- a/eng/common/templates-official/steps/get-delegation-sas.yml +++ b/eng/common/templates-official/steps/get-delegation-sas.yml @@ -1,52 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: false -- name: storageAccount - type: string -- name: container - type: string -- name: permissions - type: string - default: 'rl' - steps: -- task: AzureCLI@2 - displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - # Calculate the expiration of the SAS token and convert to UTC - $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - - # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads - # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 - $sas = "" - do { - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - } while($sas.IndexOf('/') -ne -1) - - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - - if ('${{ parameters.base64Encode }}' -eq 'true') { - $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) - } +- template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + is1ESPipeline: true - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/get-federated-access-token.yml b/eng/common/templates-official/steps/get-federated-access-token.yml index 55e33bd38f71..c8dcf6b81392 100644 --- a/eng/common/templates-official/steps/get-federated-access-token.yml +++ b/eng/common/templates-official/steps/get-federated-access-token.yml @@ -1,40 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: stepName - type: string - default: 'getFederatedAccessToken' -- name: condition - type: string - default: '' -# Resource to get a token for. Common values include: -# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps -# - 'https://storage.azure.com/' for storage -# Defaults to Azure DevOps -- name: resource - type: string - default: '499b84ac-1321-427f-aa17-267ca6975798' -- name: isStepOutputVariable - type: boolean - default: false - steps: -- task: AzureCLI@2 - displayName: 'Getting federated access token for feeds' - name: ${{ parameters.stepName }} - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" - exit 1 - } - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file +- template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/publish-build-artifacts.yml b/eng/common/templates-official/steps/publish-build-artifacts.yml new file mode 100644 index 000000000000..100a3fc98493 --- /dev/null +++ b/eng/common/templates-official/steps/publish-build-artifacts.yml @@ -0,0 +1,41 @@ +parameters: +- name: displayName + type: string + default: 'Publish to Build Artifact' + +- name: condition + type: string + default: succeeded() + +- name: artifactName + type: string + +- name: pathToPublish + type: string + +- name: continueOnError + type: boolean + default: false + +- name: publishLocation + type: string + default: 'Container' + +- name: is1ESPipeline + type: boolean + default: true + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates-official cannot be referenced from a non-1ES managed template': error +- task: 1ES.PublishBuildArtifacts@1 + displayName: ${{ parameters.displayName }} + condition: ${{ parameters.condition }} + ${{ if parameters.continueOnError }}: + continueOnError: ${{ parameters.continueOnError }} + inputs: + PublishLocation: ${{ parameters.publishLocation }} + PathtoPublish: ${{ parameters.pathToPublish }} + ${{ if parameters.artifactName }}: + ArtifactName: ${{ parameters.artifactName }} + diff --git a/eng/common/templates-official/steps/publish-logs.yml b/eng/common/templates-official/steps/publish-logs.yml index af5a40b64c4b..579fd531e94c 100644 --- a/eng/common/templates-official/steps/publish-logs.yml +++ b/eng/common/templates-official/steps/publish-logs.yml @@ -1,23 +1,7 @@ -parameters: - StageLabel: '' - JobLabel: '' - steps: -- task: Powershell@2 - displayName: Prepare Binlogs to Upload - inputs: - targetType: inline - script: | - New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - continueOnError: true - condition: always() +- template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: true -- task: 1ES.PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/PostBuildLogs' - PublishLocation: Container - ArtifactName: PostBuildLogs - continueOnError: true - condition: always() + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml new file mode 100644 index 000000000000..172f9f0fdc97 --- /dev/null +++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,28 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: true + +- name: args + type: object + default: {} + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates-official cannot be referenced from a non-1ES managed template': error +- task: 1ES.PublishPipelineArtifact@1 + displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} + ${{ if parameters.args.condition }}: + condition: ${{ parameters.args.condition }} + ${{ else }}: + condition: succeeded() + ${{ if parameters.args.continueOnError }}: + continueOnError: ${{ parameters.args.continueOnError }} + inputs: + targetPath: ${{ parameters.args.targetPath }} + ${{ if parameters.args.artifactName }}: + artifactName: ${{ parameters.args.artifactName }} + ${{ if parameters.args.properties }}: + properties: ${{ parameters.args.properties }} + ${{ if parameters.args.sbomEnabled }}: + sbomEnabled: ${{ parameters.args.sbomEnabled }} diff --git a/eng/common/templates-official/steps/retain-build.yml b/eng/common/templates-official/steps/retain-build.yml index 83d97a26a01f..5594551508a3 100644 --- a/eng/common/templates-official/steps/retain-build.yml +++ b/eng/common/templates-official/steps/retain-build.yml @@ -1,28 +1,7 @@ -parameters: - # Optional azure devops PAT with build execute permissions for the build's organization, - # only needed if the build that should be retained ran on a different organization than - # the pipeline where this template is executing from - Token: '' - # Optional BuildId to retain, defaults to the current running build - BuildId: '' - # Azure devops Organization URI for the build in the https://dev.azure.com/ format. - # Defaults to the organization the current pipeline is running on - AzdoOrgUri: '$(System.CollectionUri)' - # Azure devops project for the build. Defaults to the project the current pipeline is running on - AzdoProject: '$(System.TeamProject)' - steps: - - task: powershell@2 - inputs: - targetType: 'filePath' - filePath: eng/common/retain-build.ps1 - pwsh: true - arguments: > - -AzdoOrgUri: ${{parameters.AzdoOrgUri}} - -AzdoProject ${{parameters.AzdoProject}} - -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} - -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} - displayName: Enable permanent build retention - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - BUILD_ID: $(Build.BuildId) \ No newline at end of file +- template: /eng/common/core-templates/steps/retain-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/send-to-helix.yml b/eng/common/templates-official/steps/send-to-helix.yml index 22f2501307d4..6500f21bf845 100644 --- a/eng/common/templates-official/steps/send-to-helix.yml +++ b/eng/common/templates-official/steps/send-to-helix.yml @@ -1,92 +1,7 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixConfiguration: '' # optional -- additional property attached to a job - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - HelixProjectArguments: '' # optional -- arguments passed to the build command for helixpublish.proj - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} +- template: /eng/common/core-templates/steps/send-to-helix.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates-official/steps/source-build.yml b/eng/common/templates-official/steps/source-build.yml index c307825c9122..8f92c49e7b06 100644 --- a/eng/common/templates-official/steps/source-build.yml +++ b/eng/common/templates-official/steps/source-build.yml @@ -1,135 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. - - # This is a 'steps' template, and is intended for advanced scenarios where the existing build - # infra has a careful build methodology that must be followed. For example, a repo - # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline - # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to - # GitHub. Using this steps template leaves room for that infra to be included. - - # Defines the platform on which to run the steps. See 'eng/common/templates-official/job/source-build.yml' - # for details. The entire object is described in the 'job' template for simplicity, even though - # the usage of the properties on this object is split between the 'job' and 'steps' templates. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - steps: -# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) -- script: | - set -x - df -h - - # If building on the internal project, the artifact feeds variable may be available (usually only if needed) - # In that case, call the feed setup script to add internal feeds corresponding to public ones. - # In addition, add an msbuild argument to copy the WIP from the repo to the target build location. - # This is because SetupNuGetSources.sh will alter the current NuGet.config file, and we need to preserve those - # changes. - internalRestoreArgs= - if [ '$(dn-bot-dnceng-artifact-feeds-rw)' != '$''(dn-bot-dnceng-artifact-feeds-rw)' ]; then - # Temporarily work around https://github.com/dotnet/arcade/issues/7709 - chmod +x $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh - $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh $(System.DefaultWorkingDirectory)/NuGet.config $(dn-bot-dnceng-artifact-feeds-rw) - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - - # If building on the internal project, the internal storage variable may be available (usually only if needed) - # In that case, add variables to allow the download of internal runtimes if the specified versions are not found - # in the default public locations. - internalRuntimeDownloadArgs= - if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' - fi - - buildConfig=Release - # Check if AzDO substitutes in a build config from a variable, and use it if so. - if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then - buildConfig='$(_BuildConfig)' - fi - - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - - targetRidArgs= - if [ '${{ parameters.platform.targetRID }}' != '' ]; then - targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' - fi - - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml - fi - - ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ - --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ - $officialBuildArgs \ - $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ - $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ - /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ - /p:ArcadeBuildFromSource=true \ - /p:AssetManifestFileName=$assetManifestFileName - displayName: Build - -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(System.DefaultWorkingDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/source-build/self/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - -- task: 1ES.PublishPipelineArtifact@1 - displayName: Publish BuildLogs - inputs: - targetPath: '$(Build.StagingDirectory)/BuildLogs' - artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) - continueOnError: true - condition: succeededOrFailed() +- template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: true -# Manually inject component detection so that we can ignore the source build upstream cache, which contains -# a nupkg cache of input packages (a local feed). -# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' -# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets -- task: ComponentGovernanceComponentDetection@0 - displayName: Component Detection (Exclude upstream cache) - inputs: - ${{ if eq(length(parameters.cgIgnoreDirectories), 0) }}: - ignoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/source-build/self/src/artifacts/obj/source-built-upstream-cache' - ${{ else }}: - ignoreDirectories: ${{ join(',', parameters.cgIgnoreDirectories) }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 80454d5a5587..5bdd3dd85fd2 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -1,263 +1,82 @@ -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - -parameters: -# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - cancelTimeoutInMinutes: '' - condition: '' - container: '' - continueOnError: false - dependsOn: '' - displayName: '' - pool: '' - steps: [] - strategy: '' - timeoutInMinutes: '' - variables: [] - workspace: '' - templateContext: '' - -# Job base template specific parameters - # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md - artifacts: '' - enableMicrobuild: false +parameters: enablePublishBuildArtifacts: false - enablePublishBuildAssets: false - enablePublishTestResults: false - enablePublishUsingPipelines: false - enableBuildRetry: false disableComponentGovernance: '' componentGovernanceIgnoreDirectories: '' - mergeTestResults: false - testRunTitle: '' - testResultsFormat: '' - name: '' - preSteps: [] - runAsPublic: false # Sbom related params enableSbom: true - PackageVersion: 7.0.0 + runAsPublic: false + PackageVersion: 9.0.0 BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' jobs: -- job: ${{ parameters.name }} - - ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: - cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} - - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - - ${{ if ne(parameters.container, '') }}: - container: ${{ parameters.container }} - - ${{ if ne(parameters.continueOnError, '') }}: - continueOnError: ${{ parameters.continueOnError }} - - ${{ if ne(parameters.dependsOn, '') }}: - dependsOn: ${{ parameters.dependsOn }} - - ${{ if ne(parameters.displayName, '') }}: - displayName: ${{ parameters.displayName }} - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - - ${{ if ne(parameters.strategy, '') }}: - strategy: ${{ parameters.strategy }} - - ${{ if ne(parameters.timeoutInMinutes, '') }}: - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - ${{ if ne(parameters.templateContext, '') }}: - templateContext: ${{ parameters.templateContext }} - - variables: - - ${{ if ne(parameters.enableTelemetry, 'false') }}: - - name: DOTNET_CLI_TELEMETRY_PROFILE - value: '$(Build.Repository.Uri)' - - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: - - name: EnableRichCodeNavigation - value: 'true' - # Retry signature validation up to three times, waiting 2 seconds between attempts. - # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures - - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY - value: 3,2000 - - ${{ each variable in parameters.variables }}: - # handle name-value variable syntax - # example: - # - name: [key] - # value: [value] - - ${{ if ne(variable.name, '') }}: - - name: ${{ variable.name }} - value: ${{ variable.value }} - - # handle variable groups - - ${{ if ne(variable.group, '') }}: - - group: ${{ variable.group }} +- template: /eng/common/core-templates/job/job.yml + parameters: + is1ESPipeline: false - # handle template variable syntax - # example: - # - template: path/to/template.yml - # parameters: - # [key]: [value] - - ${{ if ne(variable.template, '') }}: - - template: ${{ variable.template }} - ${{ if ne(variable.parameters, '') }}: - parameters: ${{ variable.parameters }} + ${{ each parameter in parameters }}: + ${{ if and(ne(parameter.key, 'steps'), ne(parameter.key, 'is1ESPipeline')) }}: + ${{ parameter.key }}: ${{ parameter.value }} - # handle key-value variable syntax. - # example: - # - [key]: [value] - - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: - - ${{ each pair in variable }}: - - name: ${{ pair.key }} - value: ${{ pair.value }} + steps: + - ${{ each step in parameters.steps }}: + - ${{ step }} - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds - - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: DotNet-HelixApi-Access - - ${{ if ne(parameters.workspace, '') }}: - workspace: ${{ parameters.workspace }} - - steps: - - ${{ if ne(parameters.preSteps, '') }}: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea + componentGovernanceSteps: + - template: /eng/common/templates/steps/component-governance.yml + parameters: + ${{ if eq(parameters.disableComponentGovernance, '') }}: + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: + disableComponentGovernance: false ${{ else }}: - ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca - env: - TeamName: $(_TeamName) - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - - - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - - task: NuGetAuthenticate@1 - - - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: - - task: DownloadPipelineArtifact@2 - inputs: - buildType: current - artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} - targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} - itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} - - - ${{ each step in parameters.steps }}: - - ${{ step }} - - - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: - - task: RichCodeNavIndexer@0 - displayName: RichCodeNav Upload - inputs: - languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} - environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }} - richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin - uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} - continueOnError: true - - - template: /eng/common/templates/steps/component-governance.yml - parameters: - ${{ if eq(parameters.disableComponentGovernance, '') }}: - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: - disableComponentGovernance: false + disableComponentGovernance: true ${{ else }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - env: - TeamName: $(_TeamName) - - - ${{ if ne(parameters.artifacts.publish, '') }}: - - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - task: CopyFiles@2 - displayName: Gather binaries for publish to artifacts - inputs: - SourceFolder: 'artifacts/bin' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' - - task: CopyFiles@2 - displayName: Gather packages for publish to artifacts - inputs: - SourceFolder: 'artifacts/packages' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' - - task: PublishBuildArtifacts@1 - displayName: Publish pipeline artifacts - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - continueOnError: true - condition: always() - - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - - publish: artifacts/log - artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} - displayName: Publish logs - continueOnError: true - condition: always() - - - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} - continueOnError: true - condition: always() - - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: - - task: PublishTestResults@2 - displayName: Publish XUnit Test Results - inputs: - testResultsFormat: 'xUnit' - testResultsFiles: '*.xml' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: - - task: PublishTestResults@2 - displayName: Publish TRX Test Results - inputs: - testResultsFormat: 'VSTest' - testResultsFiles: '*.trx' - searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)' - testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx - mergeTestResults: ${{ parameters.mergeTestResults }} - continueOnError: true - condition: always() - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: - - template: /eng/common/templates/steps/generate-sbom.yml - parameters: - PackageVersion: ${{ parameters.packageVersion}} - BuildDropPath: ${{ parameters.buildDropPath }} - IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} - - - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - - publish: $(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration - artifact: BuildConfiguration - displayName: Publish build retry configuration - continueOnError: true + disableComponentGovernance: ${{ parameters.disableComponentGovernance }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + + artifactPublishSteps: + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish pipeline artifacts + pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + publishLocation: Container + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + continueOnError: true + condition: always() + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts/log' + artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} + displayName: 'Publish logs' + continueOnError: true + condition: always() + sbomEnabled: false # we don't need SBOM for logs + + - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish Logs + pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' + publishLocation: Container + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + continueOnError: true + condition: always() + + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + targetPath: '$(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration' + artifactName: 'BuildConfiguration' + displayName: 'Publish build retry configuration' + continueOnError: true + sbomEnabled: false # we don't need SBOM for BuildConfiguration diff --git a/eng/common/templates/job/onelocbuild.yml b/eng/common/templates/job/onelocbuild.yml index 2cd3840c9927..ff829dc4c700 100644 --- a/eng/common/templates/job/onelocbuild.yml +++ b/eng/common/templates/job/onelocbuild.yml @@ -1,109 +1,7 @@ -parameters: - # Optional: dependencies of the job - dependsOn: '' - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: '' - - CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex - GithubPat: $(BotAccount-dotnet-bot-repo-PAT) - - SourcesDirectory: $(System.DefaultWorkingDirectory) - CreatePr: true - AutoCompletePr: false - ReusePr: true - UseLfLineEndings: true - UseCheckedInLocProjectJson: false - SkipLocProjectJsonGeneration: false - LanguageSet: VS_Main_Languages - LclSource: lclFilesInRepo - LclPackageId: '' - RepoType: gitHub - GitHubOrg: dotnet - MirrorRepo: '' - MirrorBranch: main - condition: '' - JobNameSuffix: '' - jobs: -- job: OneLocBuild${{ parameters.JobNameSuffix }} - - dependsOn: ${{ parameters.dependsOn }} - - displayName: OneLocBuild${{ parameters.JobNameSuffix }} - - variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - - name: _GenerateLocProjectArguments - value: -SourcesDirectory ${{ parameters.SourcesDirectory }} - -LanguageSet "${{ parameters.LanguageSet }}" - -CreateNeutralXlfs - - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: - - name: _GenerateLocProjectArguments - value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: - - task: Powershell@2 - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1 - arguments: $(_GenerateLocProjectArguments) - displayName: Generate LocProject.json - condition: ${{ parameters.condition }} - - - task: OneLocBuild@2 - displayName: OneLocBuild - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - inputs: - locProj: eng/Localize/LocProject.json - outDir: $(Build.ArtifactStagingDirectory) - lclSource: ${{ parameters.LclSource }} - lclPackageId: ${{ parameters.LclPackageId }} - isCreatePrSelected: ${{ parameters.CreatePr }} - isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} - ${{ if eq(parameters.CreatePr, true) }}: - isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - isShouldReusePrSelected: ${{ parameters.ReusePr }} - packageSourceAuth: patAuth - patVariable: ${{ parameters.CeapexPat }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - repoType: ${{ parameters.RepoType }} - gitHubPatVariable: "${{ parameters.GithubPat }}" - ${{ if ne(parameters.MirrorRepo, '') }}: - isMirrorRepoSelected: true - gitHubOrganization: ${{ parameters.GitHubOrg }} - mirrorRepo: ${{ parameters.MirrorRepo }} - mirrorBranch: ${{ parameters.MirrorBranch }} - condition: ${{ parameters.condition }} - - - task: PublishBuildArtifacts@1 - displayName: Publish Localization Files - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} +- template: /eng/common/core-templates/job/onelocbuild.yml + parameters: + is1ESPipeline: false - - task: PublishBuildArtifacts@1 - displayName: Publish LocProject.json - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' - PublishLocation: Container - ArtifactName: Loc - condition: ${{ parameters.condition }} \ No newline at end of file + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index b4ece772c326..ab2edec2adb5 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -1,173 +1,7 @@ -parameters: - configuration: 'Debug' - - # Optional: condition for the job to run - condition: '' - - # Optional: 'true' if future jobs should run even if this job fails - continueOnError: false - - # Optional: dependencies of the job - dependsOn: '' - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: {} - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishUsingPipelines: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishAssetsImmediately: false - - artifactsPublishingAdditionalParameters: '' - - signingValidationAdditionalParameters: '' - - repositoryAlias: self - - officialBuildId: '' - jobs: -- job: Asset_Registry_Publish - - dependsOn: ${{ parameters.dependsOn }} - timeoutInMinutes: 150 - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - displayName: Publish Assets - ${{ else }}: - displayName: Publish to Build Asset Registry - - variables: - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: Publish-Build-Assets - - group: AzureDevOps-Artifact-Feeds-Pats - - name: runCodesignValidationInjection - value: false - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates/post-build/common-variables.yml - - name: OfficialBuildId - ${{ if ne(parameters.officialBuildId, '') }}: - value: ${{ parameters.officialBuildId }} - ${{ else }}: - value: $(Build.BuildNumber) - - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: NetCore1ESPool-Publishing-Internal - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - checkout: ${{ parameters.repositoryAlias }} - fetchDepth: 3 - clean: true - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - checkDownloadedFiles: true - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: NuGetAuthenticate@1 - - - task: AzureCLI@2 - displayName: Publish Build Assets - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 - arguments: > - -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:MaestroApiEndpoint=https://maestro.dot.net - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} - /p:OfficialBuildId=$(OfficialBuildId) - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: powershell@2 - displayName: Create ReleaseConfigs Artifact - inputs: - targetType: inline - script: | - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId) - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)" - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild) - - - task: PublishBuildArtifacts@1 - displayName: Publish ReleaseConfigs Artifact - inputs: - PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - task: powershell@2 - displayName: Check if SymbolPublishingExclusionsFile.txt exists - inputs: - targetType: inline - script: | - $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt" - if(Test-Path -Path $symbolExclusionfile) - { - Write-Host "SymbolExclusionFile exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]true" - } - else{ - Write-Host "Symbols Exclusion file does not exists" - Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]false" - } - - - task: PublishBuildArtifacts@1 - displayName: Publish SymbolPublishingExclusionsFile Artifact - condition: eq(variables['SymbolExclusionFile'], 'true') - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: - - template: /eng/common/templates/post-build/setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x - - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion 3 - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' +- template: /eng/common/core-templates/job/publish-build-assets.yml + parameters: + is1ESPipeline: false - - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - - template: /eng/common/templates/steps/publish-logs.yml - parameters: - JobLabel: 'Publish_Artifacts_Logs' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml index 97021335cfc4..e44d47b1d760 100644 --- a/eng/common/templates/job/source-build.yml +++ b/eng/common/templates/job/source-build.yml @@ -1,78 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. The template produces a server job with a - # default ID 'Source_Build_Complete' to put in a dependency list if necessary. - - # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. - jobNamePrefix: 'Source_Build' - - # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for - # managed-only repositories. This is an object with these properties: - # - # name: '' - # The name of the job. This is included in the job ID. - # targetRID: '' - # The name of the target RID to use, instead of the one auto-detected by Arcade. - # nonPortable: false - # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than - # linux-x64), and compiling against distro-provided packages rather than portable ones. - # skipPublishValidation: false - # Disables publishing validation. By default, a check is performed to ensure no packages are - # published by source-build. - # container: '' - # A container to use. Runs in docker. - # pool: {} - # A pool to use. Runs directly on an agent. - # buildScript: '' - # Specifies the build script to invoke to perform the build in the repo. The default - # './build.sh' should work for typical Arcade repositories, but this is customizable for - # difficult situations. - # jobProperties: {} - # A list of job properties to inject at the top level, for potential extensibility beyond - # container and pool. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: -- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} - displayName: Source-Build (${{ parameters.platform.name }}) - - ${{ each property in parameters.platform.jobProperties }}: - ${{ property.key }}: ${{ property.value }} - - ${{ if ne(parameters.platform.container, '') }}: - container: ${{ parameters.platform.container }} - - ${{ if eq(parameters.platform.pool, '') }}: - # The default VM host AzDO pool. This should be capable of running Docker containers: almost all - # source-build builds run in Docker, including the default managed platform. - # /eng/common/templates/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64 - - ${{ if ne(parameters.platform.pool, '') }}: - pool: ${{ parameters.platform.pool }} - - workspace: - clean: all +- template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: false - steps: - - ${{ if eq(parameters.enableInternalSources, true) }}: - - template: /eng/common/templates/steps/enable-internal-runtimes.yml - - template: /eng/common/templates/steps/source-build.yml - parameters: - platform: ${{ parameters.platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml index 81606fd9a541..89f3291593cb 100644 --- a/eng/common/templates/job/source-index-stage1.yml +++ b/eng/common/templates/job/source-index-stage1.yml @@ -1,82 +1,7 @@ -parameters: - runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20250425.2 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 - sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json - sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" - preSteps: [] - binlogPath: artifacts/log/Debug/Build.binlog - condition: '' - dependsOn: '' - pool: '' - jobs: -- job: SourceIndexStage1 - dependsOn: ${{ parameters.dependsOn }} - condition: ${{ parameters.condition }} - variables: - - name: SourceIndexUploadPackageVersion - value: ${{ parameters.sourceIndexUploadPackageVersion }} - - name: SourceIndexProcessBinlogPackageVersion - value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - - name: SourceIndexPackageSource - value: ${{ parameters.sourceIndexPackageSource }} - - name: BinlogPath - value: ${{ parameters.binlogPath }} - - template: /eng/common/templates/variables/pool-providers.yml - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: $(DncEngPublicBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64.open - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - task: UseDotNet@2 - displayName: Use .NET 8 SDK - inputs: - packageType: sdk - version: 8.0.x - installationPath: $(Agent.TempDirectory)/dotnet - workingDirectory: $(Agent.TempDirectory) - - - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - displayName: Download Tools - # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. - workingDirectory: $(Agent.TempDirectory) - - - script: ${{ parameters.sourceIndexBuildCommand }} - displayName: Build Repository - - - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output - displayName: Process Binlog into indexable sln - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: AzureCLI@2 - displayName: Get stage 1 auth token - inputs: - azureSubscription: 'SourceDotNet Stage1 Publish' - addSpnToEnvironment: true - scriptType: 'ps' - scriptLocation: 'inlineScript' - inlineScript: | - echo "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$env:servicePrincipalId" - echo "##vso[task.setvariable variable=ARM_ID_TOKEN;issecret=true]$env:idToken" - echo "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$env:tenantId" - - - script: | - az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) - displayName: "Login to Azure" +- template: /eng/common/core-templates/job/source-index-stage1.yml + parameters: + is1ESPipeline: false - - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/jobs/codeql-build.yml b/eng/common/templates/jobs/codeql-build.yml index e8b43e3b4cba..517f24d6a52c 100644 --- a/eng/common/templates/jobs/codeql-build.yml +++ b/eng/common/templates/jobs/codeql-build.yml @@ -1,31 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - # Optional: if specified, restore and use this version of Guardian instead of the default. - overrideGuardianVersion: '' - jobs: -- template: /eng/common/templates/jobs/jobs.yml +- template: /eng/common/core-templates/jobs/codeql-build.yml parameters: - enableMicrobuild: false - enablePublishBuildArtifacts: false - enablePublishTestResults: false - enablePublishBuildAssets: false - enablePublishUsingPipelines: false - enableTelemetry: true + is1ESPipeline: false - variables: - - group: Publish-Build-Assets - # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in - # sync with the packages.config file. - - name: DefaultGuardianVersion - value: 0.109.0 - - name: GuardianPackagesConfigFile - value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config - - name: GuardianVersion - value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} - - jobs: ${{ parameters.jobs }} - + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index 7eafc256758f..388e9037b3e6 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -1,101 +1,7 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: Enable publishing using release pipelines - enablePublishUsingPipelines: false - - # Optional: Enable running the source-build jobs to build repo from source - enableSourceBuild: false - - # Optional: Parameters for source-build template. - # See /eng/common/templates/jobs/source-build.yml for options - sourceBuildParameters: [] - - graphFileGeneration: - # Optional: Enable generating the graph files at the end of the build - enabled: false - # Optional: Include toolset dependencies in the generated graph files - includeToolset: false - - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - - # Optional: Override automatically derived dependsOn value for "publish build assets" job - publishBuildAssetsDependsOn: '' - - # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. - publishAssetsImmediately: false - - # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) - artifactsPublishingAdditionalParameters: '' - signingValidationAdditionalParameters: '' - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - enableSourceIndex: false - sourceIndexParams: {} - repositoryAlias: self - officialBuildId: '' - -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - jobs: -- ${{ each job in parameters.jobs }}: - - template: ../job/job.yml - parameters: - # pass along parameters - ${{ each parameter in parameters }}: - ${{ if ne(parameter.key, 'jobs') }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # pass along job properties - ${{ each property in job }}: - ${{ if ne(property.key, 'job') }}: - ${{ property.key }}: ${{ property.value }} - - name: ${{ job.job }} - -- ${{ if eq(parameters.enableSourceBuild, true) }}: - - template: /eng/common/templates/jobs/source-build.yml - parameters: - allCompletedJobId: Source_Build_Complete - ${{ each parameter in parameters.sourceBuildParameters }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if eq(parameters.enableSourceIndex, 'true') }}: - - template: ../job/source-index-stage1.yml - parameters: - runAsPublic: ${{ parameters.runAsPublic }} - ${{ each parameter in parameters.sourceIndexParams }}: - ${{ parameter.key }}: ${{ parameter.value }} - -- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: - - template: ../job/publish-build-assets.yml - parameters: - continueOnError: ${{ parameters.continueOnError }} - dependsOn: - - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.publishBuildAssetsDependsOn }}: - - ${{ job.job }} - - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.jobs }}: - - ${{ job.job }} - - ${{ if eq(parameters.enableSourceBuild, true) }}: - - Source_Build_Complete +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: false - runAsPublic: ${{ parameters.runAsPublic }} - publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} - publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} - enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} - signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} - repositoryAlias: ${{ parameters.repositoryAlias }} - officialBuildId: ${{ parameters.officialBuildId }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/jobs/source-build.yml b/eng/common/templates/jobs/source-build.yml index 4dde599add97..818d4c326dbb 100644 --- a/eng/common/templates/jobs/source-build.yml +++ b/eng/common/templates/jobs/source-build.yml @@ -1,59 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. A job is created for each platform, as - # well as an optional server job that completes when all platform jobs complete. - - # The name of the "join" job for all source-build platforms. If set to empty string, the job is - # not included. Existing repo pipelines can use this job depend on all source-build jobs - # completing without maintaining a separate list of every single job ID: just depend on this one - # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. - allCompletedJobId: '' - - # See /eng/common/templates/job/source-build.yml - jobNamePrefix: 'Source_Build' - - # This is the default platform provided by Arcade, intended for use by a managed-only repo. - defaultManagedPlatform: - name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-9-amd64' - - # Defines the platforms on which to run build jobs. One job is created for each platform, and the - # object in this array is sent to the job template as 'platform'. If no platforms are specified, - # one job runs on 'defaultManagedPlatform'. - platforms: [] - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - - # If set to true and running on a non-public project, - # Internal nuget and blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - jobs: +- template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: false -- ${{ if ne(parameters.allCompletedJobId, '') }}: - - job: ${{ parameters.allCompletedJobId }} - displayName: Source-Build Complete - pool: server - dependsOn: - - ${{ each platform in parameters.platforms }}: - - ${{ parameters.jobNamePrefix }}_${{ platform.name }} - - ${{ if eq(length(parameters.platforms), 0) }}: - - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} - -- ${{ each platform in parameters.platforms }}: - - template: /eng/common/templates/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ platform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} - -- ${{ if eq(length(parameters.platforms), 0) }}: - - template: /eng/common/templates/job/source-build.yml - parameters: - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ parameters.defaultManagedPlatform }} - cgIgnoreDirectories: ${{ parameters.cgIgnoreDirectories }} - enableInternalSources: ${{ parameters.enableInternalSources }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml index 173914f2364a..7fa105875592 100644 --- a/eng/common/templates/post-build/common-variables.yml +++ b/eng/common/templates/post-build/common-variables.yml @@ -1,22 +1,8 @@ variables: - - group: Publish-Build-Assets +- template: /eng/common/core-templates/post-build/common-variables.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false - # Whether the build is internal or not - - name: IsInternalBuild - value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} - - # Default Maestro++ API Endpoint and API Version - - name: MaestroApiEndPoint - value: "https://maestro.dot.net" - - name: MaestroApiAccessToken - value: $(MaestroAccessToken) - - name: MaestroApiVersion - value: "2020-02-20" - - - name: SourceLinkCLIVersion - value: 3.0.0 - - name: SymbolToolVersion - value: 1.0.1 - - - name: runCodesignValidationInjection - value: false + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 96ca06882384..53ede714bdd2 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -1,287 +1,8 @@ -parameters: - # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. - # Publishing V1 is no longer supported - # Publishing V2 is no longer supported - # Publishing V3 is the default - - name: publishingInfraVersion - displayName: Which version of publishing should be used to promote the build definition? - type: number - default: 3 - values: - - 3 - - - name: BARBuildId - displayName: BAR Build Id - type: number - default: 0 - - - name: PromoteToChannelIds - displayName: Channel to promote BARBuildId to - type: string - default: '' - - - name: enableSourceLinkValidation - displayName: Enable SourceLink validation - type: boolean - default: false - - - name: enableSigningValidation - displayName: Enable signing validation - type: boolean - default: true - - - name: enableSymbolValidation - displayName: Enable symbol validation - type: boolean - default: false - - - name: enableNugetValidation - displayName: Enable NuGet validation - type: boolean - default: true - - - name: publishInstallersAndChecksums - displayName: Publish installers and checksums - type: boolean - default: true - - - name: SDLValidationParameters - type: object - default: - enable: false - publishGdn: false - continueOnError: false - params: '' - artifactNames: '' - downloadArtifacts: true - - # These parameters let the user customize the call to sdk-task.ps1 for publishing - # symbols & general artifacts as well as for signing validation - - name: symbolPublishingAdditionalParameters - displayName: Symbol publishing additional parameters - type: string - default: '' - - - name: artifactsPublishingAdditionalParameters - displayName: Artifact publishing additional parameters - type: string - default: '' - - - name: signingValidationAdditionalParameters - displayName: Signing validation additional parameters - type: string - default: '' - - # Which stages should finish execution before post-build stages start - - name: validateDependsOn - type: object - default: - - build - - - name: publishDependsOn - type: object - default: - - Validate - - # Optional: Call asset publishing rather than running in a separate stage - - name: publishAssetsImmediately - type: boolean - default: false - stages: -- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - - stage: Validate - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Validate Build Assets - variables: - - template: common-variables.yml - - template: /eng/common/templates/variables/pool-providers.yml - jobs: - - job: - displayName: NuGet Validation - condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - - - job: - displayName: Signing Validation - condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - itemPattern: | - ** - !**/Microsoft.SourceBuild.Intermediate.*.nupkg - - # This is necessary whenever we want to publish/restore to an AzDO private feed - # Since sdk-task.ps1 tries to restore packages we need to do this authentication here - # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@1 - displayName: 'Authenticate to AzDO Feeds' - - # Signing validation will optionally work with the buildmanifest file which is downloaded from - # Azure DevOps above. - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore -msbuildEngine vs - /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' - /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' - ${{ parameters.signingValidationAdditionalParameters }} - - - template: ../steps/publish-logs.yml - parameters: - StageLabel: 'Validation' - JobLabel: 'Signing' - - - job: - displayName: SourceLink Validation - condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: DownloadBuildArtifacts@0 - displayName: Download Blob Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: BlobArtifacts - checkDownloadedFiles: true - - - task: PowerShell@2 - displayName: Validate - inputs: - filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) - -GHCommit $(Build.SourceVersion) - -SourcelinkCliVersion $(SourceLinkCLIVersion) - continueOnError: true - - - template: /eng/common/templates/job/execute-sdl.yml - parameters: - enable: ${{ parameters.SDLValidationParameters.enable }} - publishGuardianDirectoryToPipeline: ${{ parameters.SDLValidationParameters.publishGdn }} - additionalParameters: ${{ parameters.SDLValidationParameters.params }} - continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }} - artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }} - downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }} - -- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - - stage: publish_using_darc - ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: - dependsOn: ${{ parameters.publishDependsOn }} - ${{ else }}: - dependsOn: ${{ parameters.validateDependsOn }} - displayName: Publish using Darc - variables: - - template: common-variables.yml - - template: /eng/common/templates/variables/pool-providers.yml - jobs: - - job: - displayName: Publish Using Darc - timeoutInMinutes: 120 - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: VSEngSS-MicroBuild2022-1ES - demands: Cmd - # If it's not devdiv, it's dnceng - ${{ else }}: - name: NetCore1ESPool-Publishing-Internal - demands: ImageOverride -equals windows.vs2019.amd64 - steps: - - template: setup-maestro-vars.yml - parameters: - BARBuildId: ${{ parameters.BARBuildId }} - PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - - task: NuGetAuthenticate@1 - - # Darc is targeting 8.0, so make sure it's installed - - task: UseDotNet@2 - inputs: - version: 8.0.x +- template: /eng/common/core-templates/post-build/post-build.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false - - task: AzureCLI@2 - displayName: Publish Using Darc - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: ps - scriptLocation: scriptPath - scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} - -AzdoToken '$(System.AccessToken)' - -WaitPublishingFinish true - -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' - -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/post-build/setup-maestro-vars.yml b/eng/common/templates/post-build/setup-maestro-vars.yml index 4347fa80b684..a79fab5b441e 100644 --- a/eng/common/templates/post-build/setup-maestro-vars.yml +++ b/eng/common/templates/post-build/setup-maestro-vars.yml @@ -1,70 +1,8 @@ -parameters: - BARBuildId: '' - PromoteToChannelIds: '' - steps: - - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Release Configs - inputs: - buildType: current - artifactName: ReleaseConfigs - checkDownloadedFiles: true - - - task: AzureCLI@2 - name: setReleaseVars - displayName: Set Release Configs Vars - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: pscore - scriptLocation: inlineScript - inlineScript: | - try { - if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { - $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt - - $BarId = $Content | Select -Index 0 - $Channels = $Content | Select -Index 1 - $IsStableBuild = $Content | Select -Index 2 - - $AzureDevOpsProject = $Env:System_TeamProject - $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId - $AzureDevOpsBuildId = $Env:Build_BuildId - } - else { - . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1 - $darc = Get-Darc - $buildInfo = & $darc get-build ` - --id ${{ parameters.BARBuildId }} ` - --extended ` - --output-format json ` - --ci ` - | convertFrom-Json - - $BarId = ${{ parameters.BARBuildId }} - $Channels = $Env:PromoteToMaestroChannels -split "," - $Channels = $Channels -join "][" - $Channels = "[$Channels]" - - $IsStableBuild = $buildInfo.stable - $AzureDevOpsProject = $buildInfo.azureDevOpsProject - $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId - $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId - } - - Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" - Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" - Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" +- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false - Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" - Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" - Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" - } - catch { - Write-Host $_ - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - exit 1 - } - env: - PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml index cbba0596709d..c12a5f8d21d7 100644 --- a/eng/common/templates/steps/component-governance.yml +++ b/eng/common/templates/steps/component-governance.yml @@ -1,13 +1,7 @@ -parameters: - disableComponentGovernance: false - componentGovernanceIgnoreDirectories: '' - steps: -- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable -- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - - task: ComponentGovernanceComponentDetection@0 - continueOnError: true - inputs: - ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} \ No newline at end of file +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/enable-internal-runtimes.yml b/eng/common/templates/steps/enable-internal-runtimes.yml index 54dc9416c519..b21a8038cc1c 100644 --- a/eng/common/templates/steps/enable-internal-runtimes.yml +++ b/eng/common/templates/steps/enable-internal-runtimes.yml @@ -1,28 +1,10 @@ # Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' # variable with the base64-encoded SAS token, by default -parameters: -- name: federatedServiceConnection - type: string - default: 'dotnetbuilds-internal-read' -- name: outputVariableName - type: string - default: 'dotnetbuilds-internal-container-read-token-base64' -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: true - steps: -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - template: /eng/common/templates/steps/get-delegation-sas.yml - parameters: - federatedServiceConnection: ${{ parameters.federatedServiceConnection }} - outputVariableName: ${{ parameters.outputVariableName }} - expiryInHours: ${{ parameters.expiryInHours }} - base64Encode: ${{ parameters.base64Encode }} - storageAccount: dotnetbuilds - container: internal - permissions: rl +- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/enable-internal-sources.yml b/eng/common/templates/steps/enable-internal-sources.yml new file mode 100644 index 000000000000..5f87e9abb8aa --- /dev/null +++ b/eng/common/templates/steps/enable-internal-sources.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/generate-sbom.yml b/eng/common/templates/steps/generate-sbom.yml index b1fe8b3944b3..26dc00a2e0f3 100644 --- a/eng/common/templates/steps/generate-sbom.yml +++ b/eng/common/templates/steps/generate-sbom.yml @@ -1,48 +1,7 @@ -# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. -# PackageName - The name of the package this SBOM represents. -# PackageVersion - The version of the package this SBOM represents. -# ManifestDirPath - The path of the directory where the generated manifest files will be placed -# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. - -parameters: - PackageVersion: 8.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' - PackageName: '.NET' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom - IgnoreDirectories: '' - sbomContinueOnError: true - steps: -- task: PowerShell@2 - displayName: Prep for SBOM generation in (Non-linux) - condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) - inputs: - filePath: ./eng/common/generate-sbom-prep.ps1 - arguments: ${{parameters.manifestDirPath}} - -# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 -- script: | - chmod +x ./eng/common/generate-sbom-prep.sh - ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} - displayName: Prep for SBOM generation in (Linux) - condition: eq(variables['Agent.Os'], 'Linux') - continueOnError: ${{ parameters.sbomContinueOnError }} - -- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: 'Generate SBOM manifest' - continueOnError: ${{ parameters.sbomContinueOnError }} - inputs: - PackageName: ${{ parameters.packageName }} - BuildDropPath: ${{ parameters.buildDropPath }} - PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }} - ${{ if ne(parameters.IgnoreDirectories, '') }}: - AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' - -- task: PublishPipelineArtifact@1 - displayName: Publish SBOM manifest - continueOnError: ${{parameters.sbomContinueOnError}} - inputs: - targetPath: '${{parameters.manifestDirPath}}' - artifactName: $(ARTIFACT_NAME) +- template: /eng/common/core-templates/steps/generate-sbom.yml + parameters: + is1ESPipeline: false + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/get-delegation-sas.yml b/eng/common/templates/steps/get-delegation-sas.yml index c690cc0a070c..83760c9798e3 100644 --- a/eng/common/templates/steps/get-delegation-sas.yml +++ b/eng/common/templates/steps/get-delegation-sas.yml @@ -1,52 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: false -- name: storageAccount - type: string -- name: container - type: string -- name: permissions - type: string - default: 'rl' - steps: -- task: AzureCLI@2 - displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - # Calculate the expiration of the SAS token and convert to UTC - $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - - # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads - # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 - $sas = "" - do { - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - } while($sas.IndexOf('/') -ne -1) - - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - - if ('${{ parameters.base64Encode }}' -eq 'true') { - $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) - } +- template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + is1ESPipeline: false - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/get-federated-access-token.yml b/eng/common/templates/steps/get-federated-access-token.yml index 55e33bd38f71..31e151d9d9e7 100644 --- a/eng/common/templates/steps/get-federated-access-token.yml +++ b/eng/common/templates/steps/get-federated-access-token.yml @@ -1,40 +1,7 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: stepName - type: string - default: 'getFederatedAccessToken' -- name: condition - type: string - default: '' -# Resource to get a token for. Common values include: -# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps -# - 'https://storage.azure.com/' for storage -# Defaults to Azure DevOps -- name: resource - type: string - default: '499b84ac-1321-427f-aa17-267ca6975798' -- name: isStepOutputVariable - type: boolean - default: false - steps: -- task: AzureCLI@2 - displayName: 'Getting federated access token for feeds' - name: ${{ parameters.stepName }} - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" - exit 1 - } - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file +- template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/eng/common/templates/steps/publish-build-artifacts.yml b/eng/common/templates/steps/publish-build-artifacts.yml new file mode 100644 index 000000000000..6428a98dfef6 --- /dev/null +++ b/eng/common/templates/steps/publish-build-artifacts.yml @@ -0,0 +1,40 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: displayName + type: string + default: 'Publish to Build Artifact' + +- name: condition + type: string + default: succeeded() + +- name: artifactName + type: string + +- name: pathToPublish + type: string + +- name: continueOnError + type: boolean + default: false + +- name: publishLocation + type: string + default: 'Container' + +steps: +- ${{ if eq(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates cannot be referenced from a 1ES managed template': error +- task: PublishBuildArtifacts@1 + displayName: ${{ parameters.displayName }} + condition: ${{ parameters.condition }} + ${{ if parameters.continueOnError }}: + continueOnError: ${{ parameters.continueOnError }} + inputs: + PublishLocation: ${{ parameters.publishLocation }} + PathtoPublish: ${{ parameters.pathToPublish }} + ${{ if parameters.artifactName }}: + ArtifactName: ${{ parameters.artifactName }} \ No newline at end of file diff --git a/eng/common/templates/steps/publish-logs.yml b/eng/common/templates/steps/publish-logs.yml index e2f8413d8e19..4ea86bd88235 100644 --- a/eng/common/templates/steps/publish-logs.yml +++ b/eng/common/templates/steps/publish-logs.yml @@ -1,23 +1,7 @@ -parameters: - StageLabel: '' - JobLabel: '' - steps: -- task: Powershell@2 - displayName: Prepare Binlogs to Upload - inputs: - targetType: inline - script: | - New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - continueOnError: true - condition: always() +- template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: false -- task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(System.DefaultWorkingDirectory)/PostBuildLogs' - PublishLocation: Container - ArtifactName: PostBuildLogs - continueOnError: true - condition: always() + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/publish-pipeline-artifacts.yml b/eng/common/templates/steps/publish-pipeline-artifacts.yml new file mode 100644 index 000000000000..5dd698b212fc --- /dev/null +++ b/eng/common/templates/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,34 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: args + type: object + default: {} + +steps: +- ${{ if eq(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates cannot be referenced from a 1ES managed template': error +- task: PublishPipelineArtifact@1 + displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} + ${{ if parameters.args.condition }}: + condition: ${{ parameters.args.condition }} + ${{ else }}: + condition: succeeded() + ${{ if parameters.args.continueOnError }}: + continueOnError: ${{ parameters.args.continueOnError }} + inputs: + targetPath: ${{ parameters.args.targetPath }} + ${{ if parameters.args.artifactName }}: + artifactName: ${{ parameters.args.artifactName }} + ${{ if parameters.args.publishLocation }}: + publishLocation: ${{ parameters.args.publishLocation }} + ${{ if parameters.args.fileSharePath }}: + fileSharePath: ${{ parameters.args.fileSharePath }} + ${{ if parameters.args.Parallel }}: + parallel: ${{ parameters.args.Parallel }} + ${{ if parameters.args.parallelCount }}: + parallelCount: ${{ parameters.args.parallelCount }} + ${{ if parameters.args.properties }}: + properties: ${{ parameters.args.properties }} \ No newline at end of file diff --git a/eng/common/templates/steps/retain-build.yml b/eng/common/templates/steps/retain-build.yml index 83d97a26a01f..8e841ace3d29 100644 --- a/eng/common/templates/steps/retain-build.yml +++ b/eng/common/templates/steps/retain-build.yml @@ -1,28 +1,7 @@ -parameters: - # Optional azure devops PAT with build execute permissions for the build's organization, - # only needed if the build that should be retained ran on a different organization than - # the pipeline where this template is executing from - Token: '' - # Optional BuildId to retain, defaults to the current running build - BuildId: '' - # Azure devops Organization URI for the build in the https://dev.azure.com/ format. - # Defaults to the organization the current pipeline is running on - AzdoOrgUri: '$(System.CollectionUri)' - # Azure devops project for the build. Defaults to the project the current pipeline is running on - AzdoProject: '$(System.TeamProject)' - steps: - - task: powershell@2 - inputs: - targetType: 'filePath' - filePath: eng/common/retain-build.ps1 - pwsh: true - arguments: > - -AzdoOrgUri: ${{parameters.AzdoOrgUri}} - -AzdoProject ${{parameters.AzdoProject}} - -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} - -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} - displayName: Enable permanent build retention - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - BUILD_ID: $(Build.BuildId) \ No newline at end of file +- template: /eng/common/core-templates/steps/retain-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml index 22f2501307d4..39f99fc2762d 100644 --- a/eng/common/templates/steps/send-to-helix.yml +++ b/eng/common/templates/steps/send-to-helix.yml @@ -1,92 +1,7 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixConfiguration: '' # optional -- additional property attached to a job - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - HelixProjectArguments: '' # optional -- arguments passed to the build command for helixpublish.proj - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} +- template: /eng/common/core-templates/steps/send-to-helix.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/source-build.yml b/eng/common/templates/steps/source-build.yml index d08a0e92caa4..23c1d6f4e9f8 100644 --- a/eng/common/templates/steps/source-build.yml +++ b/eng/common/templates/steps/source-build.yml @@ -1,135 +1,7 @@ -parameters: - # This template adds arcade-powered source-build to CI. - - # This is a 'steps' template, and is intended for advanced scenarios where the existing build - # infra has a careful build methodology that must be followed. For example, a repo - # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline - # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to - # GitHub. Using this steps template leaves room for that infra to be included. - - # Defines the platform on which to run the steps. See 'eng/common/templates/job/source-build.yml' - # for details. The entire object is described in the 'job' template for simplicity, even though - # the usage of the properties on this object is split between the 'job' and 'steps' templates. - platform: {} - - # Optional list of directories to ignore for component governance scans. - cgIgnoreDirectories: [] - steps: -# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) -- script: | - set -x - df -h - - # If building on the internal project, the artifact feeds variable may be available (usually only if needed) - # In that case, call the feed setup script to add internal feeds corresponding to public ones. - # In addition, add an msbuild argument to copy the WIP from the repo to the target build location. - # This is because SetupNuGetSources.sh will alter the current NuGet.config file, and we need to preserve those - # changes. - internalRestoreArgs= - if [ '$(dn-bot-dnceng-artifact-feeds-rw)' != '$''(dn-bot-dnceng-artifact-feeds-rw)' ]; then - # Temporarily work around https://github.com/dotnet/arcade/issues/7709 - chmod +x $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh - $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh $(System.DefaultWorkingDirectory)/NuGet.config $(dn-bot-dnceng-artifact-feeds-rw) - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - - # If building on the internal project, the internal storage variable may be available (usually only if needed) - # In that case, add variables to allow the download of internal runtimes if the specified versions are not found - # in the default public locations. - internalRuntimeDownloadArgs= - if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' - fi - - buildConfig=Release - # Check if AzDO substitutes in a build config from a variable, and use it if so. - if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then - buildConfig='$(_BuildConfig)' - fi - - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - - targetRidArgs= - if [ '${{ parameters.platform.targetRID }}' != '' ]; then - targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' - fi - - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml - fi - - ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ - --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ - $officialBuildArgs \ - $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ - $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ - /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ - /p:ArcadeBuildFromSource=true \ - /p:AssetManifestFileName=$assetManifestFileName - displayName: Build - -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(System.DefaultWorkingDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/source-build/self/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - -- task: PublishPipelineArtifact@1 - displayName: Publish BuildLogs - inputs: - targetPath: '$(Build.StagingDirectory)/BuildLogs' - artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) - continueOnError: true - condition: succeededOrFailed() +- template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: false -# Manually inject component detection so that we can ignore the source build upstream cache, which contains -# a nupkg cache of input packages (a local feed). -# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' -# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets -- task: ComponentGovernanceComponentDetection@0 - displayName: Component Detection (Exclude upstream cache) - inputs: - ${{ if eq(length(parameters.cgIgnoreDirectories), 0) }}: - ignoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/source-build/self/src/artifacts/obj/source-built-upstream-cache' - ${{ else }}: - ignoreDirectories: ${{ join(',', parameters.cgIgnoreDirectories) }} + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/variables/pool-providers.yml b/eng/common/templates/variables/pool-providers.yml index d236f9fdbb15..18693ea120d5 100644 --- a/eng/common/templates/variables/pool-providers.yml +++ b/eng/common/templates/variables/pool-providers.yml @@ -23,35 +23,37 @@ # # pool: # name: $(DncEngInternalBuildPool) -# demands: ImageOverride -equals windows.vs2019.amd64 - +# demands: ImageOverride -equals windows.vs2022.amd64 variables: - # Coalesce the target and source branches so we know when a PR targets a release branch - # If these variables are somehow missing, fall back to main (tends to have more capacity) + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ else }}: + # Coalesce the target and source branches so we know when a PR targets a release branch + # If these variables are somehow missing, fall back to main (tends to have more capacity) - # Any new -Svc alternative pools should have variables added here to allow for splitting work - - name: DncEngPublicBuildPool - value: $[ - replace( + # Any new -Svc alternative pools should have variables added here to allow for splitting work + - name: DncEngPublicBuildPool + value: $[ replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore-Svc-Public' - ), - False, - 'NetCore-Public' - ) - ] + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore-Svc-Public' + ), + False, + 'NetCore-Public' + ) + ] - - name: DncEngInternalBuildPool - value: $[ - replace( + - name: DncEngInternalBuildPool + value: $[ replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore1ESPool-Svc-Internal' - ), - False, - 'NetCore1ESPool-Internal' - ) - ] + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore1ESPool-Svc-Internal' + ), + False, + 'NetCore1ESPool-Internal' + ) + ] diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index b674a90618d7..a06513a59407 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -65,6 +65,11 @@ $ErrorActionPreference = 'Stop' # Base-64 encoded SAS token that has permission to storage container described by $runtimeSourceFeed [string]$runtimeSourceFeedKey = if (Test-Path variable:runtimeSourceFeedKey) { $runtimeSourceFeedKey } else { $null } +# True if the build is a product build +[bool]$productBuild = if (Test-Path variable:productBuild) { $productBuild } else { $false } + +[String[]]$properties = if (Test-Path variable:properties) { $properties } else { @() } + function Create-Directory ([string[]] $path) { New-Item -Path $path -Force -ItemType 'Directory' | Out-Null } @@ -158,18 +163,13 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { $env:DOTNET_MULTILEVEL_LOOKUP=0 # Disable first run since we do not need all ASP.NET packages restored. - $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + $env:DOTNET_NOLOGO=1 # Disable telemetry on CI. if ($ci) { $env:DOTNET_CLI_TELEMETRY_OPTOUT=1 } - # Source Build uses DotNetCoreSdkDir variable - if ($env:DotNetCoreSdkDir -ne $null) { - $env:DOTNET_INSTALL_DIR = $env:DotNetCoreSdkDir - } - # Find the first path on %PATH% that contains the dotnet.exe if ($useInstalledDotNetCli -and (-not $globalJsonHasRuntimes) -and ($env:DOTNET_INSTALL_DIR -eq $null)) { $dotnetExecutable = GetExecutableFileName 'dotnet' @@ -228,7 +228,7 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { Write-PipelinePrependPath -Path $dotnetRoot Write-PipelineSetVariable -Name 'DOTNET_MULTILEVEL_LOOKUP' -Value '0' - Write-PipelineSetVariable -Name 'DOTNET_SKIP_FIRST_TIME_EXPERIENCE' -Value '1' + Write-PipelineSetVariable -Name 'DOTNET_NOLOGO' -Value '1' return $global:_DotNetInstallDir = $dotnetRoot } @@ -254,7 +254,6 @@ function Retry($downloadBlock, $maxRetries = 5) { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Unable to download file in $maxRetries attempts." break } - } } @@ -384,7 +383,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.12.0 + # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.12.0 $defaultXCopyMSBuildVersion = '17.12.0' if (!$vsRequirements) { @@ -424,7 +423,6 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion } else { - if (Get-Member -InputObject $GlobalJson.tools -Name 'xcopy-msbuild') { $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] @@ -450,7 +448,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = if ($xcopyMSBuildVersion.Trim() -ine "none") { $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install if ($vsInstallDir -eq $null) { - throw "Could not xcopy msbuild. Please check that package 'RoslynTools.MSBuild @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." + throw "Could not xcopy msbuild. Please check that package 'Microsoft.DotNet.Arcade.MSBuild.Xcopy @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." } } if ($vsInstallDir -eq $null) { @@ -487,7 +485,7 @@ function InstallXCopyMSBuild([string]$packageVersion) { } function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { - $packageName = 'RoslynTools.MSBuild' + $packageName = 'Microsoft.DotNet.Arcade.MSBuild.Xcopy' $packageDir = Join-Path $ToolsDir "msbuild\$packageVersion" $packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg" @@ -504,6 +502,10 @@ function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { Invoke-WebRequest "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/flat2/$packageName/$packageVersion/$packageName.$packageVersion.nupkg" -UseBasicParsing -OutFile $packagePath }) + if (!(Test-Path $packagePath)) { + Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "See https://dev.azure.com/dnceng/internal/_wiki/wikis/DNCEng%20Services%20Wiki/1074/Updating-Microsoft.DotNet.Arcade.MSBuild.Xcopy-WAS-RoslynTools.MSBuild-(xcopy-msbuild)-generation?anchor=troubleshooting for help troubleshooting issues with XCopy MSBuild" + throw + } Unzip $packagePath $packageDir } @@ -545,19 +547,26 @@ function LocateVisualStudio([object]$vsRequirements = $null){ }) } - if (!$vsRequirements) { $vsRequirements = $GlobalJson.tools.vs } + if (!$vsRequirements) { + if (Get-Member -InputObject $GlobalJson.tools -Name 'vs' -ErrorAction SilentlyContinue) { + $vsRequirements = $GlobalJson.tools.vs + } else { + $vsRequirements = $null + } + } + $args = @('-latest', '-format', 'json', '-requires', 'Microsoft.Component.MSBuild', '-products', '*') if (!$excludePrereleaseVS) { $args += '-prerelease' } - if (Get-Member -InputObject $vsRequirements -Name 'version') { + if ($vsRequirements -and (Get-Member -InputObject $vsRequirements -Name 'version' -ErrorAction SilentlyContinue)) { $args += '-version' $args += $vsRequirements.version } - if (Get-Member -InputObject $vsRequirements -Name 'components') { + if ($vsRequirements -and (Get-Member -InputObject $vsRequirements -Name 'components' -ErrorAction SilentlyContinue)) { foreach ($component in $vsRequirements.components) { $args += '-requires' $args += $component @@ -604,11 +613,11 @@ function InitializeBuildTool() { # Use override if it exists - commonly set by source-build if ($null -eq $env:_OverrideArcadeInitializeBuildToolFramework) { - $initializeBuildToolFramework="net8.0" + $initializeBuildToolFramework="net9.0" } else { $initializeBuildToolFramework=$env:_OverrideArcadeInitializeBuildToolFramework } - + $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = $initializeBuildToolFramework } } elseif ($msbuildEngine -eq "vs") { try { @@ -651,7 +660,7 @@ function GetNuGetPackageCachePath() { $env:NUGET_PACKAGES = Join-Path $env:UserProfile '.nuget\packages\' } else { $env:NUGET_PACKAGES = Join-Path $RepoRoot '.packages\' - $env:RESTORENOCACHE = $true + $env:RESTORENOHTTPCACHE = $true } } @@ -684,8 +693,14 @@ function Read-ArcadeSdkVersion() { } function InitializeToolset() { - if (Test-Path variable:global:_ToolsetBuildProj) { - return $global:_ToolsetBuildProj + # For Unified Build/Source-build support, check whether the environment variable is + # set. If it is, then use this as the toolset build project. + if ($env:_InitializeToolset -ne $null) { + return $global:_InitializeToolset = $env:_InitializeToolset + } + + if (Test-Path variable:global:_InitializeToolset) { + return $global:_InitializeToolset } $nugetCache = GetNuGetPackageCachePath @@ -696,7 +711,7 @@ function InitializeToolset() { if (Test-Path $toolsetLocationFile) { $path = Get-Content $toolsetLocationFile -TotalCount 1 if (Test-Path $path) { - return $global:_ToolsetBuildProj = $path + return $global:_InitializeToolset = $path } } @@ -719,7 +734,7 @@ function InitializeToolset() { throw "Invalid toolset path: $path" } - return $global:_ToolsetBuildProj = $path + return $global:_InitializeToolset = $path } function ExitWithExitCode([int] $exitCode) { @@ -771,12 +786,10 @@ function MSBuild() { # new scripts need to work with old packages, so we need to look for the old names/versions (Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.ArcadeLogging.dll')), (Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll')), - (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll')) - (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll')) (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll')) + (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll')), + (Join-Path $basePath (Join-Path net8.0 'Microsoft.DotNet.ArcadeLogging.dll')), + (Join-Path $basePath (Join-Path net8.0 'Microsoft.DotNet.Arcade.Sdk.dll')) ) $selectedPath = $null foreach ($path in $possiblePaths) { @@ -835,7 +848,8 @@ function MSBuild-Core() { } } - $env:ARCADE_BUILD_TOOL_COMMAND = "$($buildTool.Path) $cmdArgs" + # Be sure quote the path in case there are spaces in the dotnet installation location. + $env:ARCADE_BUILD_TOOL_COMMAND = "`"$($buildTool.Path)`" $cmdArgs" $exitCode = Exec-Process $buildTool.Path $cmdArgs @@ -850,7 +864,8 @@ function MSBuild-Core() { } # When running on Azure Pipelines, override the returned exit code to avoid double logging. - if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null) { + # Skip this when the build is a child of the VMR orchestrator build. + if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$productBuild -and -not($properties -like "*DotNetBuildRepo=true*")) { Write-PipelineSetResult -Result "Failed" -Message "msbuild execution failed." # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 68db15430230..01b09b65796c 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -68,6 +68,9 @@ fi runtime_source_feed=${runtime_source_feed:-''} runtime_source_feed_key=${runtime_source_feed_key:-''} +# True if the build is a product build +product_build=${product_build:-false} + # Resolve any symlinks in the given path. function ResolvePath { local path=$1 @@ -112,7 +115,7 @@ function InitializeDotNetCli { export DOTNET_MULTILEVEL_LOOKUP=0 # Disable first run since we want to control all package sources - export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + export DOTNET_NOLOGO=1 # Disable telemetry on CI if [[ $ci == true ]]; then @@ -123,11 +126,6 @@ function InitializeDotNetCli { # so it doesn't output warnings to the console. export LTTNG_HOME="$HOME" - # Source Build uses DotNetCoreSdkDir variable - if [[ -n "${DotNetCoreSdkDir:-}" ]]; then - export DOTNET_INSTALL_DIR="$DotNetCoreSdkDir" - fi - # Find the first path on $PATH that contains the dotnet.exe if [[ "$use_installed_dotnet_cli" == true && $global_json_has_runtimes == false && -z "${DOTNET_INSTALL_DIR:-}" ]]; then local dotnet_path=`command -v dotnet` @@ -146,7 +144,7 @@ function InitializeDotNetCli { if [[ $global_json_has_runtimes == false && -n "${DOTNET_INSTALL_DIR:-}" && -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then dotnet_root="$DOTNET_INSTALL_DIR" else - dotnet_root="$repo_root/.dotnet" + dotnet_root="${repo_root}.dotnet" export DOTNET_INSTALL_DIR="$dotnet_root" @@ -165,7 +163,7 @@ function InitializeDotNetCli { Write-PipelinePrependPath -path "$dotnet_root" Write-PipelineSetVariable -name "DOTNET_MULTILEVEL_LOOKUP" -value "0" - Write-PipelineSetVariable -name "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" -value "1" + Write-PipelineSetVariable -name "DOTNET_NOLOGO" -value "1" # return value _InitializeDotNetCli="$dotnet_root" @@ -310,7 +308,7 @@ function GetDotNetInstallScript { curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script" || { if command -v openssl &> /dev/null; then echo "Curl failed; dumping some information about dotnet.microsoft.com for later investigation" - echo | openssl s_client -showcerts -servername dotnet.microsoft.com -connect dotnet.microsoft.com:443 + echo | openssl s_client -showcerts -servername dotnet.microsoft.com -connect dotnet.microsoft.com:443 || true fi echo "Will now retry the same URL with verbose logging." with_retries curl "$install_script_url" -sSL --verbose --retry 10 --create-dirs -o "$install_script" || { @@ -343,20 +341,20 @@ function InitializeBuildTool { _InitializeBuildToolCommand="msbuild" # use override if it exists - commonly set by source-build if [[ "${_OverrideArcadeInitializeBuildToolFramework:-x}" == "x" ]]; then - _InitializeBuildToolFramework="net8.0" + _InitializeBuildToolFramework="net9.0" else _InitializeBuildToolFramework="${_OverrideArcadeInitializeBuildToolFramework}" fi } -# Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116 +# Set RestoreNoHttpCache as a workaround for https://github.com/NuGet/Home/issues/3116 function GetNuGetPackageCachePath { if [[ -z ${NUGET_PACKAGES:-} ]]; then if [[ "$use_global_nuget_cache" == true ]]; then - export NUGET_PACKAGES="$HOME/.nuget/packages" + export NUGET_PACKAGES="$HOME/.nuget/packages/" else - export NUGET_PACKAGES="$repo_root/.packages" - export RESTORENOCACHE=true + export NUGET_PACKAGES="$repo_root/.packages/" + export RESTORENOHTTPCACHE=true fi fi @@ -440,7 +438,7 @@ function StopProcesses { } function MSBuild { - local args=$@ + local args=( "$@" ) if [[ "$pipelines_log" == true ]]; then InitializeBuildTool InitializeToolset @@ -458,12 +456,10 @@ function MSBuild { local possiblePaths=() possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.ArcadeLogging.dll" ) possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.Arcade.Sdk.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" ) possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.ArcadeLogging.dll" ) possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.Arcade.Sdk.dll" ) + possiblePaths+=( "$toolset_dir/net8.0/Microsoft.DotNet.ArcadeLogging.dll" ) + possiblePaths+=( "$toolset_dir/net8.0/Microsoft.DotNet.Arcade.Sdk.dll" ) for path in "${possiblePaths[@]}"; do if [[ -f $path ]]; then selectedPath=$path @@ -477,7 +473,7 @@ function MSBuild { args+=( "-logger:$selectedPath" ) fi - MSBuild-Core ${args[@]} + MSBuild-Core "${args[@]}" } function MSBuild-Core { @@ -510,7 +506,8 @@ function MSBuild-Core { echo "Build failed with exit code $exit_code. Check errors above." # When running on Azure Pipelines, override the returned exit code to avoid double logging. - if [[ "$ci" == "true" && -n ${SYSTEM_TEAMPROJECT:-} ]]; then + # Skip this when the build is a child of the VMR orchestrator build. + if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$product_build" != true && "$properties" != *"DotNetBuildRepo=true"* ]]; then Write-PipelineSetResult -result "Failed" -message "msbuild execution failed." # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error diff --git a/global.json b/global.json index edcf91e50c58..13c3e979dcfe 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "tools": { - "dotnet": "8.0.122", + "dotnet": "9.0.113", "runtimes": { "dotnet": [ - "$(VSRedistCommonNetCoreSharedFrameworkx6480PackageVersion)" + "$(VSRedistCommonNetCoreSharedFrameworkx6490PackageVersion)" ], "aspnetcore": [ "$(MicrosoftAspNetCoreComponentsSdkAnalyzersPackageVersion)" @@ -13,8 +13,13 @@ "version": "16.8" } }, + "native-tools": { + "cmake": "latest" + }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25611.2", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25611.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26104.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26104.5", + "Microsoft.Build.NoTargets": "3.7.0", + "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } } From d664c19830274a8587f8ac850161ce8d1968a57e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 5 Feb 2026 07:07:16 +0000 Subject: [PATCH 105/133] Update dependencies from https://github.com/dotnet/templating build 20260204.7 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.312 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.312-servicing.26103.2 -> To Version 9.0.312-servicing.26104.7 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 8b8d80ac57c5..38ef2a380539 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5df9fe9eb25e..f945affcdb51 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - b7a4f3707f1370b48969306d7b22bbd62ab5a8ea + 121dd33a2607d7b890713117a7a10da4fbba940d - + https://github.com/dotnet/templating - b7a4f3707f1370b48969306d7b22bbd62ab5a8ea + 121dd33a2607d7b890713117a7a10da4fbba940d diff --git a/eng/Versions.props b/eng/Versions.props index 1fb77d2527e7..e945c6456609 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26104.4 + 9.0.312-servicing.26104.7 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 52c12ec291733f0c4971022d252a556e7d3e3cee Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 5 Feb 2026 12:12:29 +0000 Subject: [PATCH 106/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260205.2 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.26071.1 -> To Version 9.0.0-preview.26105.2 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b48b9cc5331f..280f391c5e39 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -631,14 +631,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - e4cdae73d1aaad398c2915f319e3d8d8ed41a737 + 842418bc95557b003d439bbd7641474e9c97684a - + https://github.com/dotnet/scenario-tests - e4cdae73d1aaad398c2915f319e3d8d8ed41a737 + 842418bc95557b003d439bbd7641474e9c97684a From b34aec96fd080aabc9233e099921aeaa4379071a Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Thu, 5 Feb 2026 14:52:11 -0600 Subject: [PATCH 107/133] Increase mem alloc for license scanning container (#52857) --- src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml b/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml index 657ded1a4aa2..207fda578241 100644 --- a/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml +++ b/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml @@ -95,7 +95,7 @@ extends: dependsOn: Setup container: image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-source-build-test-amd64 - options: '--memory=6g' + options: '--memory=12g' pool: name: NetCore1ESPool-Svc-Internal demands: ImageOverride -equals 1es-ubuntu-2204 From a7eb0f1d5cb48ea3034bdcf4b403ab1eafd731d7 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 6 Feb 2026 02:01:43 +0000 Subject: [PATCH 108/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260205.2 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.26071.1 -> To Version 9.0.0-preview.26105.2 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 445694ca8a4d..f25f6bcfbc31 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -597,14 +597,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - e4cdae73d1aaad398c2915f319e3d8d8ed41a737 + 842418bc95557b003d439bbd7641474e9c97684a - + https://github.com/dotnet/scenario-tests - e4cdae73d1aaad398c2915f319e3d8d8ed41a737 + 842418bc95557b003d439bbd7641474e9c97684a From 620ed0b9937fc09e5d4a27eb69fbb194bfb860e8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 7 Feb 2026 02:02:27 +0000 Subject: [PATCH 109/133] Update dependencies from https://github.com/dotnet/arcade build 20260206.3 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26104.5 -> To Version 9.0.0-beta.26106.3 --- eng/Version.Details.xml | 28 +++++++++---------- eng/Versions.props | 8 +++--- .../core-templates/job/source-build.yml | 2 +- global.json | 4 +-- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 280f391c5e39..b6a76e2cf3c5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -589,34 +589,34 @@ - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b diff --git a/eng/Versions.props b/eng/Versions.props index f408f21aaf23..caa390a6785c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -270,10 +270,10 @@ - 9.0.0-beta.26104.5 - 9.0.0-beta.26104.5 - 9.0.0-beta.26104.5 - 9.0.0-beta.26104.5 + 9.0.0-beta.26106.3 + 9.0.0-beta.26106.3 + 9.0.0-beta.26106.3 + 9.0.0-beta.26106.3 diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index 0e5458e1f46c..d943748ac10e 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -65,7 +65,7 @@ jobs: demands: ImageOverride -equals build.ubuntu.2004.amd64 ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: Azure-Linux-3-Amd64 + image: build.azurelinux.3.amd64 os: linux ${{ else }}: pool: diff --git a/global.json b/global.json index 13c3e979dcfe..e233c689de71 100644 --- a/global.json +++ b/global.json @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26104.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26104.5", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26106.3", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26106.3", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From 021b507c10ca44e89c8db57e9e9f29dfb79b1df9 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 7 Feb 2026 02:02:35 +0000 Subject: [PATCH 110/133] Update dependencies from https://github.com/dotnet/arcade build 20260206.3 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26104.5 -> To Version 9.0.0-beta.26106.3 --- eng/Version.Details.xml | 28 +++++++++---------- eng/Versions.props | 8 +++--- .../core-templates/job/source-build.yml | 2 +- global.json | 4 +-- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 987196c8cfe5..63dc52b05c1f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -555,34 +555,34 @@ - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://github.com/dotnet/arcade - c1205e7ef5628ab617dc234c7d89616fcd2917a8 + 69a6ee9b0f059a101093ebd06560f68ce797358b diff --git a/eng/Versions.props b/eng/Versions.props index 668013acabc0..6f23c5dadf6d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -272,10 +272,10 @@ - 9.0.0-beta.26104.5 - 9.0.0-beta.26104.5 - 9.0.0-beta.26104.5 - 9.0.0-beta.26104.5 + 9.0.0-beta.26106.3 + 9.0.0-beta.26106.3 + 9.0.0-beta.26106.3 + 9.0.0-beta.26106.3 diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index 0e5458e1f46c..d943748ac10e 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -65,7 +65,7 @@ jobs: demands: ImageOverride -equals build.ubuntu.2004.amd64 ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: Azure-Linux-3-Amd64 + image: build.azurelinux.3.amd64 os: linux ${{ else }}: pool: diff --git a/global.json b/global.json index 13c3e979dcfe..e233c689de71 100644 --- a/global.json +++ b/global.json @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26104.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26104.5", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26106.3", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26106.3", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From b766bfd1ce103fe618a39dea2ddc71aa29db356e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 9 Feb 2026 03:21:55 +0000 Subject: [PATCH 111/133] Update dependencies from https://github.com/dotnet/templating build 20260208.1 On relative base path root Microsoft.SourceBuild.Intermediate.templating , Microsoft.TemplateEngine.Mocks From Version 9.0.115-servicing.26103.1 -> To Version 9.0.115-servicing.26108.1 Microsoft.TemplateEngine.Abstractions From Version 9.0.115 -> To Version 9.0.115 --- NuGet.config | 2 +- eng/Version.Details.xml | 10 +++++----- eng/Versions.props | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index c46104cfb806..da7e3b7dff72 100644 --- a/NuGet.config +++ b/NuGet.config @@ -35,7 +35,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 280f391c5e39..b921ac1f5b46 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,16 +3,16 @@ https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 20e5f50fede1288b66b7fb20232ecb7ae685437b - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 20e5f50fede1288b66b7fb20232ecb7ae685437b - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 20e5f50fede1288b66b7fb20232ecb7ae685437b diff --git a/eng/Versions.props b/eng/Versions.props index f408f21aaf23..50dc2988f1f8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -193,7 +193,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26103.1 + 9.0.115-servicing.26108.1 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From cb067e07659d870a3044c286fd436cad687cd24c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 9 Feb 2026 03:23:43 +0000 Subject: [PATCH 112/133] Update dependencies from https://github.com/dotnet/templating build 20260208.2 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.312 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.312-servicing.26104.7 -> To Version 9.0.312-servicing.26108.2 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 38ef2a380539..5263d2c72ac9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 63dc52b05c1f..6b3264e4f8ce 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - 121dd33a2607d7b890713117a7a10da4fbba940d + 95ff3b7cb9cc1fc8d4673146b225fa6c74e9b94f - + https://github.com/dotnet/templating - 121dd33a2607d7b890713117a7a10da4fbba940d + 95ff3b7cb9cc1fc8d4673146b225fa6c74e9b94f diff --git a/eng/Versions.props b/eng/Versions.props index 6f23c5dadf6d..b6d940e7e8c3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26104.7 + 9.0.312-servicing.26108.2 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 7bafd335b64296e4b0869b254440a80d8d0a83d1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 9 Feb 2026 04:16:50 +0000 Subject: [PATCH 113/133] Update dependencies from https://github.com/dotnet/templating build 20260208.5 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.312 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.312-servicing.26104.7 -> To Version 9.0.312-servicing.26108.5 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 5263d2c72ac9..b7e3ac4dbe09 100644 --- a/NuGet.config +++ b/NuGet.config @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6b3264e4f8ce..07a06fa8873e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - 95ff3b7cb9cc1fc8d4673146b225fa6c74e9b94f + 74626d2400b13a71525dd4d1ee6697e265b8b019 - + https://github.com/dotnet/templating - 95ff3b7cb9cc1fc8d4673146b225fa6c74e9b94f + 74626d2400b13a71525dd4d1ee6697e265b8b019 diff --git a/eng/Versions.props b/eng/Versions.props index b6d940e7e8c3..0de56b72269f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26108.2 + 9.0.312-servicing.26108.5 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From bee3196ddaabb8c537e7b3c1f22c695edda07781 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 04:43:21 +0000 Subject: [PATCH 114/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index c46104cfb806..38ef2a380539 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,15 +27,17 @@ + + - + - + @@ -61,11 +63,11 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b6a76e2cf3c5..63dc52b05c1f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 121dd33a2607d7b890713117a7a10da4fbba940d - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + 121dd33a2607d7b890713117a7a10da4fbba940d - + https://github.com/dotnet/templating - e99d728d09ae2e529b3e0a17b4f02896af6e70ee + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a - https://github.com/dotnet/emsdk f364bf26bf50d8cbdd8652d284d25a8ccb55039a @@ -73,67 +69,67 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index caa390a6785c..6f23c5dadf6d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.12-servicing.25608.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.12-servicing.25608.3 @@ -124,7 +123,10 @@ 9.0.12 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.12 9.0.12 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26103.1 + 9.0.312-servicing.26104.7 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 9.0.12 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From 4060bb25895c25c47d6de81889f035dd97cd80ff Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 9 Feb 2026 12:11:01 +0000 Subject: [PATCH 115/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260209.1 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.26105.2 -> To Version 9.0.0-preview.26109.1 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f3ec3c5acc0d..7ad71179ae8c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -631,14 +631,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - 842418bc95557b003d439bbd7641474e9c97684a + 73164241bc7a13ea343bac4c2fa062c513dc1f12 - + https://github.com/dotnet/scenario-tests - 842418bc95557b003d439bbd7641474e9c97684a + 73164241bc7a13ea343bac4c2fa062c513dc1f12 From 7d7c98b0bfb21f3199fd02bc008d62ba385b4e67 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 10 Feb 2026 02:02:08 +0000 Subject: [PATCH 116/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260209.1 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.26105.2 -> To Version 9.0.0-preview.26109.1 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 07a06fa8873e..fee0104d2f31 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -597,14 +597,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - 842418bc95557b003d439bbd7641474e9c97684a + 73164241bc7a13ea343bac4c2fa062c513dc1f12 - + https://github.com/dotnet/scenario-tests - 842418bc95557b003d439bbd7641474e9c97684a + 73164241bc7a13ea343bac4c2fa062c513dc1f12 From 761794d874195784327e4d51f805f0d7fae09eec Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 10 Feb 2026 02:02:34 +0000 Subject: [PATCH 117/133] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20260209.3 On relative base path root Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 9.0.0-alpha.1.26070.3 -> To Version 9.0.0-alpha.1.26109.3 --- eng/Version.Details.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f3ec3c5acc0d..bead67d4de51 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -451,9 +451,9 @@ - + https://github.com/dotnet/source-build-reference-packages - d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc + 2060a0a1a17bed13cf046043fb3011bf0e5af58b From d71d920d25d8ba5e85e48b6321ae5e805567075b Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Tue, 10 Feb 2026 04:35:58 -0600 Subject: [PATCH 118/133] Fix vmr-license-scan pipeline for 1ES template compatibility (#52919) --- .../eng/pipelines/vmr-license-scan.yml | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml b/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml index 207fda578241..4ce3850fd029 100644 --- a/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml +++ b/src/SourceBuild/content/eng/pipelines/vmr-license-scan.yml @@ -48,6 +48,10 @@ variables: extends: template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates parameters: + containers: + licenseScanContainer: + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-source-build-test-amd64 + options: '--memory=12g' pool: name: NetCore1ESPool-Svc-Internal image: 1es-ubuntu-2204 @@ -93,15 +97,21 @@ extends: - job: LicenseScan dependsOn: Setup - container: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-source-build-test-amd64 - options: '--memory=12g' + container: licenseScanContainer pool: name: NetCore1ESPool-Svc-Internal demands: ImageOverride -equals 1es-ubuntu-2204 timeoutInMinutes: 420 strategy: matrix: $[ dependencies.Setup.outputs['GetMatrix.matrix'] ] + templateContext: + outputs: + - output: pipelineArtifact + displayName: Publish BuildLogs + continueOnError: true + condition: succeededOrFailed() + targetPath: '$(Build.StagingDirectory)/BuildLogs' + artifactName: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) steps: - script: > @@ -146,12 +156,6 @@ extends: continueOnError: true condition: succeededOrFailed() - - publish: '$(Build.StagingDirectory)/BuildLogs' - artifact: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt) - displayName: Publish BuildLogs - continueOnError: true - condition: succeededOrFailed() - - task: PublishTestResults@2 displayName: Publish Test Results condition: succeededOrFailed() @@ -171,7 +175,7 @@ extends: name: NetCore1ESPool-Svc-Internal demands: ImageOverride -equals 1es-ubuntu-2204 variables: - - template: templates/variables/pipelines.yml + - template: /eng/pipelines/templates/variables/pipelines.yml@self steps: - script: | @@ -181,7 +185,7 @@ extends: displayName: Install .NET SDK workingDirectory: $(Build.SourcesDirectory) - - template: templates/steps/download-pipeline-artifact.yml + - template: /eng/pipelines/templates/steps/download-pipeline-artifact.yml@self parameters: pipeline: $(SOURCE_BUILD_LICENSE_SCAN_PIPELINE_ID) buildId: $(Build.BuildId) @@ -193,7 +197,7 @@ extends: find $(Pipeline.Workspace)/Artifacts -type f -exec mv {} $(Pipeline.Workspace)/Artifacts \; displayName: Move Artifacts to root - - template: templates/steps/create-baseline-update-pr.yml + - template: /eng/pipelines/templates/steps/create-baseline-update-pr.yml@self parameters: dotnetPath: $(DotNetPath) pipeline: license From e2bff1259e19722f38d00b22bff679dd2fc8f849 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 10:37:04 +0000 Subject: [PATCH 119/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index da7e3b7dff72..b7e3ac4dbe09 100644 --- a/NuGet.config +++ b/NuGet.config @@ -27,15 +27,17 @@ + + - + - + @@ -61,11 +63,11 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f3ec3c5acc0d..07a06fa8873e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + 74626d2400b13a71525dd4d1ee6697e265b8b019 - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + 74626d2400b13a71525dd4d1ee6697e265b8b019 - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a - https://github.com/dotnet/emsdk f364bf26bf50d8cbdd8652d284d25a8ccb55039a @@ -73,67 +69,67 @@ f364bf26bf50d8cbdd8652d284d25a8ccb55039a - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ f736effe82a61eb6f5eba46e4173eae3b7d3dffd - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore f736effe82a61eb6f5eba46e4173eae3b7d3dffd - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - d968306ccb2fe6d2834ba92bbcad7cc70a8c0edc + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index 8f49af6cde76..0de56b72269f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.12-servicing.25608.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.12-servicing.25608.3 @@ -124,7 +123,10 @@ 9.0.12 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.12 9.0.12 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26108.1 + 9.0.312-servicing.26108.5 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 9.0.12 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From e366ad12d6f7953872467fb724298270cf15f1b2 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 11 Feb 2026 02:02:44 +0000 Subject: [PATCH 120/133] Update dependencies from https://github.com/dotnet/arcade build 20260210.2 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26106.3 -> To Version 9.0.0-beta.26110.2 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 8 ++++---- global.json | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f3ec3c5acc0d..87abfa7b69f3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -589,34 +589,34 @@ - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 diff --git a/eng/Versions.props b/eng/Versions.props index 8f49af6cde76..704ec37dc0cc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -270,10 +270,10 @@ - 9.0.0-beta.26106.3 - 9.0.0-beta.26106.3 - 9.0.0-beta.26106.3 - 9.0.0-beta.26106.3 + 9.0.0-beta.26110.2 + 9.0.0-beta.26110.2 + 9.0.0-beta.26110.2 + 9.0.0-beta.26110.2 diff --git a/global.json b/global.json index e233c689de71..e6d02d66dc7c 100644 --- a/global.json +++ b/global.json @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26106.3", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26106.3", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26110.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26110.2", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From 497a379ac23510d3689a42aa56d0d97c49dd682b Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 11 Feb 2026 02:02:54 +0000 Subject: [PATCH 121/133] Update dependencies from https://github.com/dotnet/arcade build 20260210.2 On relative base path root Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.SignTool , Microsoft.DotNet.XliffTasks , Microsoft.DotNet.XUnitExtensions From Version 9.0.0-beta.26106.3 -> To Version 9.0.0-beta.26110.2 --- eng/Version.Details.xml | 28 ++++++++++++++-------------- eng/Versions.props | 8 ++++---- global.json | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1d821ada4b3b..a3487af536ad 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -555,34 +555,34 @@ - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - + https://github.com/dotnet/arcade - 69a6ee9b0f059a101093ebd06560f68ce797358b + 0279dbd04bd1537e13ae3c1f003edf56acfaf123 diff --git a/eng/Versions.props b/eng/Versions.props index f3a125efde94..d8f93480da17 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -272,10 +272,10 @@ - 9.0.0-beta.26106.3 - 9.0.0-beta.26106.3 - 9.0.0-beta.26106.3 - 9.0.0-beta.26106.3 + 9.0.0-beta.26110.2 + 9.0.0-beta.26110.2 + 9.0.0-beta.26110.2 + 9.0.0-beta.26110.2 diff --git a/global.json b/global.json index e233c689de71..e6d02d66dc7c 100644 --- a/global.json +++ b/global.json @@ -17,8 +17,8 @@ "cmake": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26106.3", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26106.3", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.26110.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.26110.2", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.DotNet.CMake.Sdk": "9.0.0-beta.24217.1" } From 911b8eec91c3aa66f6f42191ab0a39c26f31d9f7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:03:14 +0000 Subject: [PATCH 122/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 17 +- eng/Version.Details.xml | 476 +++++++++++++++++++--------------------- eng/Versions.props | 203 ++++++++--------- 3 files changed, 336 insertions(+), 360 deletions(-) diff --git a/NuGet.config b/NuGet.config index da7e3b7dff72..721414b53f2a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -24,20 +24,26 @@ + + + + - + + - + + @@ -61,15 +67,18 @@ + + - - + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bead67d4de51..1d821ada4b3b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,56 +1,56 @@ - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + 74626d2400b13a71525dd4d1ee6697e265b8b019 - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + 74626d2400b13a71525dd4d1ee6697e265b8b019 - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + b73682307aa0128c5edbec94c2e6a070d13ae6bb - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 @@ -59,344 +59,310 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a - - - https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/emsdk - f364bf26bf50d8cbdd8652d284d25a8ccb55039a + 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 9b9a26408ddd07dc51c232082af1ca6863af7bc9 + 73b82230e8d1e2714898e93e46a0b1b24b66a51c - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 58060180f2776452976616ae4894118dfd21f8d5 + 86af53614f2e96919c6daa97a0d20037e1d1814d - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd - - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - b05fe71693c6c70b537911f88865ea456a9015f5 + 585a409cea7aef1ccb4a66f9c3999e8079ae9c1e - + https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 58060180f2776452976616ae4894118dfd21f8d5 + 86af53614f2e96919c6daa97a0d20037e1d1814d https://github.com/dotnet/xdt @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - 2060a0a1a17bed13cf046043fb3011bf0e5af58b + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae @@ -503,89 +469,89 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - f736effe82a61eb6f5eba46e4173eae3b7d3dffd + 087328de5f1e0067be48d87295ae8d92064a1535 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 @@ -619,9 +585,9 @@ 69a6ee9b0f059a101093ebd06560f68ce797358b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2f124007573374800632d39177cde00ca9fe1ef0 + 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 https://github.com/dotnet/arcade-services diff --git a/eng/Versions.props b/eng/Versions.props index 8f49af6cde76..f3a125efde94 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,90 +76,92 @@ 1.1.0-beta.25317.4 - - 9.0.12-servicing.25608.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.13-servicing.26064.3 - 9.0.12 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.0-rc.1.23414.4 - 9.0.12-servicing.25606.9 - 9.0.12-servicing.25606.9 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13-servicing.26063.17 + 9.0.13-servicing.26063.17 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 2.1.0 - 9.0.12 + 9.0.13 8.0.0 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 8.0.0 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 - 9.0.12 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 9.0.13 + 4.5.1 + 4.5.5 8.0.5 - 9.0.12 - 9.0.12 + 4.5.4 + 9.0.13 + 9.0.13 - 9.0.12-servicing.25609.4 - 9.0.12-servicing.25609.4 - 9.0.12 - 9.0.12 + 9.0.13-servicing.26065.7 + 9.0.13-servicing.26065.7 + 9.0.13 + 9.0.13 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,65 +182,65 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26108.1 + 9.0.312-servicing.26108.5 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 - 9.0.12 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12 - 9.0.12 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 - 9.0.12-servicing.25609.3 + 9.0.13 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13 + 9.0.13 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 + 9.0.13-servicing.26064.9 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 - 9.0.12-rtm.25609.3 - 9.0.12-rtm.25609.3 + 9.0.13-rtm.26065.1 + 9.0.13-rtm.26065.1 @@ -317,8 +319,7 @@ 15.0.9617 18.0.9617 - 9.0.12-servicing.25602.39 - 9.0.12 + 9.0.13 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) 9.0.100$([System.Text.RegularExpressions.Regex]::Match($(EmscriptenWorkloadManifestVersion), `-(?!rtm)[A-z]*[\.]*\d*`)) From 79a4e4eaf4c56a12a5f6d1af162bbe6e1da9bfbc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 11 Feb 2026 05:08:48 +0000 Subject: [PATCH 123/133] Update dependencies from https://github.com/dotnet/templating build 20260210.7 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.312 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.312-servicing.26108.5 -> To Version 9.0.312-servicing.26110.7 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 721414b53f2a..69f97bfad01a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -40,7 +40,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1d821ada4b3b..68d55f773bbe 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - 74626d2400b13a71525dd4d1ee6697e265b8b019 + 0a9fd5d5d289bf7e261308745d73c8198b0cc873 - + https://github.com/dotnet/templating - 74626d2400b13a71525dd4d1ee6697e265b8b019 + 0a9fd5d5d289bf7e261308745d73c8198b0cc873 diff --git a/eng/Versions.props b/eng/Versions.props index f3a125efde94..68fcabe68df3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26108.5 + 9.0.312-servicing.26110.7 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 87a55598a32409dc83cf6917b361b34cfceff2bc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 11 Feb 2026 05:09:46 +0000 Subject: [PATCH 124/133] Update dependencies from https://github.com/dotnet/templating build 20260210.6 On relative base path root Microsoft.SourceBuild.Intermediate.templating , Microsoft.TemplateEngine.Mocks From Version 9.0.115-servicing.26108.1 -> To Version 9.0.115-servicing.26110.6 Microsoft.TemplateEngine.Abstractions From Version 9.0.115 -> To Version 9.0.115 --- NuGet.config | 2 +- eng/Version.Details.xml | 10 +++++----- eng/Versions.props | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/NuGet.config b/NuGet.config index da7e3b7dff72..f2fe751b74b3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -35,7 +35,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6ac20710bcee..fb6acbb722f7 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,16 +3,16 @@ https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + d138822c8195880da116db49511027381c064236 - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + d138822c8195880da116db49511027381c064236 - + https://github.com/dotnet/templating - 20e5f50fede1288b66b7fb20232ecb7ae685437b + d138822c8195880da116db49511027381c064236 diff --git a/eng/Versions.props b/eng/Versions.props index 68d8d9ccdf94..ebd1e21af120 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -193,7 +193,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26108.1 + 9.0.115-servicing.26110.6 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 6278e9dc6904d87ec8947415e5bbdfbf5f2bced1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 11 Feb 2026 07:16:51 +0000 Subject: [PATCH 125/133] Update dependencies from https://github.com/dotnet/templating build 20260210.10 On relative base path root Microsoft.TemplateEngine.Abstractions From Version 9.0.312 -> To Version 9.0.312 Microsoft.TemplateEngine.Mocks From Version 9.0.312-servicing.26110.7 -> To Version 9.0.312-servicing.26110.10 --- NuGet.config | 2 +- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NuGet.config b/NuGet.config index 69f97bfad01a..4304833a813e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -40,7 +40,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4e46c49e97f2..f004ee3e77f3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,11 +3,11 @@ https://github.com/dotnet/templating - 0a9fd5d5d289bf7e261308745d73c8198b0cc873 + c9e4dfdd52dacef063c19c7c582bf603a28c0ae9 - + https://github.com/dotnet/templating - 0a9fd5d5d289bf7e261308745d73c8198b0cc873 + c9e4dfdd52dacef063c19c7c582bf603a28c0ae9 diff --git a/eng/Versions.props b/eng/Versions.props index c49fa5b5724a..5bc61451ec22 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -195,7 +195,7 @@ $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.312-servicing.26110.7 + 9.0.312-servicing.26110.10 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) From 93796bbf0411f14bdb495730fcd5368759f6a410 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 11 Feb 2026 12:24:28 +0000 Subject: [PATCH 126/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260211.1 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.26109.1 -> To Version 9.0.0-preview.26111.1 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bccd1e3a8bca..9699d1380fbd 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -631,14 +631,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - 73164241bc7a13ea343bac4c2fa062c513dc1f12 + ba4c313fc4aac36d0a08eeb49e7b496b2e23cf94 - + https://github.com/dotnet/scenario-tests - 73164241bc7a13ea343bac4c2fa062c513dc1f12 + ba4c313fc4aac36d0a08eeb49e7b496b2e23cf94 From 7268dddfa31506fdea839c93337d23421949c0d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 01:47:13 +0000 Subject: [PATCH 127/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index a15bbd5afd60..69f97bfad01a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -29,8 +29,10 @@ + + - + @@ -38,7 +40,7 @@ - + @@ -65,12 +67,12 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ce3fb6a3720b..4e46c49e97f2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - d138822c8195880da116db49511027381c064236 + 0a9fd5d5d289bf7e261308745d73c8198b0cc873 - + https://github.com/dotnet/templating - d138822c8195880da116db49511027381c064236 + 0a9fd5d5d289bf7e261308745d73c8198b0cc873 - + https://github.com/dotnet/templating - d138822c8195880da116db49511027381c064236 + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - 8f9e359ad95f422aec3c31c21ab188166f655842 - https://github.com/dotnet/emsdk 8f9e359ad95f422aec3c31c21ab188166f655842 @@ -73,67 +69,67 @@ 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 087328de5f1e0067be48d87295ae8d92064a1535 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ 087328de5f1e0067be48d87295ae8d92064a1535 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 087328de5f1e0067be48d87295ae8d92064a1535 - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - 2060a0a1a17bed13cf046043fb3011bf0e5af58b + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index 0248fde69373..c49fa5b5724a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.13-servicing.26064.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.13-servicing.26064.3 @@ -124,7 +123,10 @@ 9.0.13 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.13 9.0.13 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26110.6 + 9.0.312-servicing.26110.7 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.13-servicing.26056.4 9.0.13 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From 59b85dfa6961b1a6b08d43fffc13751ea5d53099 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 12 Feb 2026 02:02:34 +0000 Subject: [PATCH 128/133] Update dependencies from https://github.com/dotnet/scenario-tests build 20260211.1 On relative base path root Microsoft.SourceBuild.Intermediate.scenario-tests , Microsoft.DotNet.ScenarioTests.SdkTemplateTests From Version 9.0.0-preview.26109.1 -> To Version 9.0.0-preview.26111.1 --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4e46c49e97f2..b28060a7e054 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -597,14 +597,14 @@ https://github.com/dotnet/arcade-services e156e649f28395d9d0ee1e848225a689b59e0fd3 - + https://github.com/dotnet/scenario-tests - 73164241bc7a13ea343bac4c2fa062c513dc1f12 + ba4c313fc4aac36d0a08eeb49e7b496b2e23cf94 - + https://github.com/dotnet/scenario-tests - 73164241bc7a13ea343bac4c2fa062c513dc1f12 + ba4c313fc4aac36d0a08eeb49e7b496b2e23cf94 From 4fac7b75b98ce061e374c12a6feeb3695f336152 Mon Sep 17 00:00:00 2001 From: Ella Hathaway <67609881+ellahathaway@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:17:11 -0800 Subject: [PATCH 129/133] Update vmr-sync images to ubuntu 2204 (#52992) --- eng/pipelines/templates/jobs/vmr-synchronization.yml | 4 ++-- eng/vmr-sync.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/pipelines/templates/jobs/vmr-synchronization.yml b/eng/pipelines/templates/jobs/vmr-synchronization.yml index cbb952202f7b..bb2738990051 100644 --- a/eng/pipelines/templates/jobs/vmr-synchronization.yml +++ b/eng/pipelines/templates/jobs/vmr-synchronization.yml @@ -43,11 +43,11 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $(DncEngPublicBuildPool) - image: 1es-ubuntu-2004-open + image: 1es-ubuntu-2204-open os: linux ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals 1es-ubuntu-2004 + demands: ImageOverride -equals 1es-ubuntu-2204 os: linux steps: diff --git a/eng/vmr-sync.sh b/eng/vmr-sync.sh index 10d4b1f65f98..ba3dc2bb249f 100755 --- a/eng/vmr-sync.sh +++ b/eng/vmr-sync.sh @@ -239,7 +239,7 @@ set -e highlight 'Installing .NET, preparing the tooling..' source "$scriptroot/common/tools.sh" InitializeDotNetCli true -dotnetDir=$( cd $scriptroot/../.dotnet/; pwd -P ) +dotnetDir=$_InitializeDotNetCli dotnet=$dotnetDir/dotnet "$dotnet" tool restore From 5cc9096bbbe7cf01b9ad2bc8896a1e11d10d8882 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 18:18:21 +0000 Subject: [PATCH 130/133] Reset files to release/9.0.3xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Versions.props - eng/common/* --- NuGet.config | 10 +- eng/Version.Details.xml | 224 +++++++++++++++++----------------------- eng/Versions.props | 95 ++++++++--------- 3 files changed, 149 insertions(+), 180 deletions(-) diff --git a/NuGet.config b/NuGet.config index a15bbd5afd60..4304833a813e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -29,8 +29,10 @@ + + - + @@ -38,7 +40,7 @@ - + @@ -65,12 +67,12 @@ + + - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 68d193a52bd5..fe6a12d33c45 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,18 +1,18 @@ - + https://github.com/dotnet/templating - d138822c8195880da116db49511027381c064236 + c9e4dfdd52dacef063c19c7c582bf603a28c0ae9 - + https://github.com/dotnet/templating - d138822c8195880da116db49511027381c064236 + c9e4dfdd52dacef063c19c7c582bf603a28c0ae9 - + https://github.com/dotnet/templating - d138822c8195880da116db49511027381c064236 + b73682307aa0128c5edbec94c2e6a070d13ae6bb @@ -59,10 +59,6 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - 8f9e359ad95f422aec3c31c21ab188166f655842 - https://github.com/dotnet/emsdk 8f9e359ad95f422aec3c31c21ab188166f655842 @@ -73,67 +69,67 @@ 8f9e359ad95f422aec3c31c21ab188166f655842 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/msbuild - 07da1b9a89da6d00c5a5a6a385cdcebfdfed7110 + 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/fsharp - 47d4e3f91e4e5414b6dafbf14288b9c5a798ef99 + 14987c804f33917bf15f4c25e0cd16ecd01807f4 - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn - fc52718eccdb37693a40a518b1178b1e23114e68 + 450493a9b4ec6337bced0120e97cb76f4ed783db https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore @@ -143,91 +139,91 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 087328de5f1e0067be48d87295ae8d92064a1535 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/nuget/nuget.client - 42bfb4554167e1d2fc2b950728d9bd8164f806c1 + 0da03caba83448ee887f0f1846dd05e1f1705d45 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 - + https://github.com/microsoft/vstest - bc9161306b23641b0364b8f93d546da4d48da1eb + 51441adcd6c424ae7315d66ce7e96baf34d70369 @@ -325,22 +321,22 @@ 087328de5f1e0067be48d87295ae8d92064a1535 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 - + https://github.com/dotnet/razor - cff92f3cc3f19a607ddbb7a0cddfbccf87a1c061 + 41f3afd466695ac2460260431537fe4d779ff446 @@ -359,36 +355,6 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore 087328de5f1e0067be48d87295ae8d92064a1535 - - https://github.com/dotnet/test-templates - 0385265f4d0b6413d64aea0223172366a9b9858c - - - https://github.com/dotnet/test-templates - 307b8f538d83a955d8f6dd909eee41a5555f2f4d - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - becc4bd157cd6608b51a5ffe414a5d2de6330272 - - - https://github.com/dotnet/test-templates - 49c9ad01f057b3c6352bbec12b117acc2224493c - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - - - https://github.com/dotnet/test-templates - 47c90e140b027225b799ca8413af10ee3d5f1126 - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms @@ -408,18 +374,18 @@ 63ae81154c50a1cf9287cc47d8351d55b4289e6d - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c - - https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + + https://github.com/dotnet/roslyn + 450493a9b4ec6337bced0120e97cb76f4ed783db - + https://github.com/dotnet/roslyn-analyzers - 5ef1abb57ce3df89eae65ecadeb1ddbab323ae05 + 742cc53ecfc7e7245f950e5ba58268ed2829913c @@ -445,15 +411,15 @@ - + https://github.com/dotnet/source-build-externals - 16c380d1ce5fa0b24e232251c31cb013bbf3365f + 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - + https://github.com/dotnet/source-build-reference-packages - 2060a0a1a17bed13cf046043fb3011bf0e5af58b + 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae diff --git a/eng/Versions.props b/eng/Versions.props index a2de6825ec24..fad4f9534e6e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -5,8 +5,8 @@ 9 0 - 1 - 15 + 3 + 12 @@ -18,15 +18,15 @@ true release - rtm + preview rtm servicing - - + 0 true + true 6.0.1 @@ -35,7 +35,7 @@ 17 36 20 - $([MSBuild]::Add($(VersionFeature), 10)) + $([MSBuild]::Add($(VersionFeature), 13)) <_NET70ILLinkPackVersion>7.0.100-1.23211.1 @@ -76,13 +76,12 @@ 1.1.0-beta.25317.4 - - 9.0.13-servicing.26064.3 + + 9.1.0-preview.1.24555.3 - - - 1.1.0-rtm.25262.1 + + 9.0.13-servicing.26064.3 @@ -124,7 +123,10 @@ 9.0.13 + 4.5.1 + 4.5.5 8.0.5 + 4.5.4 9.0.13 9.0.13 @@ -137,29 +139,29 @@ - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4-rc.9 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 - 6.12.4 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 + 6.14.0-rc.116 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 - 17.12.0-release-24508-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 + 17.14.1-release-25428-01 - 9.0.0-preview.26075.3 - 3.11.0-beta1.26075.3 + 9.0.0-preview.26055.3 + 3.12.0-beta1.26064.1 @@ -170,8 +172,8 @@ Some .NET Framework tasks and the resolver will need to run in a VS/MSBuild that is older than the very latest, based on what we want the SDK to support. So use a version that matches the version - in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 - to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. + in minimumMSBuildVersion. Note that MSBuild has started versioning before release so the version we use as the Minimum should be .0 + to ensure we load in VS but the version we build against should be the version of MSBuild that ships in the .0 VS release. In these cases, we don't want to use MicrosoftBuildVersion and other associated properties that are updated by the VMR infrastructure. So, we read this version from the 'minimumMSBuildVersion' file in non-source-only cases into MicrosoftBuildMinimumVersion, @@ -180,38 +182,38 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.12.57 - 17.12.57-preview-26069-01 + 17.14.43 + 17.14.43-servicing-26070-01 17.11.48 17.12 - 9.0.115 + 9.0.312 $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) - 9.0.115-servicing.26110.6 + 9.0.312-servicing.26110.10 $(MicrosoftTemplateEngineMocksPackageVersion) $(MicrosoftTemplateEngineAbstractionsPackageVersion) $(MicrosoftTemplateEngineMocksPackageVersion) - 12.9.101-beta.25070.7 + 13.9.303-beta.25361.1 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 - 4.12.0-3.25609.5 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 + 4.14.0-3.26064.1 @@ -231,9 +233,9 @@ - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 - 9.0.0-preview.26069.1 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 + 9.0.0-preview.26064.2 @@ -317,7 +319,6 @@ 15.0.9617 18.0.9617 - 9.0.13-servicing.26056.4 9.0.13 $(MicrosoftNETWorkloadEmscriptenCurrentManifest90100PackageVersion) From 998e8beb85344b3bb7db34a31a2c6827a80dcde5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Feb 2026 16:34:43 -0800 Subject: [PATCH 131/133] [release/9.0.3xx] Remove duplicate containers node (#53022) Co-authored-by: Marc Paine --- .vsts-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 0ee21bcbac91..b4c1eb53de50 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -83,6 +83,8 @@ extends: image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-arm-alpine ubuntu2204DebPkg: image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-debpkg + sourceBuildManagedContainer: + image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9 sdl: sourceAnalysisPool: name: $(DncEngInternalBuildPool) @@ -92,9 +94,6 @@ extends: componentgovernance: # Refdoc: https://docs.opensource.microsoft.com/tools/cg/component-detection/variables/ ignoreDirectories: artifacts, .packages - containers: - sourceBuildManagedContainer: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9 stages: ############### BUILD STAGE ############### From 40e2cf378ed2114dd16783e8965aa519945e6515 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 3 Mar 2026 09:19:07 -0800 Subject: [PATCH 132/133] Update branding on release/9.0.3xx --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index fad4f9534e6e..3ac2fdf0ef7a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -6,7 +6,7 @@ 9 0 3 - 12 + 13 From d0756d159ad702b674201318fbccec65d4c0550a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Mar 2026 18:33:35 +0000 Subject: [PATCH 133/133] Reset files to release/10.0.1xx Reset patterns: - global.json - NuGet.config - eng/Version.Details.xml - eng/Version.Details.props - eng/common/* --- NuGet.config | 59 +- eng/Version.Details.props | 290 +++++ eng/Version.Details.xml | 1081 ++++++++--------- eng/common/CIBuild.cmd | 2 +- eng/common/SetupNugetSources.ps1 | 90 +- eng/common/SetupNugetSources.sh | 192 +-- eng/common/build.ps1 | 11 +- eng/common/build.sh | 33 +- eng/common/cibuild.sh | 2 +- eng/common/core-templates/job/job.yml | 48 +- eng/common/core-templates/job/onelocbuild.yml | 35 +- .../job/publish-build-assets.yml | 79 +- .../core-templates/job/source-build.yml | 15 +- .../job/source-index-stage1.yml | 47 +- .../core-templates/jobs/codeql-build.yml | 1 - eng/common/core-templates/jobs/jobs.yml | 15 +- .../core-templates/jobs/source-build.yml | 23 +- .../core-templates/post-build/post-build.yml | 26 +- .../steps/cleanup-microbuild.yml | 28 + .../core-templates/steps/generate-sbom.yml | 2 +- .../steps/get-delegation-sas.yml | 11 +- .../steps/install-microbuild.yml | 110 ++ .../core-templates/steps/publish-logs.yml | 7 +- .../core-templates/steps/source-build.yml | 88 +- .../steps/source-index-stage1-publish.yml | 35 + eng/common/cross/arm64/tizen/tizen.patch | 2 +- eng/common/cross/build-android-rootfs.sh | 49 +- eng/common/cross/build-rootfs.sh | 237 ++-- eng/common/cross/install-debs.py | 334 +++++ eng/common/cross/tizen-build-rootfs.sh | 0 eng/common/cross/tizen-fetch.sh | 9 +- eng/common/cross/toolchain.cmake | 82 +- eng/common/darc-init.sh | 2 +- eng/common/dotnet.cmd | 7 + eng/common/dotnet.ps1 | 11 + eng/common/dotnet.sh | 26 + eng/common/generate-locproject.ps1 | 49 +- eng/common/generate-sbom-prep.sh | 0 eng/common/native/install-dependencies.sh | 62 + eng/common/post-build/publish-using-darc.ps1 | 9 +- eng/common/post-build/redact-logs.ps1 | 5 +- eng/common/sdk-task.ps1 | 14 +- eng/common/sdk-task.sh | 121 ++ eng/common/sdl/packages.config | 2 +- eng/common/templates-official/job/job.yml | 4 +- .../steps/publish-build-artifacts.yml | 7 +- .../steps/source-index-stage1-publish.yml | 7 + eng/common/templates/job/job.yml | 4 +- .../steps/publish-build-artifacts.yml | 8 +- .../steps/source-index-stage1-publish.yml | 7 + eng/common/templates/steps/vmr-sync.yml | 186 +++ eng/common/templates/vmr-build-pr.yml | 43 + eng/common/tools.ps1 | 71 +- eng/common/tools.sh | 81 +- eng/common/vmr-sync.ps1 | 164 +++ eng/common/vmr-sync.sh | 227 ++++ global.json | 21 +- 57 files changed, 2926 insertions(+), 1255 deletions(-) create mode 100644 eng/Version.Details.props mode change 100644 => 100755 eng/common/SetupNugetSources.sh create mode 100644 eng/common/core-templates/steps/cleanup-microbuild.yml create mode 100644 eng/common/core-templates/steps/install-microbuild.yml create mode 100644 eng/common/core-templates/steps/source-index-stage1-publish.yml create mode 100755 eng/common/cross/install-debs.py mode change 100644 => 100755 eng/common/cross/tizen-build-rootfs.sh mode change 100644 => 100755 eng/common/cross/tizen-fetch.sh create mode 100644 eng/common/dotnet.cmd create mode 100644 eng/common/dotnet.ps1 create mode 100755 eng/common/dotnet.sh mode change 100644 => 100755 eng/common/generate-sbom-prep.sh create mode 100755 eng/common/native/install-dependencies.sh create mode 100755 eng/common/sdk-task.sh create mode 100644 eng/common/templates-official/steps/source-index-stage1-publish.yml create mode 100644 eng/common/templates/steps/source-index-stage1-publish.yml create mode 100644 eng/common/templates/steps/vmr-sync.yml create mode 100644 eng/common/templates/vmr-build-pr.yml create mode 100755 eng/common/vmr-sync.ps1 create mode 100755 eng/common/vmr-sync.sh diff --git a/NuGet.config b/NuGet.config index 4304833a813e..cbbfbf4156a5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,48 +3,15 @@ - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - @@ -55,6 +22,8 @@ + + @@ -64,22 +33,14 @@ + + + - - - - - - - - - - - diff --git a/eng/Version.Details.props b/eng/Version.Details.props new file mode 100644 index 000000000000..8b35e386fec7 --- /dev/null +++ b/eng/Version.Details.props @@ -0,0 +1,290 @@ + + + + + 10.0.6-servicing.26152.114 + 10.0.6-servicing.26152.114 + 10.0.6-servicing.26152.114 + 10.0.6-servicing.26152.114 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.6-servicing.26152.114 + 10.0.0-preview.26152.114 + 10.0.6 + 10.0.6 + 18.0.11 + 18.0.11-servicing-26152-114 + 7.0.2-rc.15314 + 10.0.106 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 10.0.0-preview.26152.114 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 2.0.0-preview.1.26152.114 + 2.2.6 + 10.0.0-beta.26152.114 + 10.0.0-beta.26152.114 + 10.0.0-beta.26152.114 + 10.0.0-beta.26152.114 + 10.0.0-beta.26152.114 + 10.0.0-beta.26152.114 + 10.0.6 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.6-servicing.26152.114 + 10.0.0-beta.26152.114 + 10.0.0-beta.26152.114 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 14.0.106-servicing.26152.114 + 10.0.6 + 5.0.0-2.26152.114 + 5.0.0-2.26152.114 + 10.0.6-servicing.26152.114 + 10.0.6 + 10.0.6 + 10.0.0-preview.7.25377.103 + 10.0.0-preview.26152.114 + 10.0.6-servicing.26152.114 + 18.0.2-release-26152-114 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.106 + 10.0.106 + 10.0.106 + 10.0.106 + 10.0.106 + 10.0.106 + 10.0.106 + 10.0.106 + 10.0.106-servicing.26152.114 + 10.0.106 + 10.0.106-servicing.26152.114 + 10.0.106 + 10.0.106 + 10.0.106-servicing.26152.114 + 18.0.2-release-26152-114 + 18.0.2-release-26152-114 + 3.2.6 + 10.0.6 + 10.0.6-servicing.26152.114 + 10.0.6 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 7.0.2-rc.15314 + 10.0.6 + 2.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + 10.0.6 + + 2.1.0 + + 2.2.0-preview.26152.5 + 4.2.0-preview.26152.5 + + + + + $(dotnetdevcertsPackageVersion) + $(dotnetuserjwtsPackageVersion) + $(dotnetusersecretsPackageVersion) + $(MicrosoftAspNetCoreAnalyzersPackageVersion) + $(MicrosoftAspNetCoreAppRefPackageVersion) + $(MicrosoftAspNetCoreAppRefInternalPackageVersion) + $(MicrosoftAspNetCoreAuthenticationFacebookPackageVersion) + $(MicrosoftAspNetCoreAuthenticationGooglePackageVersion) + $(MicrosoftAspNetCoreAuthenticationMicrosoftAccountPackageVersion) + $(MicrosoftAspNetCoreAuthorizationPackageVersion) + $(MicrosoftAspNetCoreComponentsPackageVersion) + $(MicrosoftAspNetCoreComponentsAnalyzersPackageVersion) + $(MicrosoftAspNetCoreComponentsFormsPackageVersion) + $(MicrosoftAspNetCoreComponentsSdkAnalyzersPackageVersion) + $(MicrosoftAspNetCoreComponentsWebPackageVersion) + $(MicrosoftAspNetCoreComponentsWebAssemblyPackageVersion) + $(MicrosoftAspNetCoreComponentsWebAssemblyServerPackageVersion) + $(MicrosoftAspNetCoreComponentsWebViewPackageVersion) + $(MicrosoftAspNetCoreDeveloperCertificatesXPlatPackageVersion) + $(MicrosoftAspNetCoreMetadataPackageVersion) + $(MicrosoftAspNetCoreMvcAnalyzersPackageVersion) + $(MicrosoftAspNetCoreMvcApiAnalyzersPackageVersion) + $(MicrosoftAspNetCoreMvcRazorExtensionsToolingInternalPackageVersion) + $(MicrosoftAspNetCoreTestHostPackageVersion) + $(MicrosoftBclAsyncInterfacesPackageVersion) + $(MicrosoftBuildPackageVersion) + $(MicrosoftBuildLocalizationPackageVersion) + $(MicrosoftBuildNuGetSdkResolverPackageVersion) + $(MicrosoftBuildTasksGitPackageVersion) + $(MicrosoftCodeAnalysisPackageVersion) + $(MicrosoftCodeAnalysisBuildClientPackageVersion) + $(MicrosoftCodeAnalysisCSharpPackageVersion) + $(MicrosoftCodeAnalysisCSharpCodeStylePackageVersion) + $(MicrosoftCodeAnalysisCSharpFeaturesPackageVersion) + $(MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion) + $(MicrosoftCodeAnalysisPublicApiAnalyzersPackageVersion) + $(MicrosoftCodeAnalysisRazorToolingInternalPackageVersion) + $(MicrosoftCodeAnalysisWorkspacesCommonPackageVersion) + $(MicrosoftCodeAnalysisWorkspacesMSBuildPackageVersion) + $(MicrosoftDeploymentDotNetReleasesPackageVersion) + $(MicrosoftDiaSymReaderPackageVersion) + $(MicrosoftDotNetArcadeSdkPackageVersion) + $(MicrosoftDotNetBuildTasksInstallersPackageVersion) + $(MicrosoftDotNetBuildTasksTemplatingPackageVersion) + $(MicrosoftDotNetBuildTasksWorkloadsPackageVersion) + $(MicrosoftDotNetHelixSdkPackageVersion) + $(MicrosoftDotNetSignToolPackageVersion) + $(MicrosoftDotNetWebItemTemplates100PackageVersion) + $(MicrosoftDotNetWebProjectTemplates100PackageVersion) + $(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion) + $(MicrosoftDotNetWpfProjectTemplatesPackageVersion) + $(MicrosoftDotNetXliffTasksPackageVersion) + $(MicrosoftDotNetXUnitExtensionsPackageVersion) + $(MicrosoftExtensionsConfigurationIniPackageVersion) + $(MicrosoftExtensionsDependencyModelPackageVersion) + $(MicrosoftExtensionsFileProvidersAbstractionsPackageVersion) + $(MicrosoftExtensionsFileProvidersEmbeddedPackageVersion) + $(MicrosoftExtensionsFileSystemGlobbingPackageVersion) + $(MicrosoftExtensionsLoggingPackageVersion) + $(MicrosoftExtensionsLoggingAbstractionsPackageVersion) + $(MicrosoftExtensionsLoggingConsolePackageVersion) + $(MicrosoftExtensionsObjectPoolPackageVersion) + $(MicrosoftFSharpCompilerPackageVersion) + $(MicrosoftJSInteropPackageVersion) + $(MicrosoftNetCompilersToolsetPackageVersion) + $(MicrosoftNetCompilersToolsetFrameworkPackageVersion) + $(MicrosoftNETHostModelPackageVersion) + $(MicrosoftNETILLinkTasksPackageVersion) + $(MicrosoftNETRuntimeEmscripten3156Cachewinx64PackageVersion) + $(MicrosoftNETRuntimeEmscriptenSdkInternalPackageVersion) + $(MicrosoftNETSdkRazorSourceGeneratorsTransportPackageVersion) + $(MicrosoftNETSdkWindowsDesktopPackageVersion) + $(MicrosoftNETTestSdkPackageVersion) + $(MicrosoftNETCoreAppRefPackageVersion) + $(MicrosoftNETCorePlatformsPackageVersion) + $(MicrosoftSourceLinkAzureReposGitPackageVersion) + $(MicrosoftSourceLinkBitbucketGitPackageVersion) + $(MicrosoftSourceLinkCommonPackageVersion) + $(MicrosoftSourceLinkGitHubPackageVersion) + $(MicrosoftSourceLinkGitLabPackageVersion) + $(MicrosoftTemplateEngineAbstractionsPackageVersion) + $(MicrosoftTemplateEngineAuthoringTemplateVerifierPackageVersion) + $(MicrosoftTemplateEngineEdgePackageVersion) + $(MicrosoftTemplateEngineMocksPackageVersion) + $(MicrosoftTemplateEngineOrchestratorRunnableProjectsPackageVersion) + $(MicrosoftTemplateEngineTestHelperPackageVersion) + $(MicrosoftTemplateEngineUtilsPackageVersion) + $(MicrosoftTemplateSearchCommonPackageVersion) + $(MicrosoftTemplateSearchTemplateDiscoveryPackageVersion) + $(MicrosoftTestPlatformBuildPackageVersion) + $(MicrosoftTestPlatformCLIPackageVersion) + $(MicrosoftWebXdtPackageVersion) + $(MicrosoftWin32SystemEventsPackageVersion) + $(MicrosoftWindowsDesktopAppInternalPackageVersion) + $(MicrosoftWindowsDesktopAppRefPackageVersion) + $(NuGetBuildTasksPackageVersion) + $(NuGetBuildTasksConsolePackageVersion) + $(NuGetBuildTasksPackPackageVersion) + $(NuGetCommandLineXPlatPackageVersion) + $(NuGetCommandsPackageVersion) + $(NuGetCommonPackageVersion) + $(NuGetConfigurationPackageVersion) + $(NuGetCredentialsPackageVersion) + $(NuGetDependencyResolverCorePackageVersion) + $(NuGetFrameworksPackageVersion) + $(NuGetLibraryModelPackageVersion) + $(NuGetLocalizationPackageVersion) + $(NuGetPackagingPackageVersion) + $(NuGetProjectModelPackageVersion) + $(NuGetProtocolPackageVersion) + $(NuGetVersioningPackageVersion) + $(SystemCodeDomPackageVersion) + $(SystemCommandLinePackageVersion) + $(SystemComponentModelCompositionPackageVersion) + $(SystemCompositionAttributedModelPackageVersion) + $(SystemCompositionConventionPackageVersion) + $(SystemCompositionHostingPackageVersion) + $(SystemCompositionRuntimePackageVersion) + $(SystemCompositionTypedPartsPackageVersion) + $(SystemConfigurationConfigurationManagerPackageVersion) + $(SystemDiagnosticsDiagnosticSourcePackageVersion) + $(SystemFormatsAsn1PackageVersion) + $(SystemIOHashingPackageVersion) + $(SystemReflectionMetadataLoadContextPackageVersion) + $(SystemResourcesExtensionsPackageVersion) + $(SystemSecurityCryptographyPkcsPackageVersion) + $(SystemSecurityCryptographyProtectedDataPackageVersion) + $(SystemSecurityCryptographyXmlPackageVersion) + $(SystemSecurityPermissionsPackageVersion) + $(SystemServiceProcessServiceControllerPackageVersion) + $(SystemTextEncodingCodePagesPackageVersion) + $(SystemTextJsonPackageVersion) + $(SystemWindowsExtensionsPackageVersion) + + $(NETStandardLibraryRefPackageVersion) + + $(MicrosoftTestingPlatformPackageVersion) + $(MSTestPackageVersion) + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index fe6a12d33c45..11df99063e23 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,634 +1,577 @@ + - - https://github.com/dotnet/templating - c9e4dfdd52dacef063c19c7c582bf603a28c0ae9 - - - https://github.com/dotnet/templating - c9e4dfdd52dacef063c19c7c582bf603a28c0ae9 - - - - https://github.com/dotnet/templating - b73682307aa0128c5edbec94c2e6a070d13ae6bb - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - - https://github.com/dotnet/emsdk - 8f9e359ad95f422aec3c31c21ab188166f655842 - - - - https://github.com/dotnet/emsdk - 8f9e359ad95f422aec3c31c21ab188166f655842 - - - - https://github.com/dotnet/msbuild - 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - - - https://github.com/dotnet/msbuild - 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - - - - https://github.com/dotnet/msbuild - 2a0eb78b31025538b6e749ecd80dfabfcfa43a42 - - - - https://github.com/dotnet/fsharp - 14987c804f33917bf15f4c25e0cd16ecd01807f4 - - - - https://github.com/dotnet/fsharp - 14987c804f33917bf15f4c25e0cd16ecd01807f4 - - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 - - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 6a953e76162f3f079405f80e28664fa51b136740 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/nuget/nuget.client - 0da03caba83448ee887f0f1846dd05e1f1705d45 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/microsoft/vstest - 51441adcd6c424ae7315d66ce7e96baf34d70369 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/microsoft/vstest - 51441adcd6c424ae7315d66ce7e96baf34d70369 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/microsoft/vstest - 51441adcd6c424ae7315d66ce7e96baf34d70369 - - - - https://github.com/microsoft/vstest - 51441adcd6c424ae7315d66ce7e96baf34d70369 - + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 73b82230e8d1e2714898e93e46a0b1b24b66a51c - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 73b82230e8d1e2714898e93e46a0b1b24b66a51c - - - https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 73b82230e8d1e2714898e93e46a0b1b24b66a51c - - - https://dev.azure.com/dnceng/internal/_git/dotnet-windowsdesktop - 73b82230e8d1e2714898e93e46a0b1b24b66a51c - - - https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 86af53614f2e96919c6daa97a0d20037e1d1814d - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - - https://github.com/dotnet/razor - 41f3afd466695ac2460260431537fe4d779ff446 - - - https://github.com/dotnet/razor - 41f3afd466695ac2460260431537fe4d779ff446 - - - https://github.com/dotnet/razor - 41f3afd466695ac2460260431537fe4d779ff446 - - - - https://github.com/dotnet/razor - 41f3afd466695ac2460260431537fe4d779ff446 - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-winforms - 585a409cea7aef1ccb4a66f9c3999e8079ae9c1e - - - https://dev.azure.com/dnceng/internal/_git/dotnet-wpf - 86af53614f2e96919c6daa97a0d20037e1d1814d - - - https://github.com/dotnet/xdt - 63ae81154c50a1cf9287cc47d8351d55b4289e6d - - - - https://github.com/dotnet/xdt - 63ae81154c50a1cf9287cc47d8351d55b4289e6d - - - - https://github.com/dotnet/roslyn-analyzers - 742cc53ecfc7e7245f950e5ba58268ed2829913c - - - https://github.com/dotnet/roslyn - 450493a9b4ec6337bced0120e97cb76f4ed783db - - - - https://github.com/dotnet/roslyn-analyzers - 742cc53ecfc7e7245f950e5ba58268ed2829913c - - - - https://github.com/dotnet/command-line-api - 803d8598f98fb4efd94604b32627ee9407f246db - - - https://github.com/dotnet/command-line-api - 803d8598f98fb4efd94604b32627ee9407f246db + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - - https://github.com/dotnet/symreader - 0710a7892d89999956e8808c28e9dd0512bd53f3 - - - - https://github.com/dotnet/command-line-api - 803d8598f98fb4efd94604b32627ee9407f246db - - - - - https://github.com/dotnet/source-build-externals - 71dbdccd13f28cfd1a35649263b55ebbeab26ee7 - - - - - https://github.com/dotnet/source-build-reference-packages - 6092b62b7f35fddbd6bf31e19b2ab64bbe2443ae - - - - https://github.com/dotnet/deployment-tools - b2d5c0c5841de4bc036ef4c84b5db3532504e5f3 - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - - https://github.com/dotnet/sourcelink - 657ade4711e607cc4759e89e0943aa1ca8aadc63 - - - - - https://github.com/dotnet/deployment-tools - b2d5c0c5841de4bc036ef4c84b5db3532504e5f3 - - - - - https://github.com/dotnet/symreader - 0710a7892d89999956e8808c28e9dd0512bd53f3 - + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-aspnetcore - 087328de5f1e0067be48d87295ae8d92064a1535 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - - https://github.com/dotnet/arcade - 0279dbd04bd1537e13ae3c1f003edf56acfaf123 - - - - https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9ecbfd4f3f330dc9649bce49cb12570b19d48c87 - - - https://github.com/dotnet/arcade-services - e156e649f28395d9d0ee1e848225a689b59e0fd3 - - - https://github.com/dotnet/arcade-services - e156e649f28395d9d0ee1e848225a689b59e0fd3 - - - https://github.com/dotnet/scenario-tests - ba4c313fc4aac36d0a08eeb49e7b496b2e23cf94 - - - - https://github.com/dotnet/scenario-tests - ba4c313fc4aac36d0a08eeb49e7b496b2e23cf94 - - - - - https://github.com/dotnet/aspire - 5fa9337a84a52e9bd185d04d156eccbdcf592f74 - - - - https://github.com/dotnet/aspire - 5fa9337a84a52e9bd185d04d156eccbdcf592f74 - - - - https://github.com/dotnet/runtime - e77011b31a3e5c47d931248a64b47f9b2d47853d + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 + + + https://github.com/microsoft/testfx + ba7e7f2a1008e133900df93e270e051c52f4280a + + + https://github.com/microsoft/testfx + ba7e7f2a1008e133900df93e270e051c52f4280a + + + https://github.com/dotnet/dotnet + 4b20ff14ee9608ff6708b05d18d1488457704a87 diff --git a/eng/common/CIBuild.cmd b/eng/common/CIBuild.cmd index 56c2f25ac22f..ac1f72bf94e0 100644 --- a/eng/common/CIBuild.cmd +++ b/eng/common/CIBuild.cmd @@ -1,2 +1,2 @@ @echo off -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*" \ No newline at end of file +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*" diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 792b60b49d42..65ed3a8adef0 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -1,13 +1,14 @@ # This script adds internal feeds required to build commits that depend on internal package sources. For instance, -# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables -# disabled internal Maestro (darc-int*) feeds. +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly, +# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present. +# In addition, this script also enables disabled internal Maestro (darc-int*) feeds. # # Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # # See example call for this script below. # # - task: PowerShell@2 -# displayName: Setup Private Feeds Credentials +# displayName: Setup internal Feeds Credentials # condition: eq(variables['Agent.OS'], 'Windows_NT') # inputs: # filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1 @@ -34,19 +35,28 @@ Set-StrictMode -Version 2.0 . $PSScriptRoot\tools.ps1 +# Adds or enables the package source with the given name +function AddOrEnablePackageSource($sources, $disabledPackageSources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { + if ($disabledPackageSources -eq $null -or -not (EnableInternalPackageSource -DisabledPackageSources $disabledPackageSources -Creds $creds -PackageSourceName $SourceName)) { + AddPackageSource -Sources $sources -SourceName $SourceName -SourceEndPoint $SourceEndPoint -Creds $creds -Username $userName -pwd $Password + } +} + # Add source entry to PackageSources function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") if ($packageSource -eq $null) { + Write-Host "Adding package source $SourceName" + $packageSource = $doc.CreateElement("add") $packageSource.SetAttribute("key", $SourceName) $packageSource.SetAttribute("value", $SourceEndPoint) $sources.AppendChild($packageSource) | Out-Null } else { - Write-Host "Package source $SourceName already present." + Write-Host "Package source $SourceName already present and enabled." } AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd @@ -59,6 +69,8 @@ function AddCredential($creds, $source, $username, $pwd) { return; } + Write-Host "Inserting credential for feed: " $source + # Looks for credential configuration for the given SourceName. Create it if none is found. $sourceElement = $creds.SelectSingleNode($Source) if ($sourceElement -eq $null) @@ -91,24 +103,27 @@ function AddCredential($creds, $source, $username, $pwd) { $passwordElement.SetAttribute("value", $pwd) } -function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) { - $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]") - - Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds." - - ForEach ($PackageSource in $maestroPrivateSources) { - Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key - AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd +# Enable all darc-int package sources. +function EnableMaestroInternalPackageSources($DisabledPackageSources, $Creds) { + $maestroInternalSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]") + ForEach ($DisabledPackageSource in $maestroInternalSources) { + EnableInternalPackageSource -DisabledPackageSources $DisabledPackageSources -Creds $Creds -PackageSourceName $DisabledPackageSource.key } } -function EnablePrivatePackageSources($DisabledPackageSources) { - $maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]") - ForEach ($DisabledPackageSource in $maestroPrivateSources) { - Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource" +# Enables an internal package source by name, if found. Returns true if the package source was found and enabled, false otherwise. +function EnableInternalPackageSource($DisabledPackageSources, $Creds, $PackageSourceName) { + $DisabledPackageSource = $DisabledPackageSources.SelectSingleNode("add[@key='$PackageSourceName']") + if ($DisabledPackageSource) { + Write-Host "Enabling internal source '$($DisabledPackageSource.key)'." + # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries $DisabledPackageSources.RemoveChild($DisabledPackageSource) + + AddCredential -Creds $creds -Source $DisabledPackageSource.Key -Username $userName -pwd $Password + return $true } + return $false } if (!(Test-Path $ConfigFile -PathType Leaf)) { @@ -121,15 +136,17 @@ $doc = New-Object System.Xml.XmlDocument $filename = (Get-Item $ConfigFile).FullName $doc.Load($filename) -# Get reference to or create one if none exist already +# Get reference to - fail if none exist $sources = $doc.DocumentElement.SelectSingleNode("packageSources") if ($sources -eq $null) { - $sources = $doc.CreateElement("packageSources") - $doc.DocumentElement.AppendChild($sources) | Out-Null + Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile" + ExitWithExitCode 1 } $creds = $null +$feedSuffix = "v3/index.json" if ($Password) { + $feedSuffix = "v2" # Looks for a node. Create it if none is found. $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") if ($creds -eq $null) { @@ -138,34 +155,35 @@ if ($Password) { } } +$userName = "dn-bot" + # Check for disabledPackageSources; we'll enable any darc-int ones we find there $disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources") if ($disabledSources -ne $null) { Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node" - EnablePrivatePackageSources -DisabledPackageSources $disabledSources + EnableMaestroInternalPackageSources -DisabledPackageSources $disabledSources -Creds $creds } - -$userName = "dn-bot" - -# Insert credential nodes for Maestro's private feeds -InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password - -# 3.1 uses a different feed url format so it's handled differently here -$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']") -if ($dotnet31Source -ne $null) { - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password -} - -$dotnetVersions = @('5','6','7','8','9') +$dotnetVersions = @('5','6','7','8','9','10') foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']") if ($dotnetSource -ne $null) { - AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password - AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password + AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password + AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password } } +# Check for dotnet-eng and add dotnet-eng-internal if present +$dotnetEngSource = $sources.SelectSingleNode("add[@key='dotnet-eng']") +if ($dotnetEngSource -ne $null) { + AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-eng-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password +} + +# Check for dotnet-tools and add dotnet-tools-internal if present +$dotnetToolsSource = $sources.SelectSingleNode("add[@key='dotnet-tools']") +if ($dotnetToolsSource -ne $null) { + AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-tools-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password +} + $doc.Save($filename) diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh old mode 100644 new mode 100755 index facb415ca6ff..b2163abbe71b --- a/eng/common/SetupNugetSources.sh +++ b/eng/common/SetupNugetSources.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash # This script adds internal feeds required to build commits that depend on internal package sources. For instance, -# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables -# disabled internal Maestro (darc-int*) feeds. +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly, +# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present. +# In addition, this script also enables disabled internal Maestro (darc-int*) feeds. # # Optionally, this script also adds a credential entry for each of the internal feeds if supplied. # @@ -52,81 +53,139 @@ if [[ `uname -s` == "Darwin" ]]; then TB='' fi -# Ensure there is a ... section. -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding ... section." - ConfigNodeHeader="" - PackageSourcesTemplate="${TB}${NL}${TB}" +# Enables an internal package source by name, if found. Returns 0 if found and enabled, 1 if not found. +EnableInternalPackageSource() { + local PackageSourceName="$1" + + # Check if disabledPackageSources section exists + grep -i "" "$ConfigFile" > /dev/null + if [ "$?" != "0" ]; then + return 1 # No disabled sources section + fi + + # Check if this source name is disabled + grep -i " /dev/null + if [ "$?" == "0" ]; then + echo "Enabling internal source '$PackageSourceName'." + # Remove the disabled entry (including any surrounding comments or whitespace on the same line) + sed -i.bak "//d" "$ConfigFile" + + # Add the source name to PackageSources for credential handling + PackageSources+=("$PackageSourceName") + return 0 # Found and enabled + fi + + return 1 # Not found in disabled sources +} + +# Add source entry to PackageSources +AddPackageSource() { + local SourceName="$1" + local SourceEndPoint="$2" + + # Check if source already exists + grep -i " /dev/null + if [ "$?" == "0" ]; then + echo "Package source $SourceName already present and enabled." + PackageSources+=("$SourceName") + return + fi + + echo "Adding package source $SourceName" + PackageSourcesNodeFooter="" + PackageSourceTemplate="${TB}" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" "$ConfigFile" + PackageSources+=("$SourceName") +} + +# Adds or enables the package source with the given name +AddOrEnablePackageSource() { + local SourceName="$1" + local SourceEndPoint="$2" + + # Try to enable if disabled, if not found then add new source + EnableInternalPackageSource "$SourceName" + if [ "$?" != "0" ]; then + AddPackageSource "$SourceName" "$SourceEndPoint" + fi +} - sed -i.bak "s|$ConfigNodeHeader|$ConfigNodeHeader${NL}$PackageSourcesTemplate|" $ConfigFile -fi +# Enable all darc-int package sources +EnableMaestroInternalPackageSources() { + # Check if disabledPackageSources section exists + grep -i "" "$ConfigFile" > /dev/null + if [ "$?" != "0" ]; then + return # No disabled sources section + fi + + # Find all darc-int disabled sources + local DisabledDarcIntSources=() + DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' "$ConfigFile" | tr -d '"') + + for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do + if [[ $DisabledSourceName == darc-int* ]]; then + EnableInternalPackageSource "$DisabledSourceName" + fi + done +} -# Ensure there is a ... section. -grep -i "" $ConfigFile +# Ensure there is a ... section. +grep -i "" $ConfigFile if [ "$?" != "0" ]; then - echo "Adding ... section." - - PackageSourcesNodeFooter="" - PackageSourceCredentialsTemplate="${TB}${NL}${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile + Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. NuGet config file must contain a packageSources section: $ConfigFile" + ExitWithExitCode 1 fi PackageSources=() -# Ensure dotnet3.1-internal and dotnet3.1-internal-transport are in the packageSources if the public dotnet3.1 feeds are present -grep -i "... section. + grep -i "" $ConfigFile if [ "$?" != "0" ]; then - echo "Adding dotnet3.1-internal to the packageSources." - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" + echo "Adding ... section." - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3.1-internal') - - grep -i "" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding dotnet3.1-internal-transport to the packageSources." PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" + PackageSourceCredentialsTemplate="${TB}${NL}${TB}" - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile fi - PackageSources+=('dotnet3.1-internal-transport') fi -DotNetVersions=('5' '6' '7' '8' '9') +# Check for disabledPackageSources; we'll enable any darc-int ones we find there +grep -i "" $ConfigFile > /dev/null +if [ "$?" == "0" ]; then + echo "Checking for any darc-int disabled package sources in the disabledPackageSources node" + EnableMaestroInternalPackageSources +fi + +DotNetVersions=('5' '6' '7' '8' '9' '10') for DotNetVersion in ${DotNetVersions[@]} ; do FeedPrefix="dotnet${DotNetVersion}"; - grep -i " /dev/null if [ "$?" == "0" ]; then - grep -i "" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=("$FeedPrefix-internal") - - grep -i "" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding $FeedPrefix-internal-transport to the packageSources." - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=("$FeedPrefix-internal-transport") + AddOrEnablePackageSource "$FeedPrefix-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal/nuget/$FeedSuffix" + AddOrEnablePackageSource "$FeedPrefix-internal-transport" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$FeedPrefix-internal-transport/nuget/$FeedSuffix" fi done +# Check for dotnet-eng and add dotnet-eng-internal if present +grep -i " /dev/null +if [ "$?" == "0" ]; then + AddOrEnablePackageSource "dotnet-eng-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$FeedSuffix" +fi + +# Check for dotnet-tools and add dotnet-tools-internal if present +grep -i " /dev/null +if [ "$?" == "0" ]; then + AddOrEnablePackageSource "dotnet-tools-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$FeedSuffix" +fi + # I want things split line by line PrevIFS=$IFS IFS=$'\n' @@ -139,29 +198,12 @@ if [ "$CredToken" ]; then # Check if there is no existing credential for this FeedName grep -i "<$FeedName>" $ConfigFile if [ "$?" != "0" ]; then - echo "Adding credentials for $FeedName." + echo " Inserting credential for feed: $FeedName" PackageSourceCredentialsNodeFooter="" - NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" + NewCredential="${TB}${TB}<$FeedName>${NL}${TB}${NL}${TB}${TB}${NL}${TB}${TB}" sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile fi done fi - -# Re-enable any entries in disabledPackageSources where the feed name contains darc-int -grep -i "" $ConfigFile -if [ "$?" == "0" ]; then - DisabledDarcIntSources=() - echo "Re-enabling any disabled \"darc-int\" package sources in $ConfigFile" - DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' $ConfigFile | tr -d '"') - for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do - if [[ $DisabledSourceName == darc-int* ]] - then - OldDisableValue="" - NewDisableValue="" - sed -i.bak "s|$OldDisableValue|$NewDisableValue|" $ConfigFile - echo "Neutralized disablePackageSources entry for '$DisabledSourceName'" - fi - done -fi diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 438f9920c43e..8cfee107e7a3 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -7,6 +7,7 @@ Param( [string] $msbuildEngine = $null, [bool] $warnAsError = $true, [bool] $nodeReuse = $true, + [switch] $buildCheck = $false, [switch][Alias('r')]$restore, [switch] $deployDeps, [switch][Alias('b')]$build, @@ -20,6 +21,7 @@ Param( [switch] $publish, [switch] $clean, [switch][Alias('pb')]$productBuild, + [switch]$fromVMR, [switch][Alias('bl')]$binaryLog, [switch][Alias('nobl')]$excludeCIBinarylog, [switch] $ci, @@ -71,6 +73,9 @@ function Print-Usage() { Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio" Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)" + Write-Host " -nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" + Write-Host " -buildCheck Sets /check msbuild parameter" + Write-Host " -fromVMR Set when building from within the VMR" Write-Host "" Write-Host "Command line arguments not listed above are passed thru to msbuild." @@ -97,6 +102,7 @@ function Build { $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' } $platformArg = if ($platform) { "/p:Platform=$platform" } else { '' } + $check = if ($buildCheck) { '/check' } else { '' } if ($projects) { # Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons. @@ -113,6 +119,7 @@ function Build { MSBuild $toolsetBuildProj ` $bl ` $platformArg ` + $check ` /p:Configuration=$configuration ` /p:RepoRoot=$RepoRoot ` /p:Restore=$restore ` @@ -122,11 +129,13 @@ function Build { /p:Deploy=$deploy ` /p:Test=$test ` /p:Pack=$pack ` - /p:DotNetBuildRepo=$productBuild ` + /p:DotNetBuild=$productBuild ` + /p:DotNetBuildFromVMR=$fromVMR ` /p:IntegrationTest=$integrationTest ` /p:PerformanceTest=$performanceTest ` /p:Sign=$sign ` /p:Publish=$publish ` + /p:RestoreStaticGraphEnableBinaryLogger=$binaryLog ` @properties } diff --git a/eng/common/build.sh b/eng/common/build.sh index ac1ee8620cd2..9767bb411a4f 100755 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -42,6 +42,8 @@ usage() echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" + echo " --buildCheck Sets /check msbuild parameter" + echo " --fromVMR Set when building from within the VMR" echo "" echo "Command line arguments not listed above are passed thru to msbuild." echo "Arguments can also be passed in with a single hyphen." @@ -63,6 +65,7 @@ restore=false build=false source_build=false product_build=false +from_vmr=false rebuild=false test=false integration_test=false @@ -76,6 +79,7 @@ clean=false warn_as_error=true node_reuse=true +build_check=false binary_log=false exclude_ci_binary_log=false pipelines_log=false @@ -87,7 +91,7 @@ verbosity='minimal' runtime_source_feed='' runtime_source_feed_key='' -properties='' +properties=() while [[ $# > 0 ]]; do opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" case "$opt" in @@ -127,19 +131,22 @@ while [[ $# > 0 ]]; do -pack) pack=true ;; - -sourcebuild|-sb) + -sourcebuild|-source-build|-sb) build=true source_build=true product_build=true restore=true pack=true ;; - -productBuild|-pb) + -productbuild|-product-build|-pb) build=true product_build=true restore=true pack=true ;; + -fromvmr|-from-vmr) + from_vmr=true + ;; -test|-t) test=true ;; @@ -173,6 +180,9 @@ while [[ $# > 0 ]]; do node_reuse=$2 shift ;; + -buildcheck) + build_check=true + ;; -runtimesourcefeed) runtime_source_feed=$2 shift @@ -182,7 +192,7 @@ while [[ $# > 0 ]]; do shift ;; *) - properties="$properties $1" + properties+=("$1") ;; esac @@ -216,7 +226,7 @@ function Build { InitializeCustomToolset if [[ ! -z "$projects" ]]; then - properties="$properties /p:Projects=$projects" + properties+=("/p:Projects=$projects") fi local bl="" @@ -224,15 +234,21 @@ function Build { bl="/bl:\"$log_dir/Build.binlog\"" fi + local check="" + if [[ "$build_check" == true ]]; then + check="/check" + fi + MSBuild $_InitializeToolset \ $bl \ + $check \ /p:Configuration=$configuration \ /p:RepoRoot="$repo_root" \ /p:Restore=$restore \ /p:Build=$build \ - /p:DotNetBuildRepo=$product_build \ - /p:ArcadeBuildFromSource=$source_build \ + /p:DotNetBuild=$product_build \ /p:DotNetBuildSourceOnly=$source_build \ + /p:DotNetBuildFromVMR=$from_vmr \ /p:Rebuild=$rebuild \ /p:Test=$test \ /p:Pack=$pack \ @@ -240,7 +256,8 @@ function Build { /p:PerformanceTest=$performance_test \ /p:Sign=$sign \ /p:Publish=$publish \ - $properties + /p:RestoreStaticGraphEnableBinaryLogger=$binary_log \ + ${properties[@]+"${properties[@]}"} ExitWithExitCode 0 } diff --git a/eng/common/cibuild.sh b/eng/common/cibuild.sh index 1a02c0dec8fd..66e3b0ac61c3 100755 --- a/eng/common/cibuild.sh +++ b/eng/common/cibuild.sh @@ -13,4 +13,4 @@ while [[ -h $source ]]; do done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" -. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@ \ No newline at end of file +. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@ diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 8da43d3b5837..5ce518406198 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -19,11 +19,11 @@ parameters: # publishing defaults artifacts: '' enableMicrobuild: false + enableMicrobuildForMacAndLinux: false microbuildUseESRP: true enablePublishBuildArtifacts: false enablePublishBuildAssets: false enablePublishTestResults: false - enablePublishUsingPipelines: false enableBuildRetry: false mergeTestResults: false testRunTitle: '' @@ -74,9 +74,6 @@ jobs: - ${{ if ne(parameters.enableTelemetry, 'false') }}: - name: DOTNET_CLI_TELEMETRY_PROFILE value: '$(Build.Repository.Uri)' - - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: - - name: EnableRichCodeNavigation - value: 'true' # Retry signature validation up to three times, waiting 2 seconds between attempts. # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY @@ -128,23 +125,12 @@ jobs: - ${{ preStep }} - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@4 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - ${{ if eq(parameters.microbuildUseESRP, true) }}: - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea - ${{ else }}: - ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca - env: - TeamName: $(_TeamName) - MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)' + - template: /eng/common/core-templates/steps/install-microbuild.yml + parameters: + enableMicrobuild: ${{ parameters.enableMicrobuild }} + enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }} + microbuildUseESRP: ${{ parameters.microbuildUseESRP }} continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - task: NuGetAuthenticate@1 @@ -160,27 +146,15 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: - - task: RichCodeNavIndexer@0 - displayName: RichCodeNav Upload - inputs: - languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} - environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'internal') }} - richNavLogOutputDirectory: $(System.DefaultWorkingDirectory)/artifacts/bin - uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} - continueOnError: true - - ${{ each step in parameters.componentGovernanceSteps }}: - ${{ step }} - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: /eng/common/core-templates/steps/cleanup-microbuild.yml + parameters: + enableMicrobuild: ${{ parameters.enableMicrobuild }} + enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }} continueOnError: ${{ parameters.continueOnError }} - env: - TeamName: $(_TeamName) # Publish test results - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml index edefa789d360..c5788829a872 100644 --- a/eng/common/core-templates/job/onelocbuild.yml +++ b/eng/common/core-templates/job/onelocbuild.yml @@ -4,7 +4,7 @@ parameters: # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool pool: '' - + CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex GithubPat: $(BotAccount-dotnet-bot-repo-PAT) @@ -27,7 +27,7 @@ parameters: is1ESPipeline: '' jobs: - job: OneLocBuild${{ parameters.JobNameSuffix }} - + dependsOn: ${{ parameters.dependsOn }} displayName: OneLocBuild${{ parameters.JobNameSuffix }} @@ -86,8 +86,7 @@ jobs: isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} ${{ if eq(parameters.CreatePr, true) }}: isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - isShouldReusePrSelected: ${{ parameters.ReusePr }} + isShouldReusePrSelected: ${{ parameters.ReusePr }} packageSourceAuth: patAuth patVariable: ${{ parameters.CeapexPat }} ${{ if eq(parameters.RepoType, 'gitHub') }}: @@ -100,22 +99,20 @@ jobs: mirrorBranch: ${{ parameters.MirrorBranch }} condition: ${{ parameters.condition }} - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - args: - displayName: Publish Localization Files - pathToPublish: '$(Build.ArtifactStagingDirectory)/loc' - publishLocation: Container - artifactName: Loc - condition: ${{ parameters.condition }} + # Copy the locProject.json to the root of the Loc directory, then publish a pipeline artifact + - task: CopyFiles@2 + displayName: Copy LocProject.json + inputs: + SourceFolder: '$(System.DefaultWorkingDirectory)/eng/Localize/' + Contents: 'LocProject.json' + TargetFolder: '$(Build.ArtifactStagingDirectory)/loc' + condition: ${{ parameters.condition }} - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: - displayName: Publish LocProject.json - pathToPublish: '$(System.DefaultWorkingDirectory)/eng/Localize/' - publishLocation: Container - artifactName: Loc - condition: ${{ parameters.condition }} \ No newline at end of file + targetPath: '$(Build.ArtifactStagingDirectory)/loc' + artifactName: 'Loc' + displayName: 'Publish Localization Files' + condition: ${{ parameters.condition }} diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 3cb20fb5041f..b955fac6e13f 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -20,9 +20,6 @@ parameters: # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. runAsPublic: false - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishUsingPipelines: false - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing publishAssetsImmediately: false @@ -32,6 +29,15 @@ parameters: is1ESPipeline: '' + # Optional: 🌤️ or not the build has assets it wants to publish to BAR + isAssetlessBuild: false + + # Optional, publishing version + publishingVersion: 3 + + # Optional: A minimatch pattern for the asset manifests to publish to BAR + assetManifestsPattern: '*/manifests/**/*.xml' + repositoryAlias: self officialBuildId: '' @@ -84,18 +90,44 @@ jobs: - checkout: ${{ parameters.repositoryAlias }} fetchDepth: 3 clean: true - - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - checkDownloadedFiles: true - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} + + - ${{ if eq(parameters.isAssetlessBuild, 'false') }}: + - ${{ if eq(parameters.publishingVersion, 3) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Asset Manifests + inputs: + artifactName: AssetManifests + targetPath: '$(Build.StagingDirectory)/AssetManifests' + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + - ${{ if eq(parameters.publishingVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download V4 asset manifests + inputs: + itemPattern: '*/manifests/**/*.xml' + targetPath: '$(Build.StagingDirectory)/AllAssetManifests' + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + - task: CopyFiles@2 + displayName: Copy V4 asset manifests to AssetManifests + inputs: + SourceFolder: '$(Build.StagingDirectory)/AllAssetManifests' + Contents: ${{ parameters.assetManifestsPattern }} + TargetFolder: '$(Build.StagingDirectory)/AssetManifests' + flattenFolders: true + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} - task: NuGetAuthenticate@1 + # Populate internal runtime variables. + - template: /eng/common/templates/steps/enable-internal-sources.yml + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + parameters: + legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) + + - template: /eng/common/templates/steps/enable-internal-runtimes.yml + - task: AzureCLI@2 displayName: Publish Build Assets inputs: @@ -104,10 +136,13 @@ jobs: scriptLocation: scriptPath scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1 arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' + /p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests' + /p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }} /p:MaestroApiEndpoint=https://maestro.dot.net - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:OfficialBuildId=$(OfficialBuildId) + -runtimeSourceFeed https://ci.dot.net/internal + -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)' + condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} @@ -129,6 +164,17 @@ jobs: Copy-Item -Path $symbolExclusionfile -Destination "$(Build.StagingDirectory)/ReleaseConfigs" } + - ${{ if eq(parameters.publishingVersion, 4) }}: + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml' + artifactName: AssetManifests + displayName: 'Publish Merged Manifest' + retryCountOnTaskFailure: 10 # for any logs being locked + sbomEnabled: false # we don't need SBOM for logs + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} @@ -138,7 +184,7 @@ jobs: publishLocation: Container artifactName: ReleaseConfigs - - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml parameters: BARBuildId: ${{ parameters.BARBuildId }} @@ -164,6 +210,9 @@ jobs: -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}' + -runtimeSourceFeed https://ci.dot.net/internal + -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)' - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - template: /eng/common/core-templates/steps/publish-logs.yml diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index d943748ac10e..1997c2ae00d7 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -12,9 +12,10 @@ parameters: # The name of the job. This is included in the job ID. # targetRID: '' # The name of the target RID to use, instead of the one auto-detected by Arcade. - # nonPortable: false + # portableBuild: false # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than - # linux-x64), and compiling against distro-provided packages rather than portable ones. + # linux-x64), and compiling against distro-provided packages rather than portable ones. The + # default is portable mode. # skipPublishValidation: false # Disables publishing validation. By default, a check is performed to ensure no packages are # published by source-build. @@ -33,9 +34,6 @@ parameters: # container and pool. platform: {} - # Optional list of directories to ignore for component governance scans. - componentGovernanceIgnoreDirectories: [] - is1ESPipeline: '' # If set to true and running on a non-public project, @@ -62,7 +60,7 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals build.ubuntu.2004.amd64 + demands: ImageOverride -equals build.azurelinux.3.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] image: build.azurelinux.3.amd64 @@ -71,10 +69,10 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open + demands: ImageOverride -equals build.azurelinux.3.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - demands: ImageOverride -equals Build.Ubuntu.2204.Amd64 + demands: ImageOverride -equals build.azurelinux.3.amd64 ${{ if ne(parameters.platform.pool, '') }}: pool: ${{ parameters.platform.pool }} @@ -96,4 +94,3 @@ jobs: parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} platform: ${{ parameters.platform }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml index ddf8c2e00d80..76baf5c27258 100644 --- a/eng/common/core-templates/job/source-index-stage1.yml +++ b/eng/common/core-templates/job/source-index-stage1.yml @@ -1,8 +1,5 @@ parameters: runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20250425.2 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 - sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] binlogPath: artifacts/log/Debug/Build.binlog @@ -16,12 +13,6 @@ jobs: dependsOn: ${{ parameters.dependsOn }} condition: ${{ parameters.condition }} variables: - - name: SourceIndexUploadPackageVersion - value: ${{ parameters.sourceIndexUploadPackageVersion }} - - name: SourceIndexProcessBinlogPackageVersion - value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - - name: SourceIndexPackageSource - value: ${{ parameters.sourceIndexPackageSource }} - name: BinlogPath value: ${{ parameters.binlogPath }} - template: /eng/common/core-templates/variables/pool-providers.yml @@ -34,12 +25,10 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $(DncEngPublicBuildPool) - image: 1es-windows-2022-open - os: windows + image: windows.vs2026preview.scout.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows + image: windows.vs2026preview.scout.amd64 steps: - ${{ if eq(parameters.is1ESPipeline, '') }}: @@ -47,35 +36,9 @@ jobs: - ${{ each preStep in parameters.preSteps }}: - ${{ preStep }} - - - task: UseDotNet@2 - displayName: Use .NET 8 SDK - inputs: - packageType: sdk - version: 8.0.x - installationPath: $(Agent.TempDirectory)/dotnet - workingDirectory: $(Agent.TempDirectory) - - - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - displayName: Download Tools - # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. - workingDirectory: $(Agent.TempDirectory) - - script: ${{ parameters.sourceIndexBuildCommand }} displayName: Build Repository - - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output - displayName: Process Binlog into indexable sln - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: AzureCLI@2 - displayName: Log in to Azure and upload stage1 artifacts to source index - inputs: - azureSubscription: 'SourceDotNet Stage1 Publish' - addSpnToEnvironment: true - scriptType: 'ps' - scriptLocation: 'inlineScript' - inlineScript: | - $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 + - template: /eng/common/core-templates/steps/source-index-stage1-publish.yml + parameters: + binLogPath: ${{ parameters.binLogPath }} diff --git a/eng/common/core-templates/jobs/codeql-build.yml b/eng/common/core-templates/jobs/codeql-build.yml index 4571a7864df6..dbc14ac580a2 100644 --- a/eng/common/core-templates/jobs/codeql-build.yml +++ b/eng/common/core-templates/jobs/codeql-build.yml @@ -15,7 +15,6 @@ jobs: enablePublishBuildArtifacts: false enablePublishTestResults: false enablePublishBuildAssets: false - enablePublishUsingPipelines: false enableTelemetry: true variables: diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml index bf33cdc2cc77..01ada7476651 100644 --- a/eng/common/core-templates/jobs/jobs.yml +++ b/eng/common/core-templates/jobs/jobs.yml @@ -5,9 +5,6 @@ parameters: # Optional: Include PublishBuildArtifacts task enablePublishBuildArtifacts: false - # Optional: Enable publishing using release pipelines - enablePublishUsingPipelines: false - # Optional: Enable running the source-build jobs to build repo from source enableSourceBuild: false @@ -30,6 +27,9 @@ parameters: # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. publishAssetsImmediately: false + # Optional: 🌤️ or not the build has assets it wants to publish to BAR + isAssetlessBuild: false + # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) artifactsPublishingAdditionalParameters: '' signingValidationAdditionalParameters: '' @@ -85,7 +85,6 @@ jobs: - template: /eng/common/core-templates/jobs/source-build.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} - allCompletedJobId: Source_Build_Complete ${{ each parameter in parameters.sourceBuildParameters }}: ${{ parameter.key }}: ${{ parameter.value }} @@ -98,7 +97,7 @@ jobs: ${{ parameter.key }}: ${{ parameter.value }} - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: + - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, ''), eq(parameters.isAssetlessBuild, true)) }}: - template: ../job/publish-build-assets.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} @@ -110,12 +109,10 @@ jobs: - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: - ${{ each job in parameters.jobs }}: - ${{ job.job }} - - ${{ if eq(parameters.enableSourceBuild, true) }}: - - Source_Build_Complete runAsPublic: ${{ parameters.runAsPublic }} - publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} - publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} + publishAssetsImmediately: ${{ or(parameters.publishAssetsImmediately, parameters.isAssetlessBuild) }} + isAssetlessBuild: ${{ parameters.isAssetlessBuild }} enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} diff --git a/eng/common/core-templates/jobs/source-build.yml b/eng/common/core-templates/jobs/source-build.yml index 0b408a67bd51..d92860cba208 100644 --- a/eng/common/core-templates/jobs/source-build.yml +++ b/eng/common/core-templates/jobs/source-build.yml @@ -2,28 +2,19 @@ parameters: # This template adds arcade-powered source-build to CI. A job is created for each platform, as # well as an optional server job that completes when all platform jobs complete. - # The name of the "join" job for all source-build platforms. If set to empty string, the job is - # not included. Existing repo pipelines can use this job depend on all source-build jobs - # completing without maintaining a separate list of every single job ID: just depend on this one - # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. - allCompletedJobId: '' - # See /eng/common/core-templates/job/source-build.yml jobNamePrefix: 'Source_Build' # This is the default platform provided by Arcade, intended for use by a managed-only repo. defaultManagedPlatform: name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-amd64' # Defines the platforms on which to run build jobs. One job is created for each platform, and the # object in this array is sent to the job template as 'platform'. If no platforms are specified, # one job runs on 'defaultManagedPlatform'. platforms: [] - # Optional list of directories to ignore for component governance scans. - componentGovernanceIgnoreDirectories: [] - is1ESPipeline: '' # If set to true and running on a non-public project, @@ -34,23 +25,12 @@ parameters: jobs: -- ${{ if ne(parameters.allCompletedJobId, '') }}: - - job: ${{ parameters.allCompletedJobId }} - displayName: Source-Build Complete - pool: server - dependsOn: - - ${{ each platform in parameters.platforms }}: - - ${{ parameters.jobNamePrefix }}_${{ platform.name }} - - ${{ if eq(length(parameters.platforms), 0) }}: - - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} - - ${{ each platform in parameters.platforms }}: - template: /eng/common/core-templates/job/source-build.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} jobNamePrefix: ${{ parameters.jobNamePrefix }} platform: ${{ platform }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} enableInternalSources: ${{ parameters.enableInternalSources }} - ${{ if eq(length(parameters.platforms), 0) }}: @@ -59,5 +39,4 @@ jobs: is1ESPipeline: ${{ parameters.is1ESPipeline }} jobNamePrefix: ${{ parameters.jobNamePrefix }} platform: ${{ parameters.defaultManagedPlatform }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 864427d9694a..b942a79ef02d 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -60,6 +60,11 @@ parameters: artifactNames: '' downloadArtifacts: true + - name: isAssetlessBuild + type: boolean + displayName: Is Assetless Build + default: false + # These parameters let the user customize the call to sdk-task.ps1 for publishing # symbols & general artifacts as well as for signing validation - name: symbolPublishingAdditionalParameters @@ -122,11 +127,11 @@ stages: ${{ else }}: ${{ if eq(parameters.is1ESPipeline, true) }}: name: $(DncEngInternalBuildPool) - image: windows.vs2022.amd64 + image: windows.vs2026preview.scout.amd64 os: windows ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2022.amd64 + demands: ImageOverride -equals windows.vs2026preview.scout.amd64 steps: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -170,7 +175,7 @@ stages: os: windows ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2022.amd64 + demands: ImageOverride -equals windows.vs2026preview.scout.amd64 steps: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml parameters: @@ -188,9 +193,6 @@ stages: buildId: $(AzDOBuildId) artifactName: PackageArtifacts checkDownloadedFiles: true - itemPattern: | - ** - !**/Microsoft.SourceBuild.Intermediate.*.nupkg # This is necessary whenever we want to publish/restore to an AzDO private feed # Since sdk-task.ps1 tries to restore packages we need to do this authentication here @@ -234,7 +236,7 @@ stages: os: windows ${{ else }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2022.amd64 + demands: ImageOverride -equals windows.vs2026preview.scout.amd64 steps: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml parameters: @@ -305,6 +307,13 @@ stages: - task: NuGetAuthenticate@1 + # Populate internal runtime variables. + - template: /eng/common/templates/steps/enable-internal-sources.yml + parameters: + legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw) + + - template: /eng/common/templates/steps/enable-internal-runtimes.yml + # Darc is targeting 8.0, so make sure it's installed - task: UseDotNet@2 inputs: @@ -325,3 +334,6 @@ stages: -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + -SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}' + -runtimeSourceFeed https://ci.dot.net/internal + -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)' diff --git a/eng/common/core-templates/steps/cleanup-microbuild.yml b/eng/common/core-templates/steps/cleanup-microbuild.yml new file mode 100644 index 000000000000..c0fdcd3379d7 --- /dev/null +++ b/eng/common/core-templates/steps/cleanup-microbuild.yml @@ -0,0 +1,28 @@ +parameters: + # Enable cleanup tasks for MicroBuild + enableMicrobuild: false + # Enable cleanup tasks for MicroBuild on Mac and Linux + # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT' + enableMicrobuildForMacAndLinux: false + continueOnError: false + +steps: + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - task: MicroBuildCleanup@1 + displayName: Execute Microbuild cleanup tasks + condition: and( + always(), + or( + and( + eq(variables['Agent.Os'], 'Windows_NT'), + in(variables['_SignType'], 'real', 'test') + ), + and( + ${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }}, + ne(variables['Agent.Os'], 'Windows_NT'), + eq(variables['_SignType'], 'real') + ) + )) + continueOnError: ${{ parameters.continueOnError }} + env: + TeamName: $(_TeamName) diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index 7f5b84c4cb82..c05f65027979 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -5,7 +5,7 @@ # IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. parameters: - PackageVersion: 9.0.0 + PackageVersion: 10.0.0 BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' PackageName: '.NET' ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom diff --git a/eng/common/core-templates/steps/get-delegation-sas.yml b/eng/common/core-templates/steps/get-delegation-sas.yml index 9db5617ea7de..d2901470a7f0 100644 --- a/eng/common/core-templates/steps/get-delegation-sas.yml +++ b/eng/common/core-templates/steps/get-delegation-sas.yml @@ -31,16 +31,7 @@ steps: # Calculate the expiration of the SAS token and convert to UTC $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads - # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 - $sas = "" - do { - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to generate SAS token." - exit 1 - } - } while($sas.IndexOf('/') -ne -1) + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv if ($LASTEXITCODE -ne 0) { Write-Error "Failed to generate SAS token." diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml new file mode 100644 index 000000000000..553fce66b940 --- /dev/null +++ b/eng/common/core-templates/steps/install-microbuild.yml @@ -0,0 +1,110 @@ +parameters: + # Enable install tasks for MicroBuild + enableMicrobuild: false + # Enable install tasks for MicroBuild on Mac and Linux + # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT' + enableMicrobuildForMacAndLinux: false + # Determines whether the ESRP service connection information should be passed to the signing plugin. + # This overlaps with _SignType to some degree. We only need the service connection for real signing. + # It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place. + # Doing so will cause the service connection to be authorized for the pipeline, which isn't allowed and won't work for non-prod. + # Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The + # variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough. + microbuildUseESRP: true + # Microbuild installation directory + microBuildOutputFolder: $(Agent.TempDirectory)/MicroBuild + + continueOnError: false + +steps: + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, 'true') }}: + # Needed to download the MicroBuild plugin nupkgs on Mac and Linux when nuget.exe is unavailable + - task: UseDotNet@2 + displayName: Install .NET 8.0 SDK for MicroBuild Plugin + inputs: + packageType: sdk + version: 8.0.x + installationPath: ${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild + condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT')) + + - script: | + set -euo pipefail + + # UseDotNet@2 prepends the dotnet executable path to the PATH variable, so we can call dotnet directly + version=$(dotnet --version) + cat << 'EOF' > ${{ parameters.microBuildOutputFolder }}/global.json + { + "sdk": { + "version": "$version", + "paths": [ + "${{ parameters.microBuildOutputFolder }}/.dotnet-microbuild" + ], + "errorMessage": "The .NET SDK version $version is required to install the MicroBuild signing plugin." + } + } + EOF + displayName: 'Add global.json to MicroBuild Installation path' + workingDirectory: ${{ parameters.microBuildOutputFolder }} + condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT')) + + - script: | + REM Check if ESRP is disabled while SignType is real + if /I "${{ parameters.microbuildUseESRP }}"=="false" if /I "$(_SignType)"=="real" ( + echo Error: ESRP must be enabled when SignType is real. + exit /b 1 + ) + displayName: 'Validate ESRP usage (Windows)' + condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT')) + - script: | + # Check if ESRP is disabled while SignType is real + if [ "${{ parameters.microbuildUseESRP }}" = "false" ] && [ "$(_SignType)" = "real" ]; then + echo "Error: ESRP must be enabled when SignType is real." + exit 1 + fi + displayName: 'Validate ESRP usage (Non-Windows)' + condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT')) + + # Two different MB install steps. This is due to not being able to use the agent OS during + # YAML expansion, and Windows vs. Linux/Mac uses different service connections. However, + # we can avoid including the MB install step if not enabled at all. This avoids a bunch of + # extra pipeline authorizations, since most pipelines do not sign on non-Windows. + - task: MicroBuildSigningPlugin@4 + displayName: Install MicroBuild plugin (Windows) + inputs: + signType: $(_SignType) + zipSources: false + feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + ${{ if eq(parameters.microbuildUseESRP, true) }}: + ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)' + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea + ${{ else }}: + ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca + env: + TeamName: $(_TeamName) + MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + continueOnError: ${{ parameters.continueOnError }} + condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test')) + + - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}: + - task: MicroBuildSigningPlugin@4 + displayName: Install MicroBuild plugin (non-Windows) + inputs: + signType: $(_SignType) + zipSources: false + feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + workingDirectory: ${{ parameters.microBuildOutputFolder }} + ${{ if eq(parameters.microbuildUseESRP, true) }}: + ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)' + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39 + ${{ else }}: + ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc + env: + TeamName: $(_TeamName) + MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + continueOnError: ${{ parameters.continueOnError }} + condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'), eq(variables['_SignType'], 'real')) diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml index 0623ac6e1123..5a927b4c7bcb 100644 --- a/eng/common/core-templates/steps/publish-logs.yml +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -26,15 +26,19 @@ steps: # If the file exists - sensitive data for redaction will be sourced from it # (single entry per line, lines starting with '# ' are considered comments and skipped) arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs' - -BinlogToolVersion ${{parameters.BinlogToolVersion}} + -BinlogToolVersion '${{parameters.BinlogToolVersion}}' -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt' + -runtimeSourceFeed https://ci.dot.net/internal + -runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)' '$(publishing-dnceng-devdiv-code-r-build-re)' '$(MaestroAccessToken)' '$(dn-bot-all-orgs-artifact-feeds-rw)' '$(akams-client-id)' '$(microsoft-symbol-server-pat)' '$(symweb-symbol-server-pat)' + '$(dnceng-symbol-server-pat)' '$(dn-bot-all-orgs-build-rw-code-rw)' + '$(System.AccessToken)' ${{parameters.CustomSensitiveDataList}} continueOnError: true condition: always() @@ -45,6 +49,7 @@ steps: SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + condition: always() - template: /eng/common/core-templates/steps/publish-build-artifacts.yml parameters: diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index 7846584d2a77..b9c86c18ae42 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -11,10 +11,6 @@ parameters: # for details. The entire object is described in the 'job' template for simplicity, even though # the usage of the properties on this object is split between the 'job' and 'steps' templates. platform: {} - - # Optional list of directories to ignore for component governance scans. - componentGovernanceIgnoreDirectories: [] - is1ESPipeline: false steps: @@ -23,25 +19,12 @@ steps: set -x df -h - # If file changes are detected, set CopyWipIntoInnerSourceBuildRepo to copy the WIP changes into the inner source build repo. - internalRestoreArgs= - if ! git diff --quiet; then - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - # If building on the internal project, the internal storage variable may be available (usually only if needed) # In that case, add variables to allow the download of internal runtimes if the specified versions are not found # in the default public locations. internalRuntimeDownloadArgs= if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then - internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey '$(dotnetbuilds-internal-container-read-token-base64)'' fi buildConfig=Release @@ -50,88 +33,33 @@ steps: buildConfig='$(_BuildConfig)' fi - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - targetRidArgs= if [ '${{ parameters.platform.targetRID }}' != '' ]; then targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml + portableBuildArgs= + if [ '${{ parameters.platform.portableBuild }}' != '' ]; then + portableBuildArgs='/p:PortableBuild=${{ parameters.platform.portableBuild }}' fi ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ + --restore --build --pack -bl \ + --source-build \ ${{ parameters.platform.buildArguments }} \ - $officialBuildArgs \ $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ - /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ - /p:ArcadeBuildFromSource=true \ - /p:DotNetBuildSourceOnly=true \ - /p:DotNetBuildRepo=true \ - /p:AssetManifestFileName=$assetManifestFileName + $portableBuildArgs \ displayName: Build -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(System.DefaultWorkingDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/sb/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: '$(Build.StagingDirectory)/BuildLogs' + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() sbomEnabled: false # we don't need SBOM for logs - -# Manually inject component detection so that we can ignore the source build upstream cache, which contains -# a nupkg cache of input packages (a local feed). -# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' -# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets -- template: /eng/common/core-templates/steps/component-governance.yml - parameters: - displayName: Component Detection (Exclude upstream cache) - is1ESPipeline: ${{ parameters.is1ESPipeline }} - ${{ if eq(length(parameters.componentGovernanceIgnoreDirectories), 0) }}: - componentGovernanceIgnoreDirectories: '$(System.DefaultWorkingDirectory)/artifacts/sb/src/artifacts/obj/source-built-upstream-cache' - ${{ else }}: - componentGovernanceIgnoreDirectories: ${{ join(',', parameters.componentGovernanceIgnoreDirectories) }} - disableComponentGovernance: ${{ eq(variables['System.TeamProject'], 'public') }} diff --git a/eng/common/core-templates/steps/source-index-stage1-publish.yml b/eng/common/core-templates/steps/source-index-stage1-publish.yml new file mode 100644 index 000000000000..e9a694afa58e --- /dev/null +++ b/eng/common/core-templates/steps/source-index-stage1-publish.yml @@ -0,0 +1,35 @@ +parameters: + sourceIndexUploadPackageVersion: 2.0.0-20250818.1 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250818.1 + sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json + binlogPath: artifacts/log/Debug/Build.binlog + +steps: +- task: UseDotNet@2 + displayName: "Source Index: Use .NET 9 SDK" + inputs: + packageType: sdk + version: 9.0.x + installationPath: $(Agent.TempDirectory)/dotnet + workingDirectory: $(Agent.TempDirectory) + +- script: | + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version ${{parameters.sourceIndexProcessBinlogPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version ${{parameters.sourceIndexUploadPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools + displayName: "Source Index: Download netsourceindex Tools" + # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. + workingDirectory: $(Agent.TempDirectory) + +- script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i ${{parameters.BinlogPath}} -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output + displayName: "Source Index: Process Binlog into indexable sln" + +- ${{ if and(ne(parameters.runAsPublic, 'true'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: AzureCLI@2 + displayName: "Source Index: Upload Source Index stage1 artifacts to Azure" + inputs: + azureSubscription: 'SourceDotNet Stage1 Publish' + addSpnToEnvironment: true + scriptType: 'ps' + scriptLocation: 'inlineScript' + inlineScript: | + $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 diff --git a/eng/common/cross/arm64/tizen/tizen.patch b/eng/common/cross/arm64/tizen/tizen.patch index af7c8be05906..2cebc547382e 100644 --- a/eng/common/cross/arm64/tizen/tizen.patch +++ b/eng/common/cross/arm64/tizen/tizen.patch @@ -5,5 +5,5 @@ diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so Use the shared library, but some functions are only in the static library, so try that secondarily. */ OUTPUT_FORMAT(elf64-littleaarch64) --GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib/ld-linux-aarch64.so.1 ) ) +-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-aarch64.so.1 ) ) +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-aarch64.so.1 ) ) diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh index 7e9ba2b75ed3..fbd8d80848a6 100755 --- a/eng/common/cross/build-android-rootfs.sh +++ b/eng/common/cross/build-android-rootfs.sh @@ -6,10 +6,11 @@ usage() { echo "Creates a toolchain and sysroot used for cross-compiling for Android." echo - echo "Usage: $0 [BuildArch] [ApiLevel]" + echo "Usage: $0 [BuildArch] [ApiLevel] [--ndk NDKVersion]" echo echo "BuildArch is the target architecture of Android. Currently only arm64 is supported." echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html" + echo "NDKVersion is the version of Android NDK. The default is r21. See https://developer.android.com/ndk/downloads/revision_history" echo echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior" echo "by setting the TOOLCHAIN_DIR environment variable" @@ -25,10 +26,15 @@ __BuildArch=arm64 __AndroidArch=aarch64 __AndroidToolchain=aarch64-linux-android -for i in "$@" - do - lowerI="$(echo $i | tr "[:upper:]" "[:lower:]")" - case $lowerI in +while :; do + if [[ "$#" -le 0 ]]; then + break + fi + + i=$1 + + lowerI="$(echo $i | tr "[:upper:]" "[:lower:]")" + case $lowerI in -?|-h|--help) usage exit 1 @@ -43,6 +49,10 @@ for i in "$@" __AndroidArch=arm __AndroidToolchain=arm-linux-androideabi ;; + --ndk) + shift + __NDK_Version=$1 + ;; *[0-9]) __ApiLevel=$i ;; @@ -50,8 +60,17 @@ for i in "$@" __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i" ;; esac + shift done +if [[ "$__NDK_Version" == "r21" ]] || [[ "$__NDK_Version" == "r22" ]]; then + __NDK_File_Arch_Spec=-x86_64 + __SysRoot=sysroot +else + __NDK_File_Arch_Spec= + __SysRoot=toolchains/llvm/prebuilt/linux-x86_64/sysroot +fi + # Obtain the location of the bash script to figure out where the root of the repo is. __ScriptBaseDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" @@ -78,6 +97,7 @@ fi echo "Target API level: $__ApiLevel" echo "Target architecture: $__BuildArch" +echo "NDK version: $__NDK_Version" echo "NDK location: $__NDK_Dir" echo "Target Toolchain location: $__ToolchainDir" @@ -85,8 +105,8 @@ echo "Target Toolchain location: $__ToolchainDir" if [ ! -d $__NDK_Dir ]; then echo Downloading the NDK into $__NDK_Dir mkdir -p $__NDK_Dir - wget -q --progress=bar:force:noscroll --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux-x86_64.zip -O $__CrossDir/android-ndk-$__NDK_Version-linux-x86_64.zip - unzip -q $__CrossDir/android-ndk-$__NDK_Version-linux-x86_64.zip -d $__CrossDir + wget -q --progress=bar:force:noscroll --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux$__NDK_File_Arch_Spec.zip -O $__CrossDir/android-ndk-$__NDK_Version-linux.zip + unzip -q $__CrossDir/android-ndk-$__NDK_Version-linux.zip -d $__CrossDir fi if [ ! -d $__lldb_Dir ]; then @@ -116,16 +136,11 @@ for path in $(wget -qO- https://packages.termux.dev/termux-main-21/dists/stable/ fi done -cp -R "$__TmpDir/data/data/com.termux/files/usr/"* "$__ToolchainDir/sysroot/usr/" +cp -R "$__TmpDir/data/data/com.termux/files/usr/"* "$__ToolchainDir/$__SysRoot/usr/" # Generate platform file for build.sh script to assign to __DistroRid echo "Generating platform file..." -echo "RID=android.${__ApiLevel}-${__BuildArch}" > $__ToolchainDir/sysroot/android_platform - -echo "Now to build coreclr, libraries and installers; run:" -echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \ - --subsetCategory coreclr -echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \ - --subsetCategory libraries -echo ROOTFS_DIR=\$\(realpath $__ToolchainDir/sysroot\) ./build.sh --cross --arch $__BuildArch \ - --subsetCategory installer +echo "RID=android.${__ApiLevel}-${__BuildArch}" > $__ToolchainDir/$__SysRoot/android_platform + +echo "Now to build coreclr, libraries and host; run:" +echo ROOTFS_DIR=$(realpath $__ToolchainDir/$__SysRoot) ./build.sh clr+libs+host --cross --arch $__BuildArch diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh index 4b5e8d7166bd..8abfb71f7275 100755 --- a/eng/common/cross/build-rootfs.sh +++ b/eng/common/cross/build-rootfs.sh @@ -5,7 +5,7 @@ set -e usage() { echo "Usage: $0 [BuildArch] [CodeName] [lldbx.y] [llvmx[.y]] [--skipunmount] --rootfsdir ]" - echo "BuildArch can be: arm(default), arm64, armel, armv6, ppc64le, riscv64, s390x, x64, x86" + echo "BuildArch can be: arm(default), arm64, armel, armv6, loongarch64, ppc64le, riscv64, s390x, x64, x86" echo "CodeName - optional, Code name for Linux, can be: xenial(default), zesty, bionic, alpine" echo " for alpine can be specified with version: alpineX.YY or alpineedge" echo " for FreeBSD can be: freebsd13, freebsd14" @@ -15,6 +15,7 @@ usage() echo "llvmx[.y] - optional, LLVM version for LLVM related packages." echo "--skipunmount - optional, will skip the unmount of rootfs folder." echo "--skipsigcheck - optional, will skip package signature checks (allowing untrusted packages)." + echo "--skipemulation - optional, will skip qemu and debootstrap requirement when building environment for debian based systems." echo "--use-mirror - optional, use mirror URL to fetch resources, when available." echo "--jobs N - optional, restrict to N jobs." exit 1 @@ -52,28 +53,27 @@ __UbuntuPackages+=" symlinks" __UbuntuPackages+=" libicu-dev" __UbuntuPackages+=" liblttng-ust-dev" __UbuntuPackages+=" libunwind8-dev" -__UbuntuPackages+=" libnuma-dev" __AlpinePackages+=" gettext-dev" __AlpinePackages+=" icu-dev" __AlpinePackages+=" libunwind-dev" __AlpinePackages+=" lttng-ust-dev" __AlpinePackages+=" compiler-rt" -__AlpinePackages+=" numactl-dev" # runtime libraries' dependencies __UbuntuPackages+=" libcurl4-openssl-dev" __UbuntuPackages+=" libkrb5-dev" __UbuntuPackages+=" libssl-dev" __UbuntuPackages+=" zlib1g-dev" +__UbuntuPackages+=" libbrotli-dev" __AlpinePackages+=" curl-dev" __AlpinePackages+=" krb5-dev" __AlpinePackages+=" openssl-dev" __AlpinePackages+=" zlib-dev" -__FreeBSDBase="13.3-RELEASE" -__FreeBSDPkg="1.17.0" +__FreeBSDBase="13.4-RELEASE" +__FreeBSDPkg="1.21.3" __FreeBSDABI="13" __FreeBSDPackages="libunwind" __FreeBSDPackages+=" icu" @@ -91,18 +91,18 @@ __HaikuPackages="gcc_syslibs" __HaikuPackages+=" gcc_syslibs_devel" __HaikuPackages+=" gmp" __HaikuPackages+=" gmp_devel" -__HaikuPackages+=" icu66" -__HaikuPackages+=" icu66_devel" +__HaikuPackages+=" icu[0-9]+" +__HaikuPackages+=" icu[0-9]*_devel" __HaikuPackages+=" krb5" __HaikuPackages+=" krb5_devel" __HaikuPackages+=" libiconv" __HaikuPackages+=" libiconv_devel" -__HaikuPackages+=" llvm12_libunwind" -__HaikuPackages+=" llvm12_libunwind_devel" +__HaikuPackages+=" llvm[0-9]*_libunwind" +__HaikuPackages+=" llvm[0-9]*_libunwind_devel" __HaikuPackages+=" mpfr" __HaikuPackages+=" mpfr_devel" -__HaikuPackages+=" openssl" -__HaikuPackages+=" openssl_devel" +__HaikuPackages+=" openssl3" +__HaikuPackages+=" openssl3_devel" __HaikuPackages+=" zlib" __HaikuPackages+=" zlib_devel" @@ -128,10 +128,12 @@ __AlpineKeys=' 616adfeb:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0BFD1D4lIxQcsqEpQzU\npNCYM3aP1V/fxxVdT4DWvSI53JHTwHQamKdMWtEXetWVbP5zSROniYKFXd/xrD9X\n0jiGHey3lEtylXRIPxe5s+wXoCmNLcJVnvTcDtwx/ne2NLHxp76lyc25At+6RgE6\nADjLVuoD7M4IFDkAsd8UQ8zM0Dww9SylIk/wgV3ZkifecvgUQRagrNUdUjR56EBZ\nraQrev4hhzOgwelT0kXCu3snbUuNY/lU53CoTzfBJ5UfEJ5pMw1ij6X0r5S9IVsy\nKLWH1hiO0NzU2c8ViUYCly4Fe9xMTFc6u2dy/dxf6FwERfGzETQxqZvSfrRX+GLj\n/QZAXiPg5178hT/m0Y3z5IGenIC/80Z9NCi+byF1WuJlzKjDcF/TU72zk0+PNM/H\nKuppf3JT4DyjiVzNC5YoWJT2QRMS9KLP5iKCSThwVceEEg5HfhQBRT9M6KIcFLSs\nmFjx9kNEEmc1E8hl5IR3+3Ry8G5/bTIIruz14jgeY9u5jhL8Vyyvo41jgt9sLHR1\n/J1TxKfkgksYev7PoX6/ZzJ1ksWKZY5NFoDXTNYUgzFUTOoEaOg3BAQKadb3Qbbq\nXIrxmPBdgrn9QI7NCgfnAY3Tb4EEjs3ON/BNyEhUENcXOH6I1NbcuBQ7g9P73kE4\nVORdoc8MdJ5eoKBpO8Ww8HECAwEAAQ== 616ae350:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyduVzi1mWm+lYo2Tqt/0\nXkCIWrDNP1QBMVPrE0/ZlU2bCGSoo2Z9FHQKz/mTyMRlhNqTfhJ5qU3U9XlyGOPJ\npiM+b91g26pnpXJ2Q2kOypSgOMOPA4cQ42PkHBEqhuzssfj9t7x47ppS94bboh46\nxLSDRff/NAbtwTpvhStV3URYkxFG++cKGGa5MPXBrxIp+iZf9GnuxVdST5PGiVGP\nODL/b69sPJQNbJHVquqUTOh5Ry8uuD2WZuXfKf7/C0jC/ie9m2+0CttNu9tMciGM\nEyKG1/Xhk5iIWO43m4SrrT2WkFlcZ1z2JSf9Pjm4C2+HovYpihwwdM/OdP8Xmsnr\nDzVB4YvQiW+IHBjStHVuyiZWc+JsgEPJzisNY0Wyc/kNyNtqVKpX6dRhMLanLmy+\nf53cCSI05KPQAcGj6tdL+D60uKDkt+FsDa0BTAobZ31OsFVid0vCXtsbplNhW1IF\nHwsGXBTVcfXg44RLyL8Lk/2dQxDHNHzAUslJXzPxaHBLmt++2COa2EI1iWlvtznk\nOk9WP8SOAIj+xdqoiHcC4j72BOVVgiITIJNHrbppZCq6qPR+fgXmXa+sDcGh30m6\n9Wpbr28kLMSHiENCWTdsFij+NQTd5S47H7XTROHnalYDuF1RpS+DpQidT5tUimaT\nJZDr++FjKrnnijbyNF8b98UCAwEAAQ== 616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ== +66ba20fe:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtfB12w4ZgqsXWZDfUAV/\n6Y4aHUKIu3q4SXrNZ7CXF9nXoAVYrS7NAxJdAodsY3vPCN0g5O8DFXR+390LdOuQ\n+HsGKCc1k5tX5ZXld37EZNTNSbR0k+NKhd9h6X3u6wqPOx7SIKxwAQR8qeeFq4pP\nrt9GAGlxtuYgzIIcKJPwE0dZlcBCg+GnptCUZXp/38BP1eYC+xTXSL6Muq1etYfg\nodXdb7Yl+2h1IHuOwo5rjgY5kpY7GcAs8AjGk3lDD/av60OTYccknH0NCVSmPoXK\nvrxDBOn0LQRNBLcAfnTKgHrzy0Q5h4TNkkyTgxkoQw5ObDk9nnabTxql732yy9BY\ns+hM9+dSFO1HKeVXreYSA2n1ndF18YAvAumzgyqzB7I4pMHXq1kC/8bONMJxwSkS\nYm6CoXKyavp7RqGMyeVpRC7tV+blkrrUml0BwNkxE+XnwDRB3xDV6hqgWe0XrifD\nYTfvd9ScZQP83ip0r4IKlq4GMv/R5shcCRJSkSZ6QSGshH40JYSoiwJf5FHbj9ND\n7do0UAqebWo4yNx63j/wb2ULorW3AClv0BCFSdPsIrCStiGdpgJDBR2P2NZOCob3\nG9uMj+wJD6JJg2nWqNJxkANXX37Qf8plgzssrhrgOvB0fjjS7GYhfkfmZTJ0wPOw\nA8+KzFseBh4UFGgue78KwgkCAwEAAQ== ' __Keyring= __KeyringFile="/usr/share/keyrings/ubuntu-archive-keyring.gpg" __SkipSigCheck=0 +__SkipEmulation=0 __UseMirror=0 __UnprocessedBuildArgs= @@ -162,9 +164,13 @@ while :; do armel) __BuildArch=armel __UbuntuArch=armel - __UbuntuRepo="http://ftp.debian.org/debian/" - __CodeName=jessie + __UbuntuRepo="http://archive.debian.org/debian/" + __CodeName=buster __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" + __LLDB_Package="liblldb-6.0-dev" + __UbuntuPackages="${__UbuntuPackages// libomp-dev/}" + __UbuntuPackages="${__UbuntuPackages// libomp5/}" + __UbuntuSuites= ;; armv6) __BuildArch=armv6 @@ -180,6 +186,18 @@ while :; do __Keyring="--keyring $__KeyringFile" fi ;; + loongarch64) + __BuildArch=loongarch64 + __AlpineArch=loongarch64 + __QEMUArch=loongarch64 + __UbuntuArch=loong64 + __UbuntuSuites=unreleased + __LLDB_Package="liblldb-19-dev" + + if [[ "$__CodeName" == "sid" ]]; then + __UbuntuRepo="http://ftp.ports.debian.org/debian-ports/" + fi + ;; riscv64) __BuildArch=riscv64 __AlpineArch=riscv64 @@ -264,44 +282,21 @@ while :; do ;; xenial) # Ubuntu 16.04 - if [[ "$__CodeName" != "jessie" ]]; then - __CodeName=xenial - fi - ;; - zesty) # Ubuntu 17.04 - if [[ "$__CodeName" != "jessie" ]]; then - __CodeName=zesty - fi + __CodeName=xenial ;; bionic) # Ubuntu 18.04 - if [[ "$__CodeName" != "jessie" ]]; then - __CodeName=bionic - fi + __CodeName=bionic ;; focal) # Ubuntu 20.04 - if [[ "$__CodeName" != "jessie" ]]; then - __CodeName=focal - fi + __CodeName=focal ;; jammy) # Ubuntu 22.04 - if [[ "$__CodeName" != "jessie" ]]; then - __CodeName=jammy - fi + __CodeName=jammy ;; noble) # Ubuntu 24.04 - if [[ "$__CodeName" != "jessie" ]]; then - __CodeName=noble - fi - if [[ -n "$__LLDB_Package" ]]; then - __LLDB_Package="liblldb-18-dev" - fi - ;; - jessie) # Debian 8 - __CodeName=jessie - __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" - - if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + __CodeName=noble + if [[ -z "$__LLDB_Package" ]]; then + __LLDB_Package="liblldb-19-dev" fi ;; stretch) # Debian 9 @@ -319,7 +314,7 @@ while :; do __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + __UbuntuRepo="http://archive.debian.org/debian/" fi ;; bullseye) # Debian 11 @@ -340,10 +335,28 @@ while :; do ;; sid) # Debian sid __CodeName=sid - __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" + __UbuntuSuites= - if [[ -z "$__UbuntuRepo" ]]; then - __UbuntuRepo="http://ftp.debian.org/debian/" + # Debian-Ports architectures need different values + case "$__UbuntuArch" in + amd64|arm64|armel|armhf|i386|mips64el|ppc64el|riscv64|s390x) + __KeyringFile="/usr/share/keyrings/debian-archive-keyring.gpg" + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.debian.org/debian/" + fi + ;; + *) + __KeyringFile="/usr/share/keyrings/debian-ports-archive-keyring.gpg" + + if [[ -z "$__UbuntuRepo" ]]; then + __UbuntuRepo="http://ftp.ports.debian.org/debian-ports/" + fi + ;; + esac + + if [[ -e "$__KeyringFile" ]]; then + __Keyring="--keyring $__KeyringFile" fi ;; tizen) @@ -370,7 +383,7 @@ while :; do ;; freebsd14) __CodeName=freebsd - __FreeBSDBase="14.0-RELEASE" + __FreeBSDBase="14.2-RELEASE" __FreeBSDABI="14" __SkipUnmount=1 ;; @@ -388,6 +401,9 @@ while :; do --skipsigcheck) __SkipSigCheck=1 ;; + --skipemulation) + __SkipEmulation=1 + ;; --rootfsdir|-rootfsdir) shift __RootfsDir="$1" @@ -420,16 +436,15 @@ case "$__AlpineVersion" in elif [[ "$__AlpineArch" == "x86" ]]; then __AlpineVersion=3.17 # minimum version that supports lldb-dev __AlpinePackages+=" llvm15-libs" - elif [[ "$__AlpineArch" == "riscv64" ]]; then + elif [[ "$__AlpineArch" == "riscv64" || "$__AlpineArch" == "loongarch64" ]]; then + __AlpineVersion=3.21 # minimum version that supports lldb-dev + __AlpinePackages+=" llvm19-libs" + elif [[ -n "$__AlpineMajorVersion" ]]; then + # use whichever alpine version is provided and select the latest toolchain libs __AlpineLlvmLibsLookup=1 - __AlpineVersion=edge # minimum version with APKINDEX.tar.gz (packages archive) else __AlpineVersion=3.13 # 3.13 to maximize compatibility __AlpinePackages+=" llvm10-libs" - - if [[ "$__AlpineArch" == "armv7" ]]; then - __AlpinePackages="${__AlpinePackages//numactl-dev/}" - fi fi esac @@ -439,15 +454,6 @@ if [[ "$__AlpineVersion" =~ 3\.1[345] ]]; then __AlpinePackages="${__AlpinePackages/compiler-rt/compiler-rt-static}" fi -if [[ "$__BuildArch" == "armel" ]]; then - __LLDB_Package="lldb-3.5-dev" -fi - -if [[ "$__CodeName" == "xenial" && "$__UbuntuArch" == "armhf" ]]; then - # libnuma-dev is not available on armhf for xenial - __UbuntuPackages="${__UbuntuPackages//libnuma-dev/}" -fi - __UbuntuPackages+=" ${__LLDB_Package:-}" if [[ -z "$__UbuntuRepo" ]]; then @@ -496,7 +502,7 @@ if [[ "$__CodeName" == "alpine" ]]; then arch="$(uname -m)" ensureDownloadTool - + if [[ "$__hasWget" == 1 ]]; then wget -P "$__ApkToolsDir" "https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v$__ApkToolsVersion/$arch/apk.static" else @@ -512,11 +518,6 @@ if [[ "$__CodeName" == "alpine" ]]; then echo "$__ApkToolsSHA512SUM $__ApkToolsDir/apk.static" | sha512sum -c chmod +x "$__ApkToolsDir/apk.static" - if [[ -f "/usr/bin/qemu-$__QEMUArch-static" ]]; then - mkdir -p "$__RootfsDir"/usr/bin - cp -v "/usr/bin/qemu-$__QEMUArch-static" "$__RootfsDir/usr/bin" - fi - if [[ "$__AlpineVersion" == "edge" ]]; then version=edge else @@ -536,6 +537,10 @@ if [[ "$__CodeName" == "alpine" ]]; then __ApkSignatureArg="--keys-dir $__ApkKeysDir" fi + if [[ "$__SkipEmulation" == "1" ]]; then + __NoEmulationArg="--no-scripts" + fi + # initialize DB # shellcheck disable=SC2086 "$__ApkToolsDir/apk.static" \ @@ -557,7 +562,7 @@ if [[ "$__CodeName" == "alpine" ]]; then "$__ApkToolsDir/apk.static" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/main" \ -X "http://dl-cdn.alpinelinux.org/alpine/$version/community" \ - -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" \ + -U $__ApkSignatureArg --root "$__RootfsDir" --arch "$__AlpineArch" $__NoEmulationArg \ add $__AlpinePackages rm -r "$__ApkToolsDir" @@ -573,7 +578,7 @@ elif [[ "$__CodeName" == "freebsd" ]]; then curl -SL "https://download.freebsd.org/ftp/releases/${__FreeBSDArch}/${__FreeBSDMachineArch}/${__FreeBSDBase}/base.txz" | tar -C "$__RootfsDir" -Jxf - ./lib ./usr/lib ./usr/libdata ./usr/include ./usr/share/keys ./etc ./bin/freebsd-version fi echo "ABI = \"FreeBSD:${__FreeBSDABI}:${__FreeBSDMachineArch}\"; FINGERPRINTS = \"${__RootfsDir}/usr/share/keys\"; REPOS_DIR = [\"${__RootfsDir}/etc/pkg\"]; REPO_AUTOUPDATE = NO; RUN_SCRIPTS = NO;" > "${__RootfsDir}"/usr/local/etc/pkg.conf - echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"${__RootfsDir}/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf + echo "FreeBSD: { url: \"pkg+http://pkg.FreeBSD.org/\${ABI}/quarterly\", mirror_type: \"srv\", signature_type: \"fingerprints\", fingerprints: \"/usr/share/keys/pkg\", enabled: yes }" > "${__RootfsDir}"/etc/pkg/FreeBSD.conf mkdir -p "$__RootfsDir"/tmp # get and build package manager if [[ "$__hasWget" == 1 ]]; then @@ -681,7 +686,7 @@ elif [[ "$__CodeName" == "haiku" ]]; then ensureDownloadTool - echo "Downloading Haiku package tool" + echo "Downloading Haiku package tools" git clone https://github.com/haiku/haiku-toolchains-ubuntu --depth 1 "$__RootfsDir/tmp/script" if [[ "$__hasWget" == 1 ]]; then wget -O "$__RootfsDir/tmp/download/hosttools.zip" "$("$__RootfsDir/tmp/script/fetch.sh" --hosttools)" @@ -691,34 +696,42 @@ elif [[ "$__CodeName" == "haiku" ]]; then unzip -o "$__RootfsDir/tmp/download/hosttools.zip" -d "$__RootfsDir/tmp/bin" - DepotBaseUrl="https://depot.haiku-os.org/__api/v2/pkg/get-pkg" - HpkgBaseUrl="https://eu.hpkg.haiku-os.org/haiku/master/$__HaikuArch/current" + HaikuBaseUrl="https://eu.hpkg.haiku-os.org/haiku/master/$__HaikuArch/current" + HaikuPortsBaseUrl="https://eu.hpkg.haiku-os.org/haikuports/master/$__HaikuArch/current" + + echo "Downloading HaikuPorts package repository index..." + if [[ "$__hasWget" == 1 ]]; then + wget -P "$__RootfsDir/tmp/download" "$HaikuPortsBaseUrl/repo" + else + curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HaikuPortsBaseUrl/repo" + fi - # Download Haiku packages echo "Downloading Haiku packages" read -ra array <<<"$__HaikuPackages" for package in "${array[@]}"; do echo "Downloading $package..." - # API documented here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L60 - # The schema here: https://github.com/haiku/haikudepotserver/blob/master/haikudepotserver-api2/src/main/resources/api2/pkg.yaml#L598 + hpkgFilename="$(LD_LIBRARY_PATH="$__RootfsDir/tmp/bin" "$__RootfsDir/tmp/bin/package_repo" list -f "$__RootfsDir/tmp/download/repo" | + grep -E "${package}-" | sort -V | tail -n 1 | xargs)" + if [ -z "$hpkgFilename" ]; then + >&2 echo "ERROR: package $package missing." + exit 1 + fi + echo "Resolved filename: $hpkgFilename..." + hpkgDownloadUrl="$HaikuPortsBaseUrl/packages/$hpkgFilename" if [[ "$__hasWget" == 1 ]]; then - hpkgDownloadUrl="$(wget -qO- --post-data '{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ - --header 'Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" wget -P "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" else - hpkgDownloadUrl="$(curl -sSL -XPOST --data '{"name":"'"$package"'","repositorySourceCode":"haikuports_'$__HaikuArch'","versionType":"LATEST","naturalLanguageCode":"en"}' \ - --header 'Content-Type:application/json' "$DepotBaseUrl" | jq -r '.result.versions[].hpkgDownloadURL')" curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$hpkgDownloadUrl" fi done for package in haiku haiku_devel; do echo "Downloading $package..." if [[ "$__hasWget" == 1 ]]; then - hpkgVersion="$(wget -qO- "$HpkgBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" - wget -P "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + hpkgVersion="$(wget -qO- "$HaikuBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" + wget -P "$__RootfsDir/tmp/download" "$HaikuBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" else - hpkgVersion="$(curl -sSL "$HpkgBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" - curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HpkgBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" + hpkgVersion="$(curl -sSL "$HaikuBaseUrl" | sed -n 's/^.*version: "\([^"]*\)".*$/\1/p')" + curl -SLO --create-dirs --output-dir "$__RootfsDir/tmp/download" "$HaikuBaseUrl/packages/$package-$hpkgVersion-1-$__HaikuArch.hpkg" fi done @@ -744,25 +757,67 @@ elif [[ "$__CodeName" == "haiku" ]]; then popd rm -rf "$__RootfsDir/tmp" elif [[ -n "$__CodeName" ]]; then + __Suites="$__CodeName $(for suite in $__UbuntuSuites; do echo -n "$__CodeName-$suite "; done)" + + if [[ "$__SkipEmulation" == "1" ]]; then + if [[ -z "$AR" ]]; then + if command -v ar &>/dev/null; then + AR="$(command -v ar)" + elif command -v llvm-ar &>/dev/null; then + AR="$(command -v llvm-ar)" + else + echo "Unable to find ar or llvm-ar on PATH, add them to PATH or set AR environment variable pointing to the available AR tool" + exit 1 + fi + fi + + PYTHON=${PYTHON_EXECUTABLE:-python3} + + # shellcheck disable=SC2086,SC2046 + echo running "$PYTHON" "$__CrossDir/install-debs.py" --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \ + $(for suite in $__Suites; do echo -n "--suite $suite "; done) \ + $__UbuntuPackages + + # shellcheck disable=SC2086,SC2046 + "$PYTHON" "$__CrossDir/install-debs.py" --arch "$__UbuntuArch" --mirror "$__UbuntuRepo" --rootfsdir "$__RootfsDir" --artool "$AR" \ + $(for suite in $__Suites; do echo -n "--suite $suite "; done) \ + $__UbuntuPackages + exit 0 + fi + + __UpdateOptions= if [[ "$__SkipSigCheck" == "0" ]]; then __Keyring="$__Keyring --force-check-gpg" + else + __Keyring= + __UpdateOptions="--allow-unauthenticated --allow-insecure-repositories" fi # shellcheck disable=SC2086 echo running debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" - debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo" + # shellcheck disable=SC2086 + if ! debootstrap "--variant=minbase" $__Keyring --arch "$__UbuntuArch" "$__CodeName" "$__RootfsDir" "$__UbuntuRepo"; then + echo "debootstrap failed! dumping debootstrap.log" + cat "$__RootfsDir/debootstrap/debootstrap.log" + exit 1 + fi + + rm -rf "$__RootfsDir"/etc/apt/*.{sources,list} "$__RootfsDir"/etc/apt/sources.list.d mkdir -p "$__RootfsDir/etc/apt/sources.list.d/" + + # shellcheck disable=SC2086 cat > "$__RootfsDir/etc/apt/sources.list.d/$__CodeName.sources" < token2) - (token1 < token2) + else: + return -1 if isinstance(token1, str) else 1 + + return len(tokens1) - len(tokens2) + +def compare_debian_versions(version1, version2): + """Compare two Debian package versions.""" + epoch1, upstream1, revision1 = parse_debian_version(version1) + epoch2, upstream2, revision2 = parse_debian_version(version2) + + if epoch1 != epoch2: + return epoch1 - epoch2 + + result = compare_upstream_version(upstream1, upstream2) + if result != 0: + return result + + return compare_upstream_version(revision1, revision2) + +def resolve_dependencies(packages, aliases, desired_packages): + """Recursively resolves dependencies for the desired packages.""" + resolved = [] + to_process = deque(desired_packages) + + while to_process: + current = to_process.popleft() + resolved_package = current if current in packages else aliases.get(current, [None])[0] + + if not resolved_package: + print(f"Error: Package '{current}' was not found in the available packages.") + sys.exit(1) + + if resolved_package not in resolved: + resolved.append(resolved_package) + + deps = packages.get(resolved_package, {}).get("Depends", "") + if deps: + deps = [dep.split(' ')[0] for dep in deps.split(', ') if dep] + for dep in deps: + if dep not in resolved and dep not in to_process and dep in packages: + to_process.append(dep) + + return resolved + +def parse_package_index(content): + """Parses the Packages.gz file and returns package information.""" + packages = {} + aliases = {} + entries = re.split(r'\n\n+', content) + + for entry in entries: + fields = dict(re.findall(r'^(\S+): (.+)$', entry, re.MULTILINE)) + if "Package" in fields: + package_name = fields["Package"] + version = fields.get("Version") + filename = fields.get("Filename") + depends = fields.get("Depends") + provides = fields.get("Provides", None) + + # Only update if package_name is not in packages or if the new version is higher + if package_name not in packages or compare_debian_versions(version, packages[package_name]["Version"]) > 0: + packages[package_name] = { + "Version": version, + "Filename": filename, + "Depends": depends + } + + # Update aliases if package provides any alternatives + if provides: + provides_list = [x.strip() for x in provides.split(",")] + for alias in provides_list: + # Strip version specifiers + alias_name = re.sub(r'\s*\(=.*\)', '', alias) + if alias_name not in aliases: + aliases[alias_name] = [] + if package_name not in aliases[alias_name]: + aliases[alias_name].append(package_name) + + return packages, aliases + +def install_packages(mirror, packages_info, aliases, tmp_dir, extract_dir, ar_tool, desired_packages): + """Downloads .deb files and extracts them.""" + resolved_packages = resolve_dependencies(packages_info, aliases, desired_packages) + print(f"Resolved packages (including dependencies): {resolved_packages}") + + packages_to_download = {} + + for pkg in resolved_packages: + if pkg in packages_info: + packages_to_download[pkg] = packages_info[pkg] + + if pkg in aliases: + for alias in aliases[pkg]: + if alias in packages_info: + packages_to_download[alias] = packages_info[alias] + + asyncio.run(download_deb_files_parallel(mirror, packages_to_download, tmp_dir)) + + package_to_deb_file_map = {} + for pkg in resolved_packages: + pkg_info = packages_info.get(pkg) + if pkg_info: + deb_filename = pkg_info.get("Filename") + if deb_filename: + deb_file_path = os.path.join(tmp_dir, os.path.basename(deb_filename)) + package_to_deb_file_map[pkg] = deb_file_path + + for pkg in reversed(resolved_packages): + deb_file = package_to_deb_file_map.get(pkg) + if deb_file and os.path.exists(deb_file): + extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool) + + print("All done!") + +def extract_deb_file(deb_file, tmp_dir, extract_dir, ar_tool): + """Extract .deb file contents""" + + os.makedirs(extract_dir, exist_ok=True) + + with tempfile.TemporaryDirectory(dir=tmp_dir) as tmp_subdir: + result = subprocess.run(f"{ar_tool} t {os.path.abspath(deb_file)}", cwd=tmp_subdir, check=True, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + + tar_filename = None + for line in result.stdout.decode().splitlines(): + if line.startswith("data.tar"): + tar_filename = line.strip() + break + + if not tar_filename: + raise FileNotFoundError(f"Could not find 'data.tar.*' in {deb_file}.") + + tar_file_path = os.path.join(tmp_subdir, tar_filename) + print(f"Extracting {tar_filename} from {deb_file}..") + + subprocess.run(f"{ar_tool} p {os.path.abspath(deb_file)} {tar_filename} > {tar_file_path}", check=True, shell=True) + + file_extension = os.path.splitext(tar_file_path)[1].lower() + + if file_extension == ".xz": + mode = "r:xz" + elif file_extension == ".gz": + mode = "r:gz" + elif file_extension == ".zst": + # zstd is not supported by standard library yet + decompressed_tar_path = tar_file_path.replace(".zst", "") + with open(tar_file_path, "rb") as zst_file, open(decompressed_tar_path, "wb") as decompressed_file: + dctx = zstandard.ZstdDecompressor() + dctx.copy_stream(zst_file, decompressed_file) + + tar_file_path = decompressed_tar_path + mode = "r" + else: + raise ValueError(f"Unsupported compression format: {file_extension}") + + with tarfile.open(tar_file_path, mode) as tar: + tar.extractall(path=extract_dir, filter='fully_trusted') + +def finalize_setup(rootfsdir): + lib_dir = os.path.join(rootfsdir, 'lib') + usr_lib_dir = os.path.join(rootfsdir, 'usr', 'lib') + + if os.path.exists(lib_dir): + if os.path.islink(lib_dir): + os.remove(lib_dir) + else: + os.makedirs(usr_lib_dir, exist_ok=True) + + for item in os.listdir(lib_dir): + src = os.path.join(lib_dir, item) + dest = os.path.join(usr_lib_dir, item) + + if os.path.isdir(src): + shutil.copytree(src, dest, dirs_exist_ok=True) + else: + shutil.copy2(src, dest) + + shutil.rmtree(lib_dir) + + os.symlink(usr_lib_dir, lib_dir) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Generate rootfs for .NET runtime on Debian-like OS") + parser.add_argument("--distro", required=False, help="Distro name (e.g., debian, ubuntu, etc.)") + parser.add_argument("--arch", required=True, help="Architecture (e.g., amd64, loong64, etc.)") + parser.add_argument("--rootfsdir", required=True, help="Destination directory.") + parser.add_argument('--suite', required=True, action='append', help='Specify one or more repository suites to collect index data.') + parser.add_argument("--mirror", required=False, help="Mirror (e.g., http://ftp.debian.org/debian-ports etc.)") + parser.add_argument("--artool", required=False, default="ar", help="ar tool to extract debs (e.g., ar, llvm-ar etc.)") + parser.add_argument("packages", nargs="+", help="List of package names to be installed.") + + args = parser.parse_args() + + if args.mirror is None: + if args.distro == "ubuntu": + args.mirror = "http://archive.ubuntu.com/ubuntu" if args.arch in ["amd64", "i386"] else "http://ports.ubuntu.com/ubuntu-ports" + elif args.distro == "debian": + args.mirror = "http://ftp.debian.org/debian-ports" + else: + raise Exception("Unsupported distro") + + DESIRED_PACKAGES = args.packages + [ # base packages + "dpkg", + "busybox", + "libc-bin", + "base-files", + "base-passwd", + "debianutils" + ] + + print(f"Creating rootfs. rootfsdir: {args.rootfsdir}, distro: {args.distro}, arch: {args.arch}, suites: {args.suite}, mirror: {args.mirror}") + + package_index_content = asyncio.run(download_package_index_parallel(args.mirror, args.arch, args.suite)) + + packages_info, aliases = parse_package_index(package_index_content) + + with tempfile.TemporaryDirectory() as tmp_dir: + install_packages(args.mirror, packages_info, aliases, tmp_dir, args.rootfsdir, args.artool, DESIRED_PACKAGES) + + finalize_setup(args.rootfsdir) diff --git a/eng/common/cross/tizen-build-rootfs.sh b/eng/common/cross/tizen-build-rootfs.sh old mode 100644 new mode 100755 diff --git a/eng/common/cross/tizen-fetch.sh b/eng/common/cross/tizen-fetch.sh old mode 100644 new mode 100755 index 28936ceef3a7..37c3a61f1de8 --- a/eng/common/cross/tizen-fetch.sh +++ b/eng/common/cross/tizen-fetch.sh @@ -156,13 +156,8 @@ fetch_tizen_pkgs() done } -if [ "$TIZEN_ARCH" == "riscv64" ]; then - BASE="Tizen-Base-RISCV" - UNIFIED="Tizen-Unified-RISCV" -else - BASE="Tizen-Base" - UNIFIED="Tizen-Unified" -fi +BASE="Tizen-Base" +UNIFIED="Tizen-Unified" Inform "Initialize ${TIZEN_ARCH} base" fetch_tizen_pkgs_init standard $BASE diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 9a7ecfbd42c5..0ff85cf0367e 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -67,6 +67,13 @@ elseif(TARGET_ARCH_NAME STREQUAL "armv6") else() set(TOOLCHAIN "arm-linux-gnueabihf") endif() +elseif(TARGET_ARCH_NAME STREQUAL "loongarch64") + set(CMAKE_SYSTEM_PROCESSOR "loongarch64") + if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/loongarch64-alpine-linux-musl) + set(TOOLCHAIN "loongarch64-alpine-linux-musl") + else() + set(TOOLCHAIN "loongarch64-linux-gnu") + endif() elseif(TARGET_ARCH_NAME STREQUAL "ppc64le") set(CMAKE_SYSTEM_PROCESSOR ppc64le) if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/powerpc64le-alpine-linux-musl) @@ -118,7 +125,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu") endif() else() - message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!") + message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, loongarch64, ppc64le, riscv64, s390x, x64 and x86 are supported!") endif() if(DEFINED ENV{TOOLCHAIN}) @@ -148,6 +155,25 @@ if(TIZEN) include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN}) endif() +function(locate_toolchain_exec exec var) + set(TOOLSET_PREFIX ${TOOLCHAIN}-) + string(TOUPPER ${exec} EXEC_UPPERCASE) + if(NOT "$ENV{CLR_${EXEC_UPPERCASE}}" STREQUAL "") + set(${var} "$ENV{CLR_${EXEC_UPPERCASE}}" PARENT_SCOPE) + return() + endif() + + find_program(EXEC_LOCATION_${exec} + NAMES + "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}" + "${TOOLSET_PREFIX}${exec}") + + if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec}-NOTFOUND") + message(FATAL_ERROR "Unable to find toolchain executable. Name: ${exec}, Prefix: ${TOOLSET_PREFIX}.") + endif() + set(${var} ${EXEC_LOCATION_${exec}} PARENT_SCOPE) +endfunction() + if(ANDROID) if(TARGET_ARCH_NAME STREQUAL "arm") set(ANDROID_ABI armeabi-v7a) @@ -178,66 +204,24 @@ elseif(FREEBSD) set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld") elseif(ILLUMOS) set(CMAKE_SYSROOT "${CROSS_ROOTFS}") + set(CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS}") + set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp") + set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp") include_directories(SYSTEM ${CROSS_ROOTFS}/include) - set(TOOLSET_PREFIX ${TOOLCHAIN}-) - function(locate_toolchain_exec exec var) - string(TOUPPER ${exec} EXEC_UPPERCASE) - if(NOT "$ENV{CLR_${EXEC_UPPERCASE}}" STREQUAL "") - set(${var} "$ENV{CLR_${EXEC_UPPERCASE}}" PARENT_SCOPE) - return() - endif() - - find_program(EXEC_LOCATION_${exec} - NAMES - "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}" - "${TOOLSET_PREFIX}${exec}") - - if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec}-NOTFOUND") - message(FATAL_ERROR "Unable to find toolchain executable. Name: ${exec}, Prefix: ${TOOLSET_PREFIX}.") - endif() - set(${var} ${EXEC_LOCATION_${exec}} PARENT_SCOPE) - endfunction() - - set(CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS}") - locate_toolchain_exec(gcc CMAKE_C_COMPILER) locate_toolchain_exec(g++ CMAKE_CXX_COMPILER) - - set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp") - set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp") elseif(HAIKU) set(CMAKE_SYSROOT "${CROSS_ROOTFS}") set(CMAKE_PROGRAM_PATH "${CMAKE_PROGRAM_PATH};${CROSS_ROOTFS}/cross-tools-x86_64/bin") - - set(TOOLSET_PREFIX ${TOOLCHAIN}-) - function(locate_toolchain_exec exec var) - string(TOUPPER ${exec} EXEC_UPPERCASE) - if(NOT "$ENV{CLR_${EXEC_UPPERCASE}}" STREQUAL "") - set(${var} "$ENV{CLR_${EXEC_UPPERCASE}}" PARENT_SCOPE) - return() - endif() - - find_program(EXEC_LOCATION_${exec} - NAMES - "${TOOLSET_PREFIX}${exec}${CLR_CMAKE_COMPILER_FILE_NAME_VERSION}" - "${TOOLSET_PREFIX}${exec}") - - if (EXEC_LOCATION_${exec} STREQUAL "EXEC_LOCATION_${exec}-NOTFOUND") - message(FATAL_ERROR "Unable to find toolchain executable. Name: ${exec}, Prefix: ${TOOLSET_PREFIX}.") - endif() - set(${var} ${EXEC_LOCATION_${exec}} PARENT_SCOPE) - endfunction() - set(CMAKE_SYSTEM_PREFIX_PATH "${CROSS_ROOTFS}") + set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp") + set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp") locate_toolchain_exec(gcc CMAKE_C_COMPILER) locate_toolchain_exec(g++ CMAKE_CXX_COMPILER) - set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES} -lssp") - set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lssp") - # let CMake set up the correct search paths include(Platform/Haiku) else() @@ -307,7 +291,7 @@ endif() # Specify compile options -if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU) +if((TARGET_ARCH_NAME MATCHES "^(arm|arm64|armel|armv6|loongarch64|ppc64le|riscv64|s390x|x64|x86)$" AND NOT ANDROID AND NOT FREEBSD) OR ILLUMOS OR HAIKU) set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 36dbd45e1ce8..e889f439b8dc 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -68,7 +68,7 @@ function InstallDarcCli { fi fi - local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" + local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" echo "Installing Darc CLI version $darcVersion..." echo "You may need to restart your command shell if this is the first dotnet tool you have installed." diff --git a/eng/common/dotnet.cmd b/eng/common/dotnet.cmd new file mode 100644 index 000000000000..527fa4bb38fb --- /dev/null +++ b/eng/common/dotnet.cmd @@ -0,0 +1,7 @@ +@echo off + +:: This script is used to install the .NET SDK. +:: It will also invoke the SDK with any provided arguments. + +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet.ps1""" %*" +exit /b %ErrorLevel% diff --git a/eng/common/dotnet.ps1 b/eng/common/dotnet.ps1 new file mode 100644 index 000000000000..45e5676c9ebd --- /dev/null +++ b/eng/common/dotnet.ps1 @@ -0,0 +1,11 @@ +# This script is used to install the .NET SDK. +# It will also invoke the SDK with any provided arguments. + +. $PSScriptRoot\tools.ps1 +$dotnetRoot = InitializeDotNetCli -install:$true + +# Invoke acquired SDK with args if they are provided +if ($args.count -gt 0) { + $env:DOTNET_NOLOGO=1 + & "$dotnetRoot\dotnet.exe" $args +} diff --git a/eng/common/dotnet.sh b/eng/common/dotnet.sh new file mode 100755 index 000000000000..2ef68235675f --- /dev/null +++ b/eng/common/dotnet.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# This script is used to install the .NET SDK. +# It will also invoke the SDK with any provided arguments. + +source="${BASH_SOURCE[0]}" +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +source $scriptroot/tools.sh +InitializeDotNetCli true # install + +# Invoke acquired SDK with args if they are provided +if [[ $# > 0 ]]; then + __dotnetDir=${_InitializeDotNetCli} + dotnetPath=${__dotnetDir}/dotnet + ${dotnetPath} "$@" +fi diff --git a/eng/common/generate-locproject.ps1 b/eng/common/generate-locproject.ps1 index 524aaa57f2b7..fa1cdc2b3007 100644 --- a/eng/common/generate-locproject.ps1 +++ b/eng/common/generate-locproject.ps1 @@ -33,15 +33,27 @@ $jsonTemplateFiles | ForEach-Object { $jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern +$wxlFilesV3 = @() +$wxlFilesV5 = @() $wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them if (-not $wxlFiles) { $wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files if ($wxlEnFiles) { - $wxlFiles = @() - $wxlEnFiles | ForEach-Object { - $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" - $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru - } + $wxlFiles = @() + $wxlEnFiles | ForEach-Object { + $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" + $content = Get-Content $_.FullName -Raw + + # Split files on schema to select different parser settings in the generated project. + if ($content -like "*http://wixtoolset.org/schemas/v4/wxl*") + { + $wxlFilesV5 += Copy-Item $_.FullName -Destination $destinationFile -PassThru + } + elseif ($content -like "*http://schemas.microsoft.com/wix/2006/localization*") + { + $wxlFilesV3 += Copy-Item $_.FullName -Destination $destinationFile -PassThru + } + } } } @@ -114,7 +126,32 @@ $locJson = @{ CloneLanguageSet = "WiX_CloneLanguages" LssFiles = @( "wxl_loc.lss" ) LocItems = @( - $wxlFiles | ForEach-Object { + $wxlFilesV3 | ForEach-Object { + $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" + $continue = $true + foreach ($exclusion in $exclusions.Exclusions) { + if ($_.FullName.Contains($exclusion)) { + $continue = $false + } + } + $sourceFile = ($_.FullName | Resolve-Path -Relative) + if ($continue) + { + return @{ + SourceFile = $sourceFile + CopyOption = "LangIDOnPath" + OutputPath = $outputPath + } + } + } + ) + }, + @{ + LanguageSet = $LanguageSet + CloneLanguageSet = "WiX_CloneLanguages" + LssFiles = @( "P210WxlSchemaV4.lss" ) + LocItems = @( + $wxlFilesV5 | ForEach-Object { $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" $continue = $true foreach ($exclusion in $exclusions.Exclusions) { diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh old mode 100644 new mode 100755 diff --git a/eng/common/native/install-dependencies.sh b/eng/common/native/install-dependencies.sh new file mode 100755 index 000000000000..477a44f335be --- /dev/null +++ b/eng/common/native/install-dependencies.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +# This is a simple script primarily used for CI to install necessary dependencies +# +# Usage: +# +# ./install-dependencies.sh + +os="$(echo "$1" | tr "[:upper:]" "[:lower:]")" + +if [ -z "$os" ]; then + . "$(dirname "$0")"/init-os-and-arch.sh +fi + +case "$os" in + linux) + if [ -e /etc/os-release ]; then + . /etc/os-release + fi + + if [ "$ID" = "debian" ] || [ "$ID_LIKE" = "debian" ]; then + apt update + + apt install -y build-essential gettext locales cmake llvm clang lld lldb liblldb-dev libunwind8-dev libicu-dev liblttng-ust-dev \ + libssl-dev libkrb5-dev pigz cpio + + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 + elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ]; then + pkg_mgr="$(command -v tdnf 2>/dev/null || command -v dnf)" + $pkg_mgr install -y cmake llvm lld lldb clang python curl libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio + elif [ "$ID" = "alpine" ]; then + apk add build-base cmake bash curl clang llvm-dev lld lldb krb5-dev lttng-ust-dev icu-dev openssl-dev pigz cpio + else + echo "Unsupported distro. distro: $ID" + exit 1 + fi + ;; + + osx|maccatalyst|ios|iossimulator|tvos|tvossimulator) + echo "Installed xcode version: $(xcode-select -p)" + + export HOMEBREW_NO_INSTALL_CLEANUP=1 + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 + # Skip brew update for now, see https://github.com/actions/setup-python/issues/577 + # brew update --preinstall + brew bundle --no-upgrade --file=- < Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." + Write-Host " -excludeCIBinaryLog When running on CI, allow no binary log (short: -nobl)" Write-Host "" Write-Host "Command line arguments not listed above are passed thru to msbuild." } @@ -34,10 +39,11 @@ function Print-Usage() { function Build([string]$target) { $logSuffix = if ($target -eq 'Execute') { '' } else { ".$target" } $log = Join-Path $LogDir "$task$logSuffix.binlog" + $binaryLogArg = if ($binaryLog) { "/bl:$log" } else { "" } $outputPath = Join-Path $ToolsetDir "$task\" MSBuild $taskProject ` - /bl:$log ` + $binaryLogArg ` /t:$target ` /p:Configuration=$configuration ` /p:RepoRoot=$RepoRoot ` @@ -64,7 +70,7 @@ try { $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty } if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { - $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.12.0" -MemberType NoteProperty + $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "18.0.0" -MemberType NoteProperty } if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true diff --git a/eng/common/sdk-task.sh b/eng/common/sdk-task.sh new file mode 100755 index 000000000000..3270f83fa9a7 --- /dev/null +++ b/eng/common/sdk-task.sh @@ -0,0 +1,121 @@ +#!/usr/bin/env bash + +show_usage() { + echo "Common settings:" + echo " --task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)" + echo " --restore Restore dependencies" + echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" + echo " --help Print help and exit" + echo "" + + echo "Advanced settings:" + echo " --excludeCIBinarylog Don't output binary log (short: -nobl)" + echo " --noWarnAsError Do not warn as error" + echo "" + echo "Command line arguments not listed above are passed thru to msbuild." +} + +source="${BASH_SOURCE[0]}" + +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +Build() { + local target=$1 + local log_suffix="" + [[ "$target" != "Execute" ]] && log_suffix=".$target" + local log="$log_dir/$task$log_suffix.binlog" + local binaryLogArg="" + [[ $binary_log == true ]] && binaryLogArg="/bl:$log" + local output_path="$toolset_dir/$task/" + + MSBuild "$taskProject" \ + $binaryLogArg \ + /t:"$target" \ + /p:Configuration="$configuration" \ + /p:RepoRoot="$repo_root" \ + /p:BaseIntermediateOutputPath="$output_path" \ + /v:"$verbosity" \ + $properties +} + +binary_log=true +configuration="Debug" +verbosity="minimal" +exclude_ci_binary_log=false +restore=false +help=false +properties='' +warnAsError=true + +while (($# > 0)); do + lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" + case $lowerI in + --task) + task=$2 + shift 2 + ;; + --restore) + restore=true + shift 1 + ;; + --verbosity) + verbosity=$2 + shift 2 + ;; + --excludecibinarylog|--nobl) + binary_log=false + exclude_ci_binary_log=true + shift 1 + ;; + --noWarnAsError) + warnAsError=false + shift 1 + ;; + --help) + help=true + shift 1 + ;; + *) + properties="$properties $1" + shift 1 + ;; + esac +done + +ci=true + +if $help; then + show_usage + exit 0 +fi + +. "$scriptroot/tools.sh" +InitializeToolset + +if [[ -z "$task" ]]; then + Write-PipelineTelemetryError -Category 'Task' -Name 'MissingTask' -Message "Missing required parameter '-task '" + ExitWithExitCode 1 +fi + +taskProject=$(GetSdkTaskProject "$task") +if [[ ! -e "$taskProject" ]]; then + Write-PipelineTelemetryError -Category 'Task' -Name 'UnknownTask' -Message "Unknown task: $task" + ExitWithExitCode 1 +fi + +if $restore; then + Build "Restore" +fi + +Build "Execute" + + +ExitWithExitCode 0 diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config index 4585cfd6bba1..e5f543ea68c2 100644 --- a/eng/common/sdl/packages.config +++ b/eng/common/sdl/packages.config @@ -1,4 +1,4 @@ - + diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 81ea7a261f2d..92a0664f5647 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -31,6 +31,7 @@ jobs: PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} condition: always() + retryCountOnTaskFailure: 10 # for any logs being locked continueOnError: true - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - output: pipelineArtifact @@ -39,6 +40,7 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any logs being locked sbomEnabled: false # we don't need SBOM for logs - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: @@ -46,7 +48,7 @@ jobs: displayName: Publish Logs PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' publishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() sbomEnabled: false # we don't need SBOM for logs diff --git a/eng/common/templates-official/steps/publish-build-artifacts.yml b/eng/common/templates-official/steps/publish-build-artifacts.yml index 100a3fc98493..fcf6637b2ebc 100644 --- a/eng/common/templates-official/steps/publish-build-artifacts.yml +++ b/eng/common/templates-official/steps/publish-build-artifacts.yml @@ -24,6 +24,10 @@ parameters: - name: is1ESPipeline type: boolean default: true + +- name: retryCountOnTaskFailure + type: string + default: 10 steps: - ${{ if ne(parameters.is1ESPipeline, true) }}: @@ -38,4 +42,5 @@ steps: PathtoPublish: ${{ parameters.pathToPublish }} ${{ if parameters.artifactName }}: ArtifactName: ${{ parameters.artifactName }} - + ${{ if parameters.retryCountOnTaskFailure }}: + retryCountOnTaskFailure: ${{ parameters.retryCountOnTaskFailure }} diff --git a/eng/common/templates-official/steps/source-index-stage1-publish.yml b/eng/common/templates-official/steps/source-index-stage1-publish.yml new file mode 100644 index 000000000000..9b8b80942b5c --- /dev/null +++ b/eng/common/templates-official/steps/source-index-stage1-publish.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 5bdd3dd85fd2..238fa0818f7b 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -46,6 +46,7 @@ jobs: artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any logs being locked - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: @@ -56,6 +57,7 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any logs being locked sbomEnabled: false # we don't need SBOM for logs - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: @@ -66,7 +68,7 @@ jobs: displayName: Publish Logs pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts/log/$(_BuildConfig)' publishLocation: Container - artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() diff --git a/eng/common/templates/steps/publish-build-artifacts.yml b/eng/common/templates/steps/publish-build-artifacts.yml index 6428a98dfef6..605e602e94d1 100644 --- a/eng/common/templates/steps/publish-build-artifacts.yml +++ b/eng/common/templates/steps/publish-build-artifacts.yml @@ -25,6 +25,10 @@ parameters: type: string default: 'Container' +- name: retryCountOnTaskFailure + type: string + default: 10 + steps: - ${{ if eq(parameters.is1ESPipeline, true) }}: - 'eng/common/templates cannot be referenced from a 1ES managed template': error @@ -37,4 +41,6 @@ steps: PublishLocation: ${{ parameters.publishLocation }} PathtoPublish: ${{ parameters.pathToPublish }} ${{ if parameters.artifactName }}: - ArtifactName: ${{ parameters.artifactName }} \ No newline at end of file + ArtifactName: ${{ parameters.artifactName }} + ${{ if parameters.retryCountOnTaskFailure }}: + retryCountOnTaskFailure: ${{ parameters.retryCountOnTaskFailure }} diff --git a/eng/common/templates/steps/source-index-stage1-publish.yml b/eng/common/templates/steps/source-index-stage1-publish.yml new file mode 100644 index 000000000000..182cec33a7bb --- /dev/null +++ b/eng/common/templates/steps/source-index-stage1-publish.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/source-index-stage1-publish.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/eng/common/templates/steps/vmr-sync.yml b/eng/common/templates/steps/vmr-sync.yml new file mode 100644 index 000000000000..eb619c502683 --- /dev/null +++ b/eng/common/templates/steps/vmr-sync.yml @@ -0,0 +1,186 @@ +### These steps synchronize new code from product repositories into the VMR (https://github.com/dotnet/dotnet). +### They initialize the darc CLI and pull the new updates. +### Changes are applied locally onto the already cloned VMR (located in $vmrPath). + +parameters: +- name: targetRef + displayName: Target revision in dotnet/ to synchronize + type: string + default: $(Build.SourceVersion) + +- name: vmrPath + displayName: Path where the dotnet/dotnet is checked out to + type: string + default: $(Agent.BuildDirectory)/vmr + +- name: additionalSyncs + displayName: Optional list of package names whose repo's source will also be synchronized in the local VMR, e.g. NuGet.Protocol + type: object + default: [] + +steps: +- checkout: vmr + displayName: Clone dotnet/dotnet + path: vmr + clean: true + +- checkout: self + displayName: Clone $(Build.Repository.Name) + path: repo + fetchDepth: 0 + +# This step is needed so that when we get a detached HEAD / shallow clone, +# we still pull the commit into the temporary repo clone to use it during the sync. +# Also unshallow the clone so that forwardflow command would work. +- script: | + git branch repo-head + git rev-parse HEAD + displayName: Label PR commit + workingDirectory: $(Agent.BuildDirectory)/repo + +- script: | + git config --global user.name "dotnet-maestro[bot]" + git config --global user.email "dotnet-maestro[bot]@users.noreply.github.com" + displayName: Set git author to dotnet-maestro[bot] + workingDirectory: ${{ parameters.vmrPath }} + +- script: | + ./eng/common/vmr-sync.sh \ + --vmr ${{ parameters.vmrPath }} \ + --tmp $(Agent.TempDirectory) \ + --azdev-pat '$(dn-bot-all-orgs-code-r)' \ + --ci \ + --debug + + if [ "$?" -ne 0 ]; then + echo "##vso[task.logissue type=error]Failed to synchronize the VMR" + exit 1 + fi + displayName: Sync repo into VMR (Unix) + condition: ne(variables['Agent.OS'], 'Windows_NT') + workingDirectory: $(Agent.BuildDirectory)/repo + +- script: | + git config --global diff.astextplain.textconv echo + git config --system core.longpaths true + displayName: Configure Windows git (longpaths, astextplain) + condition: eq(variables['Agent.OS'], 'Windows_NT') + +- powershell: | + ./eng/common/vmr-sync.ps1 ` + -vmr ${{ parameters.vmrPath }} ` + -tmp $(Agent.TempDirectory) ` + -azdevPat '$(dn-bot-all-orgs-code-r)' ` + -ci ` + -debugOutput + + if ($LASTEXITCODE -ne 0) { + echo "##vso[task.logissue type=error]Failed to synchronize the VMR" + exit 1 + } + displayName: Sync repo into VMR (Windows) + condition: eq(variables['Agent.OS'], 'Windows_NT') + workingDirectory: $(Agent.BuildDirectory)/repo + +- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}: + - task: CopyFiles@2 + displayName: Collect failed patches + condition: failed() + inputs: + SourceFolder: '$(Agent.TempDirectory)' + Contents: '*.patch' + TargetFolder: '$(Build.ArtifactStagingDirectory)/FailedPatches' + + - publish: '$(Build.ArtifactStagingDirectory)/FailedPatches' + artifact: $(System.JobDisplayName)_FailedPatches + displayName: Upload failed patches + condition: failed() + +- ${{ each assetName in parameters.additionalSyncs }}: + # The vmr-sync script ends up staging files in the local VMR so we have to commit those + - script: + git commit --allow-empty -am "Forward-flow $(Build.Repository.Name)" + displayName: Commit local VMR changes + workingDirectory: ${{ parameters.vmrPath }} + + - script: | + set -ex + + echo "Searching for details of asset ${{ assetName }}..." + + # Use darc to get dependencies information + dependencies=$(./.dotnet/dotnet darc get-dependencies --name '${{ assetName }}' --ci) + + # Extract repository URL and commit hash + repository=$(echo "$dependencies" | grep 'Repo:' | sed 's/Repo:[[:space:]]*//' | head -1) + + if [ -z "$repository" ]; then + echo "##vso[task.logissue type=error]Asset ${{ assetName }} not found in the dependency list" + exit 1 + fi + + commit=$(echo "$dependencies" | grep 'Commit:' | sed 's/Commit:[[:space:]]*//' | head -1) + + echo "Updating the VMR from $repository / $commit..." + cd .. + git clone $repository ${{ assetName }} + cd ${{ assetName }} + git checkout $commit + git branch "sync/$commit" + + ./eng/common/vmr-sync.sh \ + --vmr ${{ parameters.vmrPath }} \ + --tmp $(Agent.TempDirectory) \ + --azdev-pat '$(dn-bot-all-orgs-code-r)' \ + --ci \ + --debug + + if [ "$?" -ne 0 ]; then + echo "##vso[task.logissue type=error]Failed to synchronize the VMR" + exit 1 + fi + displayName: Sync ${{ assetName }} into (Unix) + condition: ne(variables['Agent.OS'], 'Windows_NT') + workingDirectory: $(Agent.BuildDirectory)/repo + + - powershell: | + $ErrorActionPreference = 'Stop' + + Write-Host "Searching for details of asset ${{ assetName }}..." + + $dependencies = .\.dotnet\dotnet darc get-dependencies --name '${{ assetName }}' --ci + + $repository = $dependencies | Select-String -Pattern 'Repo:\s+([^\s]+)' | Select-Object -First 1 + $repository -match 'Repo:\s+([^\s]+)' | Out-Null + $repository = $matches[1] + + if ($repository -eq $null) { + Write-Error "Asset ${{ assetName }} not found in the dependency list" + exit 1 + } + + $commit = $dependencies | Select-String -Pattern 'Commit:\s+([^\s]+)' | Select-Object -First 1 + $commit -match 'Commit:\s+([^\s]+)' | Out-Null + $commit = $matches[1] + + Write-Host "Updating the VMR from $repository / $commit..." + cd .. + git clone $repository ${{ assetName }} + cd ${{ assetName }} + git checkout $commit + git branch "sync/$commit" + + .\eng\common\vmr-sync.ps1 ` + -vmr ${{ parameters.vmrPath }} ` + -tmp $(Agent.TempDirectory) ` + -azdevPat '$(dn-bot-all-orgs-code-r)' ` + -ci ` + -debugOutput + + if ($LASTEXITCODE -ne 0) { + echo "##vso[task.logissue type=error]Failed to synchronize the VMR" + exit 1 + } + displayName: Sync ${{ assetName }} into (Windows) + condition: ne(variables['Agent.OS'], 'Windows_NT') + workingDirectory: $(Agent.BuildDirectory)/repo diff --git a/eng/common/templates/vmr-build-pr.yml b/eng/common/templates/vmr-build-pr.yml new file mode 100644 index 000000000000..2f3694fa1323 --- /dev/null +++ b/eng/common/templates/vmr-build-pr.yml @@ -0,0 +1,43 @@ +# This pipeline is used for running the VMR verification of the PR changes in repo-level PRs. +# +# It will run a full set of verification jobs defined in: +# https://github.com/dotnet/dotnet/blob/10060d128e3f470e77265f8490f5e4f72dae738e/eng/pipelines/templates/stages/vmr-build.yml#L27-L38 +# +# For repos that do not need to run the full set, you would do the following: +# +# 1. Copy this YML file to a repo-specific location, i.e. outside of eng/common. +# +# 2. Add `verifications` parameter to VMR template reference +# +# Examples: +# - For source-build stage 1 verification, add the following: +# verifications: [ "source-build-stage1" ] +# +# - For Windows only verifications, add the following: +# verifications: [ "unified-build-windows-x64", "unified-build-windows-x86" ] + +trigger: none +pr: none + +variables: +- template: /eng/common/templates/variables/pool-providers.yml@self + +- name: skipComponentGovernanceDetection # we run CG on internal builds only + value: true + +- name: Codeql.Enabled # we run CodeQL on internal builds only + value: false + +resources: + repositories: + - repository: vmr + type: github + name: dotnet/dotnet + endpoint: dotnet + ref: refs/heads/main # Set to whatever VMR branch the PR build should insert into + +stages: +- template: /eng/pipelines/templates/stages/vmr-build.yml@vmr + parameters: + isBuiltFromVmr: false + scope: lite diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index a06513a59407..977a2d4b1039 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -65,10 +65,8 @@ $ErrorActionPreference = 'Stop' # Base-64 encoded SAS token that has permission to storage container described by $runtimeSourceFeed [string]$runtimeSourceFeedKey = if (Test-Path variable:runtimeSourceFeedKey) { $runtimeSourceFeedKey } else { $null } -# True if the build is a product build -[bool]$productBuild = if (Test-Path variable:productBuild) { $productBuild } else { $false } - -[String[]]$properties = if (Test-Path variable:properties) { $properties } else { @() } +# True when the build is running within the VMR. +[bool]$fromVMR = if (Test-Path variable:fromVMR) { $fromVMR } else { $false } function Create-Directory ([string[]] $path) { New-Item -Path $path -Force -ItemType 'Directory' | Out-Null @@ -259,7 +257,20 @@ function Retry($downloadBlock, $maxRetries = 5) { function GetDotNetInstallScript([string] $dotnetRoot) { $installScript = Join-Path $dotnetRoot 'dotnet-install.ps1' + $shouldDownload = $false + if (!(Test-Path $installScript)) { + $shouldDownload = $true + } else { + # Check if the script is older than 30 days + $fileAge = (Get-Date) - (Get-Item $installScript).LastWriteTime + if ($fileAge.Days -gt 30) { + Write-Host "Existing install script is too old, re-downloading..." + $shouldDownload = $true + } + } + + if ($shouldDownload) { Create-Directory $dotnetRoot $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit $uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" @@ -383,8 +394,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.12.0 - $defaultXCopyMSBuildVersion = '17.12.0' + # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/18.0.0 + $defaultXCopyMSBuildVersion = '18.0.0' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { @@ -533,7 +544,8 @@ function LocateVisualStudio([object]$vsRequirements = $null){ if (Get-Member -InputObject $GlobalJson.tools -Name 'vswhere') { $vswhereVersion = $GlobalJson.tools.vswhere } else { - $vswhereVersion = '2.5.2' + # keep this in sync with the VSWhereVersion in DefaultVersions.props + $vswhereVersion = '3.1.7' } $vsWhereDir = Join-Path $ToolsDir "vswhere\$vswhereVersion" @@ -541,7 +553,8 @@ function LocateVisualStudio([object]$vsRequirements = $null){ if (!(Test-Path $vsWhereExe)) { Create-Directory $vsWhereDir - Write-Host 'Downloading vswhere' + Write-Host "Downloading vswhere $vswhereVersion" + $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit Retry({ Invoke-WebRequest "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/vswhere/$vswhereVersion/vswhere.exe" -UseBasicParsing -OutFile $vswhereExe }) @@ -611,14 +624,7 @@ function InitializeBuildTool() { } $dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet') - # Use override if it exists - commonly set by source-build - if ($null -eq $env:_OverrideArcadeInitializeBuildToolFramework) { - $initializeBuildToolFramework="net9.0" - } else { - $initializeBuildToolFramework=$env:_OverrideArcadeInitializeBuildToolFramework - } - - $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = $initializeBuildToolFramework } + $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net' } } elseif ($msbuildEngine -eq "vs") { try { $msbuildPath = InitializeVisualStudioMSBuild -install:$restore @@ -627,7 +633,7 @@ function InitializeBuildTool() { ExitWithExitCode 1 } - $buildTool = @{ Path = $msbuildPath; Command = ""; Tool = "vs"; Framework = "net472"; ExcludePrereleaseVS = $excludePrereleaseVS } + $buildTool = @{ Path = $msbuildPath; Command = ""; Tool = "vs"; Framework = "netframework"; ExcludePrereleaseVS = $excludePrereleaseVS } } else { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Unexpected value of -msbuildEngine: '$msbuildEngine'." ExitWithExitCode 1 @@ -660,7 +666,6 @@ function GetNuGetPackageCachePath() { $env:NUGET_PACKAGES = Join-Path $env:UserProfile '.nuget\packages\' } else { $env:NUGET_PACKAGES = Join-Path $RepoRoot '.packages\' - $env:RESTORENOHTTPCACHE = $true } } @@ -782,26 +787,13 @@ function MSBuild() { $toolsetBuildProject = InitializeToolset $basePath = Split-Path -parent $toolsetBuildProject - $possiblePaths = @( - # new scripts need to work with old packages, so we need to look for the old names/versions - (Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll')), - (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll')), - (Join-Path $basePath (Join-Path net8.0 'Microsoft.DotNet.ArcadeLogging.dll')), - (Join-Path $basePath (Join-Path net8.0 'Microsoft.DotNet.Arcade.Sdk.dll')) - ) - $selectedPath = $null - foreach ($path in $possiblePaths) { - if (Test-Path $path -PathType Leaf) { - $selectedPath = $path - break - } - } + $selectedPath = Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.ArcadeLogging.dll') + if (-not $selectedPath) { - Write-PipelineTelemetryError -Category 'Build' -Message 'Unable to find arcade sdk logger assembly.' + Write-PipelineTelemetryError -Category 'Build' -Message "Unable to find arcade sdk logger assembly: $selectedPath" ExitWithExitCode 1 } + $args += "/logger:$selectedPath" } @@ -832,6 +824,11 @@ function MSBuild-Core() { $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse /p:ContinuousIntegrationBuild=$ci" + # Add -mt flag for MSBuild multithreaded mode if enabled via environment variable + if ($env:MSBUILD_MT_ENABLED -eq "1") { + $cmdArgs += ' -mt' + } + if ($warnAsError) { $cmdArgs += ' /warnaserror /p:TreatWarningsAsErrors=true' } @@ -864,8 +861,8 @@ function MSBuild-Core() { } # When running on Azure Pipelines, override the returned exit code to avoid double logging. - # Skip this when the build is a child of the VMR orchestrator build. - if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$productBuild -and -not($properties -like "*DotNetBuildRepo=true*")) { + # Skip this when the build is a child of the VMR build. + if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$fromVMR) { Write-PipelineSetResult -Result "Failed" -Message "msbuild execution failed." # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 01b09b65796c..1b296f646c23 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} @@ -68,8 +72,8 @@ fi runtime_source_feed=${runtime_source_feed:-''} runtime_source_feed_key=${runtime_source_feed_key:-''} -# True if the build is a product build -product_build=${product_build:-false} +# True when the build is running within the VMR. +from_vmr=${from_vmr:-false} # Resolve any symlinks in the given path. function ResolvePath { @@ -296,8 +300,29 @@ function GetDotNetInstallScript { local root=$1 local install_script="$root/dotnet-install.sh" local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" + local timestamp_file="$root/.dotnet-install.timestamp" + local should_download=false if [[ ! -a "$install_script" ]]; then + should_download=true + elif [[ -f "$timestamp_file" ]]; then + # Check if the script is older than 30 days using timestamp file + local download_time=$(cat "$timestamp_file" 2>/dev/null || echo "0") + local current_time=$(date +%s) + local age_seconds=$((current_time - download_time)) + + # 30 days = 30 * 24 * 60 * 60 = 2592000 seconds + if [[ $age_seconds -gt 2592000 ]]; then + echo "Existing install script is too old, re-downloading..." + should_download=true + fi + else + # No timestamp file exists, assume script is old and re-download + echo "No timestamp found for existing install script, re-downloading..." + should_download=true + fi + + if [[ "$should_download" == true ]]; then mkdir -p "$root" echo "Downloading '$install_script_url'" @@ -324,6 +349,9 @@ function GetDotNetInstallScript { ExitWithExitCode $exit_code } fi + + # Create timestamp file to track download time in seconds from epoch + date +%s > "$timestamp_file" fi # return value _GetDotNetInstallScript="$install_script" @@ -339,22 +367,14 @@ function InitializeBuildTool { # return values _InitializeBuildTool="$_InitializeDotNetCli/dotnet" _InitializeBuildToolCommand="msbuild" - # use override if it exists - commonly set by source-build - if [[ "${_OverrideArcadeInitializeBuildToolFramework:-x}" == "x" ]]; then - _InitializeBuildToolFramework="net9.0" - else - _InitializeBuildToolFramework="${_OverrideArcadeInitializeBuildToolFramework}" - fi } -# Set RestoreNoHttpCache as a workaround for https://github.com/NuGet/Home/issues/3116 function GetNuGetPackageCachePath { if [[ -z ${NUGET_PACKAGES:-} ]]; then if [[ "$use_global_nuget_cache" == true ]]; then export NUGET_PACKAGES="$HOME/.nuget/packages/" else export NUGET_PACKAGES="$repo_root/.packages/" - export RESTORENOHTTPCACHE=true fi fi @@ -451,25 +471,13 @@ function MSBuild { fi local toolset_dir="${_InitializeToolset%/*}" - # new scripts need to work with old packages, so we need to look for the old names/versions - local selectedPath= - local possiblePaths=() - possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.Arcade.Sdk.dll" ) - possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/net7.0/Microsoft.DotNet.Arcade.Sdk.dll" ) - possiblePaths+=( "$toolset_dir/net8.0/Microsoft.DotNet.ArcadeLogging.dll" ) - possiblePaths+=( "$toolset_dir/net8.0/Microsoft.DotNet.Arcade.Sdk.dll" ) - for path in "${possiblePaths[@]}"; do - if [[ -f $path ]]; then - selectedPath=$path - break - fi - done + local selectedPath="$toolset_dir/net/Microsoft.DotNet.ArcadeLogging.dll" + if [[ -z "$selectedPath" ]]; then - Write-PipelineTelemetryError -category 'Build' "Unable to find arcade sdk logger assembly." + Write-PipelineTelemetryError -category 'Build' "Unable to find arcade sdk logger assembly: $selectedPath" ExitWithExitCode 1 fi + args+=( "-logger:$selectedPath" ) fi @@ -506,8 +514,8 @@ function MSBuild-Core { echo "Build failed with exit code $exit_code. Check errors above." # When running on Azure Pipelines, override the returned exit code to avoid double logging. - # Skip this when the build is a child of the VMR orchestrator build. - if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$product_build" != true && "$properties" != *"DotNetBuildRepo=true"* ]]; then + # Skip this when the build is a child of the VMR build. + if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$from_vmr" != true ]]; then Write-PipelineSetResult -result "Failed" -message "msbuild execution failed." # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error @@ -518,7 +526,13 @@ function MSBuild-Core { } } - RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" + # Add -mt flag for MSBuild multithreaded mode if enabled via environment variable + local mt_switch="" + if [[ "${MSBUILD_MT_ENABLED:-}" == "1" ]]; then + mt_switch="-mt" + fi + + RunBuildTool "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch $mt_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" } function GetDarc { @@ -530,6 +544,13 @@ function GetDarc { fi "$eng_root/common/darc-init.sh" --toolpath "$darc_path" $version + darc_tool="$darc_path/darc" +} + +# Returns a full path to an Arcade SDK task project file. +function GetSdkTaskProject { + taskName=$1 + echo "$(dirname $_InitializeToolset)/SdkTasks/$taskName.proj" } ResolvePath "${BASH_SOURCE[0]}" diff --git a/eng/common/vmr-sync.ps1 b/eng/common/vmr-sync.ps1 new file mode 100755 index 000000000000..b37992d91cf0 --- /dev/null +++ b/eng/common/vmr-sync.ps1 @@ -0,0 +1,164 @@ +<# +.SYNOPSIS + +This script is used for synchronizing the current repository into a local VMR. +It pulls the current repository's code into the specified VMR directory for local testing or +Source-Build validation. + +.DESCRIPTION + +The tooling used for synchronization will clone the VMR repository into a temporary folder if +it does not already exist. These clones can be reused in future synchronizations, so it is +recommended to dedicate a folder for this to speed up re-runs. + +.EXAMPLE + Synchronize current repository into a local VMR: + ./vmr-sync.ps1 -vmrDir "$HOME/repos/dotnet" -tmpDir "$HOME/repos/tmp" + +.PARAMETER tmpDir +Required. Path to the temporary folder where repositories will be cloned + +.PARAMETER vmrBranch +Optional. Branch of the 'dotnet/dotnet' repo to synchronize. The VMR will be checked out to this branch + +.PARAMETER azdevPat +Optional. Azure DevOps PAT to use for cloning private repositories. + +.PARAMETER vmrDir +Optional. Path to the dotnet/dotnet repository. When null, gets cloned to the temporary folder + +.PARAMETER debugOutput +Optional. Enables debug logging in the darc vmr command. + +.PARAMETER ci +Optional. Denotes that the script is running in a CI environment. +#> +param ( + [Parameter(Mandatory=$true, HelpMessage="Path to the temporary folder where repositories will be cloned")] + [string][Alias('t', 'tmp')]$tmpDir, + [string][Alias('b', 'branch')]$vmrBranch, + [string]$remote, + [string]$azdevPat, + [string][Alias('v', 'vmr')]$vmrDir, + [switch]$ci, + [switch]$debugOutput +) + +function Fail { + Write-Host "> $($args[0])" -ForegroundColor 'Red' +} + +function Highlight { + Write-Host "> $($args[0])" -ForegroundColor 'Cyan' +} + +$verbosity = 'verbose' +if ($debugOutput) { + $verbosity = 'debug' +} +# Validation + +if (-not $tmpDir) { + Fail "Missing -tmpDir argument. Please specify the path to the temporary folder where the repositories will be cloned" + exit 1 +} + +# Sanitize the input + +if (-not $vmrDir) { + $vmrDir = Join-Path $tmpDir 'dotnet' +} + +if (-not (Test-Path -Path $tmpDir -PathType Container)) { + New-Item -ItemType Directory -Path $tmpDir | Out-Null +} + +# Prepare the VMR + +if (-not (Test-Path -Path $vmrDir -PathType Container)) { + Highlight "Cloning 'dotnet/dotnet' into $vmrDir.." + git clone https://github.com/dotnet/dotnet $vmrDir + + if ($vmrBranch) { + git -C $vmrDir switch -c $vmrBranch + } +} +else { + if ((git -C $vmrDir diff --quiet) -eq $false) { + Fail "There are changes in the working tree of $vmrDir. Please commit or stash your changes" + exit 1 + } + + if ($vmrBranch) { + Highlight "Preparing $vmrDir" + git -C $vmrDir checkout $vmrBranch + git -C $vmrDir pull + } +} + +Set-StrictMode -Version Latest + +# Prepare darc + +Highlight 'Installing .NET, preparing the tooling..' +. .\eng\common\tools.ps1 +$dotnetRoot = InitializeDotNetCli -install:$true +$env:DOTNET_ROOT = $dotnetRoot +$darc = Get-Darc + +Highlight "Starting the synchronization of VMR.." + +# Synchronize the VMR +$versionDetailsPath = Resolve-Path (Join-Path $PSScriptRoot '..\Version.Details.xml') | Select-Object -ExpandProperty Path +[xml]$versionDetails = Get-Content -Path $versionDetailsPath +$repoName = $versionDetails.SelectSingleNode('//Source').Mapping +if (-not $repoName) { + Fail "Failed to resolve repo mapping from $versionDetailsPath" + exit 1 +} + +$darcArgs = ( + "vmr", "forwardflow", + "--tmp", $tmpDir, + "--$verbosity", + $vmrDir +) + +if ($ci) { + $darcArgs += ("--ci") +} + +if ($azdevPat) { + $darcArgs += ("--azdev-pat", $azdevPat) +} + +& "$darc" $darcArgs + +if ($LASTEXITCODE -eq 0) { + Highlight "Synchronization succeeded" +} +else { + Highlight "Failed to flow code into the local VMR. Falling back to resetting the VMR to match repo contents..." + git -C $vmrDir reset --hard + + $resetArgs = ( + "vmr", "reset", + "${repoName}:HEAD", + "--vmr", $vmrDir, + "--tmp", $tmpDir, + "--additional-remotes", "${repoName}:${repoRoot}" + ) + + & "$darc" $resetArgs + + if ($LASTEXITCODE -eq 0) { + Highlight "Successfully reset the VMR using 'darc vmr reset'" + } + else { + Fail "Synchronization of repo to VMR failed!" + Fail "'$vmrDir' is left in its last state (re-run of this script will reset it)." + Fail "Please inspect the logs which contain path to the failing patch file (use -debugOutput to get all the details)." + Fail "Once you make changes to the conflicting VMR patch, commit it locally and re-run this script." + exit 1 + } +} diff --git a/eng/common/vmr-sync.sh b/eng/common/vmr-sync.sh new file mode 100755 index 000000000000..198caec59bd4 --- /dev/null +++ b/eng/common/vmr-sync.sh @@ -0,0 +1,227 @@ +#!/bin/bash + +### This script is used for synchronizing the current repository into a local VMR. +### It pulls the current repository's code into the specified VMR directory for local testing or +### Source-Build validation. +### +### The tooling used for synchronization will clone the VMR repository into a temporary folder if +### it does not already exist. These clones can be reused in future synchronizations, so it is +### recommended to dedicate a folder for this to speed up re-runs. +### +### USAGE: +### Synchronize current repository into a local VMR: +### ./vmr-sync.sh --tmp "$HOME/repos/tmp" "$HOME/repos/dotnet" +### +### Options: +### -t, --tmp, --tmp-dir PATH +### Required. Path to the temporary folder where repositories will be cloned +### +### -b, --branch, --vmr-branch BRANCH_NAME +### Optional. Branch of the 'dotnet/dotnet' repo to synchronize. The VMR will be checked out to this branch +### +### --debug +### Optional. Turns on the most verbose logging for the VMR tooling +### +### --remote name:URI +### Optional. Additional remote to use during the synchronization +### This can be used to synchronize to a commit from a fork of the repository +### Example: 'runtime:https://github.com/yourfork/runtime' +### +### --azdev-pat +### Optional. Azure DevOps PAT to use for cloning private repositories. +### +### -v, --vmr, --vmr-dir PATH +### Optional. Path to the dotnet/dotnet repository. When null, gets cloned to the temporary folder + +source="${BASH_SOURCE[0]}" + +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +function print_help () { + sed -n '/^### /,/^$/p' "$source" | cut -b 5- +} + +COLOR_RED=$(tput setaf 1 2>/dev/null || true) +COLOR_CYAN=$(tput setaf 6 2>/dev/null || true) +COLOR_CLEAR=$(tput sgr0 2>/dev/null || true) +COLOR_RESET=uniquesearchablestring +FAILURE_PREFIX='> ' + +function fail () { + echo "${COLOR_RED}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_RED}}${COLOR_CLEAR}" >&2 +} + +function highlight () { + echo "${COLOR_CYAN}$FAILURE_PREFIX${1//${COLOR_RESET}/${COLOR_CYAN}}${COLOR_CLEAR}" +} + +tmp_dir='' +vmr_dir='' +vmr_branch='' +additional_remotes='' +verbosity=verbose +azdev_pat='' +ci=false + +while [[ $# -gt 0 ]]; do + opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -t|--tmp|--tmp-dir) + tmp_dir=$2 + shift + ;; + -v|--vmr|--vmr-dir) + vmr_dir=$2 + shift + ;; + -b|--branch|--vmr-branch) + vmr_branch=$2 + shift + ;; + --remote) + additional_remotes="$additional_remotes $2" + shift + ;; + --azdev-pat) + azdev_pat=$2 + shift + ;; + --ci) + ci=true + ;; + -d|--debug) + verbosity=debug + ;; + -h|--help) + print_help + exit 0 + ;; + *) + fail "Invalid argument: $1" + print_help + exit 1 + ;; + esac + + shift +done + +# Validation + +if [[ -z "$tmp_dir" ]]; then + fail "Missing --tmp-dir argument. Please specify the path to the temporary folder where the repositories will be cloned" + exit 1 +fi + +# Sanitize the input + +if [[ -z "$vmr_dir" ]]; then + vmr_dir="$tmp_dir/dotnet" +fi + +if [[ ! -d "$tmp_dir" ]]; then + mkdir -p "$tmp_dir" +fi + +if [[ "$verbosity" == "debug" ]]; then + set -x +fi + +# Prepare the VMR + +if [[ ! -d "$vmr_dir" ]]; then + highlight "Cloning 'dotnet/dotnet' into $vmr_dir.." + git clone https://github.com/dotnet/dotnet "$vmr_dir" + + if [[ -n "$vmr_branch" ]]; then + git -C "$vmr_dir" switch -c "$vmr_branch" + fi +else + if ! git -C "$vmr_dir" diff --quiet; then + fail "There are changes in the working tree of $vmr_dir. Please commit or stash your changes" + exit 1 + fi + + if [[ -n "$vmr_branch" ]]; then + highlight "Preparing $vmr_dir" + git -C "$vmr_dir" checkout "$vmr_branch" + git -C "$vmr_dir" pull + fi +fi + +set -e + +# Prepare darc + +highlight 'Installing .NET, preparing the tooling..' +source "./eng/common/tools.sh" +InitializeDotNetCli true +GetDarc +dotnetDir=$( cd ./.dotnet/; pwd -P ) +dotnet=$dotnetDir/dotnet + +highlight "Starting the synchronization of VMR.." +set +e + +if [[ -n "$additional_remotes" ]]; then + additional_remotes="--additional-remotes $additional_remotes" +fi + +if [[ -n "$azdev_pat" ]]; then + azdev_pat="--azdev-pat $azdev_pat" +fi + +ci_arg='' +if [[ "$ci" == "true" ]]; then + ci_arg="--ci" +fi + +# Synchronize the VMR + +version_details_path=$(cd "$scriptroot/.."; pwd -P)/Version.Details.xml +repo_name=$(grep -m 1 '