From f1e05d296965cadf319b988863dd43c29fd2451f Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 14 Apr 2026 21:38:54 +0000 Subject: [PATCH 01/30] Update dependencies from https://github.com/dotnet/dotnet build 20260414.3 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26214.103 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26214.103 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26214.103 --- NuGet.config | 3 +-- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- eng/common/tools.ps1 | 2 +- eng/common/tools.sh | 2 +- global.json | 4 ++-- 6 files changed, 30 insertions(+), 31 deletions(-) diff --git a/NuGet.config b/NuGet.config index 2c233f9c47f..e79b11914b3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,12 +8,11 @@ - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6edc23c1cef..a22b8a77bb1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae - + https://github.com/dotnet/dotnet - 5bed4499b04cbbaec57ac4209ae993acca3648cc + b94d039caa166db357a3b806a4ec698e429f0cae https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 5bed4499b04cbbaec57ac4209ae993acca3648cc + + b94d039caa166db357a3b806a4ec698e429f0cae https://github.com/dotnet/dotnet - - 5bed4499b04cbbaec57ac4209ae993acca3648cc + + b94d039caa166db357a3b806a4ec698e429f0cae https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index c8cece31b71..39f65ac6e22 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26210.111 - 11.0.0-preview.4.26210.111 - 11.0.0-preview.4.26210.111 - 11.0.0-preview.4.26210.111 + 11.0.0-preview.4.26214.103 + 11.0.0-preview.4.26214.103 + 11.0.0-preview.4.26214.103 + 11.0.0-preview.4.26214.103 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26210.111 + 11.0.0-preview.4.26214.103 11.0.0-prerelease.26204.1 diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 6710ffb884b..253dc16a969 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -745,7 +745,7 @@ function InitializeToolset() { ExitWithExitCode 1 } - $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--prerelease", "--output", "$nugetCache") + $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--verbosity", "minimal", "--prerelease", "--output", "$nugetCache") if ($env:NUGET_CONFIG) { $downloadArgs += "--configfile" $downloadArgs += $env:NUGET_CONFIG diff --git a/eng/common/tools.sh b/eng/common/tools.sh index d2339eb21d5..22341be2cc6 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -426,7 +426,7 @@ function InitializeToolset { ExitWithExitCode 2 fi - local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--prerelease" "--output" "$_GetNuGetPackageCachePath") + local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--verbosity" "minimal" "--prerelease" "--output" "$_GetNuGetPackageCachePath") if [[ -n "${NUGET_CONFIG:-}" ]]; then download_args+=("--configfile" "$NUGET_CONFIG") fi diff --git a/global.json b/global.json index 79f2b114c10..778e1a47e4a 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26210.111", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26210.111" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26214.103", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26214.103" }, "native-tools": { "python3": "3.7.1" From 34c83c34ab33351e22caeedc21f87ec827e0dc7b Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 15 Apr 2026 12:04:14 +0000 Subject: [PATCH 02/30] Update dependencies from https://github.com/dotnet/dotnet build 20260415.1 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26215.101 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26215.101 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26215.101 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a22b8a77bb1..2fb5eceedf7 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a - + https://github.com/dotnet/dotnet - b94d039caa166db357a3b806a4ec698e429f0cae + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - b94d039caa166db357a3b806a4ec698e429f0cae + + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a https://github.com/dotnet/dotnet - - b94d039caa166db357a3b806a4ec698e429f0cae + + 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 39f65ac6e22..5118295beaa 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26214.103 - 11.0.0-preview.4.26214.103 - 11.0.0-preview.4.26214.103 - 11.0.0-preview.4.26214.103 + 11.0.0-preview.4.26215.101 + 11.0.0-preview.4.26215.101 + 11.0.0-preview.4.26215.101 + 11.0.0-preview.4.26215.101 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26214.103 + 11.0.0-preview.4.26215.101 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 778e1a47e4a..b46865d5036 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26214.103", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26214.103" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.101", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.101" }, "native-tools": { "python3": "3.7.1" From b7814dcc9e5f161a04e4263ce94bba3d7069d7b1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 15 Apr 2026 17:20:25 +0000 Subject: [PATCH 03/30] Update dependencies from https://github.com/dotnet/dotnet build 20260415.8 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26215.108 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26215.108 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26215.108 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2fb5eceedf7..63f474ce018 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 - + https://github.com/dotnet/dotnet - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 https://github.com/dotnet/dotnet - - 40c1c9e8d6d6c67fbe68e1f304d0c2a03e311e0a + + d43adf9b247b6d412e284783d0cf4b3ae5d7a676 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 5118295beaa..1b9c677e6b6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26215.101 - 11.0.0-preview.4.26215.101 - 11.0.0-preview.4.26215.101 - 11.0.0-preview.4.26215.101 + 11.0.0-preview.4.26215.108 + 11.0.0-preview.4.26215.108 + 11.0.0-preview.4.26215.108 + 11.0.0-preview.4.26215.108 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26215.101 + 11.0.0-preview.4.26215.108 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index b46865d5036..c0fcdc1f155 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.101", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.101" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.108", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.108" }, "native-tools": { "python3": "3.7.1" From bc1506edc166d31f7846e0d3c2cb4014f6889d97 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 15 Apr 2026 23:06:48 +0000 Subject: [PATCH 04/30] Update dependencies from https://github.com/dotnet/dotnet build 20260415.14 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26215.114 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26215.114 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26215.114 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 63f474ce018..ec6e2181f03 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 - + https://github.com/dotnet/dotnet - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 https://github.com/dotnet/dotnet - - d43adf9b247b6d412e284783d0cf4b3ae5d7a676 + + b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 1b9c677e6b6..715857b213a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26215.108 - 11.0.0-preview.4.26215.108 - 11.0.0-preview.4.26215.108 - 11.0.0-preview.4.26215.108 + 11.0.0-preview.4.26215.114 + 11.0.0-preview.4.26215.114 + 11.0.0-preview.4.26215.114 + 11.0.0-preview.4.26215.114 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26215.108 + 11.0.0-preview.4.26215.114 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index c0fcdc1f155..38e6b931222 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.108", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.108" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.114", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.114" }, "native-tools": { "python3": "3.7.1" From 01d4717ec3b1f698499454f1ee1427ec17b3fae4 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 16 Apr 2026 09:06:13 +0000 Subject: [PATCH 05/30] Update dependencies from https://github.com/dotnet/dotnet build 20260415.21 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26215.121 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26215.121 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26215.121 --- eng/Version.Details.xml | 40 +-- eng/Versions.props | 10 +- eng/common/core-templates/job/job.yml | 5 +- .../job/publish-build-assets.yml | 12 +- eng/common/core-templates/job/renovate.yml | 2 +- eng/common/core-templates/jobs/jobs.yml | 5 + .../post-build/common-variables.yml | 2 - .../core-templates/post-build/post-build.yml | 132 ++++--- .../post-build/setup-maestro-vars.yml | 5 +- .../steps/component-governance.yml | 16 - .../core-templates/steps/generate-sbom.yml | 60 +--- .../core-templates/steps/publish-logs.yml | 10 +- .../core-templates/steps/source-build.yml | 2 +- eng/common/darc-init.ps1 | 8 +- eng/common/darc-init.sh | 4 +- eng/common/generate-sbom-prep.ps1 | 29 -- eng/common/generate-sbom-prep.sh | 39 --- eng/common/post-build/redact-logs.ps1 | 4 +- .../post-build/sourcelink-validation.ps1 | 327 ------------------ eng/common/sdk-task.ps1 | 15 +- eng/common/template-guidance.md | 2 - eng/common/templates-official/job/job.yml | 57 +-- .../steps/component-governance.yml | 7 - .../steps/publish-pipeline-artifacts.yml | 4 +- eng/common/templates/job/job.yml | 53 +-- .../templates/steps/component-governance.yml | 7 - eng/common/tools.ps1 | 81 +---- global.json | 4 +- 28 files changed, 200 insertions(+), 742 deletions(-) delete mode 100644 eng/common/core-templates/steps/component-governance.yml delete mode 100644 eng/common/generate-sbom-prep.ps1 delete mode 100644 eng/common/generate-sbom-prep.sh delete mode 100644 eng/common/post-build/sourcelink-validation.ps1 delete mode 100644 eng/common/templates-official/steps/component-governance.yml delete mode 100644 eng/common/templates/steps/component-governance.yml diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ec6e2181f03..453ebc3a368 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 - + https://github.com/dotnet/dotnet - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 https://github.com/dotnet/dotnet - - b61c1c319cf700db4bd4c7bbe9b2156c5383dd18 + + ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 715857b213a..00fc5d06e38 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26215.114 - 11.0.0-preview.4.26215.114 - 11.0.0-preview.4.26215.114 - 11.0.0-preview.4.26215.114 + 11.0.0-preview.4.26215.121 + 11.0.0-preview.4.26215.121 + 11.0.0-preview.4.26215.121 + 11.0.0-preview.4.26215.121 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26215.114 + 11.0.0-preview.4.26215.121 11.0.0-prerelease.26204.1 diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 748c4f07a64..66c7988f222 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -26,12 +26,12 @@ parameters: enablePublishBuildArtifacts: false enablePublishBuildAssets: false enablePublishTestResults: false + enablePublishing: false enableBuildRetry: false mergeTestResults: false testRunTitle: '' testResultsFormat: '' name: '' - componentGovernanceSteps: [] preSteps: [] artifactPublishSteps: [] runAsPublic: false @@ -152,9 +152,6 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - - ${{ each step in parameters.componentGovernanceSteps }}: - - ${{ step }} - - ${{ 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: diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 9d7490518c4..700f7711465 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -172,17 +172,18 @@ jobs: 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 + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # just metadata for publishing - - 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 ReleaseConfigs Artifact - pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs' - publishLocation: Container + targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' artifactName: ReleaseConfigs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # just metadata for publishing - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -218,4 +219,5 @@ jobs: - template: /eng/common/core-templates/steps/publish-logs.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} + StageLabel: 'BuildAssetRegistry' JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/job/renovate.yml b/eng/common/core-templates/job/renovate.yml index ab233539b5d..ff86c80b468 100644 --- a/eng/common/core-templates/job/renovate.yml +++ b/eng/common/core-templates/job/renovate.yml @@ -135,7 +135,7 @@ jobs: condition: succeededOrFailed() targetPath: $(Build.ArtifactStagingDirectory) artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt) - sbomEnabled: false + isProduction: false # logs are non-production artifacts steps: - checkout: self diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml index 01ada747665..cc8cce45278 100644 --- a/eng/common/core-templates/jobs/jobs.yml +++ b/eng/common/core-templates/jobs/jobs.yml @@ -43,6 +43,10 @@ parameters: artifacts: {} is1ESPipeline: '' + + # Publishing version w/default. + publishingVersion: 3 + repositoryAlias: self officialBuildId: '' @@ -102,6 +106,7 @@ jobs: parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} continueOnError: ${{ parameters.continueOnError }} + publishingVersion: ${{ parameters.publishingVersion }} dependsOn: - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - ${{ each job in parameters.publishBuildAssetsDependsOn }}: diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml index d5627a994ae..db298ae16ba 100644 --- a/eng/common/core-templates/post-build/common-variables.yml +++ b/eng/common/core-templates/post-build/common-variables.yml @@ -11,8 +11,6 @@ variables: - name: MaestroApiVersion value: "2020-02-20" - - name: SourceLinkCLIVersion - value: 3.0.0 - name: SymbolToolVersion value: 1.0.1 - name: BinlogToolVersion diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 0994189969f..fcf40d1d2e6 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -9,6 +9,7 @@ parameters: default: 3 values: - 3 + - 4 - name: BARBuildId displayName: BAR Build Id @@ -130,16 +131,30 @@ stages: 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 + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/packages/**/*.nupkg' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten packages to PackageArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' + flattenFolders: true - task: PowerShell@2 displayName: Validate @@ -173,16 +188,30 @@ stages: 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 + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/packages/**/*.nupkg' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten packages to PackageArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' + flattenFolders: true # 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 @@ -208,53 +237,20 @@ stages: 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-Windows2025 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - ${{ if eq(parameters.is1ESPipeline, true) }}: - name: $(DncEngInternalBuildPool) - image: windows.vs2026.amd64 - os: windows - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2026.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 + # SourceLink validation has been removed — the underlying CLI tool + # (targeting netcoreapp2.1) has not functioned for years. + # The enableSourceLinkValidation parameter is kept but ignored so + # existing pipelines that pass it are not broken. + # See https://github.com/dotnet/arcade/issues/16647 + - ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}: + - job: + displayName: 'SourceLink Validation Removed - please remove enableSourceLinkValidation from your pipeline' + pool: server + steps: + - task: Delay@1 + displayName: 'Warning: SourceLink validation removed (see https://github.com/dotnet/arcade/issues/16647)' + inputs: + delayForMinutes: '0' - ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - stage: publish_using_darc @@ -317,7 +313,7 @@ stages: scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: > -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} + -PublishingInfraVersion 3 -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml index a7abd58c4bb..6dfa99ec5e3 100644 --- a/eng/common/core-templates/post-build/setup-maestro-vars.yml +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -8,12 +8,11 @@ steps: - '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 + - task: DownloadPipelineArtifact@2 displayName: Download Release Configs inputs: - buildType: current artifactName: ReleaseConfigs - checkDownloadedFiles: true + targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' - task: AzureCLI@2 name: setReleaseVars diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml deleted file mode 100644 index cf0649aa956..00000000000 --- a/eng/common/core-templates/steps/component-governance.yml +++ /dev/null @@ -1,16 +0,0 @@ -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/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index 003f7eae0fa..aad0a8aeda3 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -1,54 +1,14 @@ -# 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: 11.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 + PackageVersion: unused + BuildDropPath: unused + PackageName: unused + ManifestDirPath: unused + IgnoreDirectories: unused + sbomContinueOnError: unused + is1ESPipeline: unused + publishArtifacts: unused 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) - + echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include." + displayName: Issue generate-sbom.yml deprecation warning diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml index a9ea99ba6aa..84a1922c73f 100644 --- a/eng/common/core-templates/steps/publish-logs.yml +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -50,13 +50,15 @@ steps: TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' condition: always() -- 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 Logs - pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' - publishLocation: Container - artifactName: PostBuildLogs + targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt) continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts + diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index acf16ed3496..b75f59c428d 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -62,4 +62,4 @@ steps: artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() - sbomEnabled: false # we don't need SBOM for logs + isProduction: false # logs are non-production artifacts diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index e3374310563..a5be41db690 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -29,11 +29,11 @@ function InstallDarcCli ($darcVersion, $toolpath) { Write-Host "Installing Darc CLI version $darcVersion..." Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' if (-not $toolpath) { - Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g" - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g + Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity -g" + & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g }else { - Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'" - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" + Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'" + & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" } } diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 9f5ad6b763b..b56d40e5706 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -73,9 +73,9 @@ function InstallDarcCli { 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." if [ -z "$toolpath" ]; then - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g) else - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") fi } diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 deleted file mode 100644 index a0c7d792a76..00000000000 --- a/eng/common/generate-sbom-prep.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -Param( - [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed -) - -. $PSScriptRoot\pipeline-logging-functions.ps1 - -# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' -$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName - -Write-Host "Artifact name before : $ArtifactName" -Write-Host "Artifact name after : $SafeArtifactName" - -Write-Host "Creating dir $ManifestDirPath" - -# create directory for sbom manifest to be placed -if (!(Test-Path -path $SbomGenerationDir)) -{ - New-Item -ItemType Directory -path $SbomGenerationDir - Write-Host "Successfully created directory $SbomGenerationDir" -} -else{ - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -} - -Write-Host "Updating artifact name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh deleted file mode 100644 index b8ecca72bbf..00000000000 --- a/eng/common/generate-sbom-prep.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -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 )" -. $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 -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -sbom_generation_dir="$manifest_dir/$safe_artifact_name" - -if [ ! -d "$sbom_generation_dir" ] ; then - mkdir -p "$sbom_generation_dir" - echo "Sbom directory created." $sbom_generation_dir -else - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -fi - -echo "Artifact name before : "$artifact_name -echo "Artifact name after : "$safe_artifact_name -export ARTIFACT_NAME=$safe_artifact_name -echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" - -exit 0 diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1 index fc0218a013d..672f4e2652e 100644 --- a/eng/common/post-build/redact-logs.ps1 +++ b/eng/common/post-build/redact-logs.ps1 @@ -49,8 +49,8 @@ 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 + Write-Host "'$dotnet' tool install $packageName --local --source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" + & "$dotnet" tool install $packageName --local --source "$PackageFeed" -v $verbosity --version $BinlogToolVersion if (Test-Path $TokensFilePath) { Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 deleted file mode 100644 index 1976ef70fb8..00000000000 --- a/eng/common/post-build/sourcelink-validation.ps1 +++ /dev/null @@ -1,327 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade - [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages - [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use -) - -$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 -# all files present in the repo at a specific commit point. -$global:RepoFiles = @{} - -# Maximum number of jobs to run in parallel -$MaxParallelJobs = 16 - -$MaxRetries = 5 -$RetryWaitTimeInSeconds = 30 - -# Wait time between check for system load -$SecondsBetweenLoadChecks = 10 - -if (!$InputPath -or !(Test-Path $InputPath)){ - Write-Host "No files to validate." - ExitWithExitCode 0 -} - -$ValidatePackage = { - param( - [string] $PackagePath # Full path to a Symbols.NuGet package - ) - - . $using:PSScriptRoot\..\tools.ps1 - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - Write-Host "Input file does not exist: $PackagePath" - return [pscustomobject]@{ - result = 1 - packagePath = $PackagePath - } - } - - # Extensions for which we'll look for SourceLink information - # For now we'll only care about Portable & Embedded PDBs - $RelevantExtensions = @('.dll', '.exe', '.pdb') - - Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - $FailedFiles = 0 - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null - - try { - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $FileName = $_.FullName - $Extension = [System.IO.Path]::GetExtension($_.Name) - $FakeName = -Join((New-Guid), $Extension) - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName - - # We ignore resource DLLs - if ($FileName.EndsWith('.resources.dll')) { - return [pscustomobject]@{ - result = 0 - packagePath = $PackagePath - } - } - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) - - $ValidateFile = { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $RealPath, - [ref] $FailedFiles - ) - - $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools" - $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe" - $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String - - if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { - $NumFailedLinks = 0 - - # We only care about Http addresses - $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches - - if ($Matches.Count -ne 0) { - $Matches.Value | - ForEach-Object { - $Link = $_ - $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/" - - $FilePath = $Link.Replace($CommitUrl, "") - $Status = 200 - $Cache = $using:RepoFiles - - $attempts = 0 - - while ($attempts -lt $using:MaxRetries) { - if ( !($Cache.ContainsKey($FilePath)) ) { - try { - $Uri = $Link -as [System.URI] - - if ($Link -match "submodules") { - # Skip submodule links until sourcelink properly handles submodules - $Status = 200 - } - elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) { - # Only GitHub links are valid - $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode - } - else { - # If it's not a github link, we want to break out of the loop and not retry. - $Status = 0 - $attempts = $using:MaxRetries - } - } - catch { - Write-Host $_ - $Status = 0 - } - } - - if ($Status -ne 200) { - $attempts++ - - if ($attempts -lt $using:MaxRetries) - { - $attemptsLeft = $using:MaxRetries - $attempts - Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds" - Start-Sleep -Seconds $using:RetryWaitTimeInSeconds - } - else { - if ($NumFailedLinks -eq 0) { - if ($FailedFiles.Value -eq 0) { - Write-Host - } - - Write-Host "`tFile $RealPath has broken links:" - } - - Write-Host "`t`tFailed to retrieve $Link" - - $NumFailedLinks++ - } - } - else { - break - } - } - } - } - - if ($NumFailedLinks -ne 0) { - $FailedFiles.value++ - $global:LASTEXITCODE = 1 - } - } - } - - &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) - } - } - catch { - Write-Host $_ - } - finally { - $zip.Dispose() - } - - if ($FailedFiles -eq 0) { - Write-Host 'Passed.' - return [pscustomobject]@{ - result = 0 - packagePath = $PackagePath - } - } - else { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." - return [pscustomobject]@{ - result = 1 - packagePath = $PackagePath - } - } -} - -function CheckJobResult( - $result, - $packagePath, - [ref]$ValidationFailures, - [switch]$logErrors) { - if ($result -ne '0') { - if ($logErrors) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." - } - $ValidationFailures.Value++ - } -} - -function ValidateSourceLinkLinks { - if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) { - if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'" - ExitWithExitCode 1 - } - else { - $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2'; - } - } - - if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'" - ExitWithExitCode 1 - } - - if ($GHRepoName -ne '' -and $GHCommit -ne '') { - $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1') - $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript') - - try { - # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash - $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree - - foreach ($file in $Data) { - $Extension = [System.IO.Path]::GetExtension($file.path) - - if ($CodeExtensions.Contains($Extension)) { - $RepoFiles[$file.path] = 1 - } - } - } - catch { - Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching." - } - } - elseif ($GHRepoName -ne '' -or $GHCommit -ne '') { - Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.' - } - - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - $ValidationFailures = 0 - - # Process each NuGet package in parallel - Get-ChildItem "$InputPath\*.symbols.nupkg" | - ForEach-Object { - Write-Host "Starting $($_.FullName)" - Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null - $NumJobs = @(Get-Job -State 'Running').Count - - while ($NumJobs -ge $MaxParallelJobs) { - Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." - sleep $SecondsBetweenLoadChecks - $NumJobs = @(Get-Job -State 'Running').Count - } - - foreach ($Job in @(Get-Job -State 'Completed')) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors - Remove-Job -Id $Job.Id - } - } - - foreach ($Job in @(Get-Job)) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) - Remove-Job -Id $Job.Id - } - if ($ValidationFailures -gt 0) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation." - ExitWithExitCode 1 - } -} - -function InstallSourcelinkCli { - $sourcelinkCliPackageName = 'sourcelink' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list --global - - if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) { - Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed." - } - else { - Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global - } -} - -try { - InstallSourcelinkCli - - foreach ($Job in @(Get-Job)) { - Remove-Job -Id $Job.Id - } - - ValidateSourceLinkLinks -} -catch { - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index 4017ff15ebf..68119de603e 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -66,20 +66,7 @@ try { if( $msbuildEngine -eq "vs") { # Ensure desktop MSBuild is available for sdk tasks. - if( -not ($GlobalJson.tools.PSObject.Properties.Name -contains "vs" )) { - $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 "18.0.0" -MemberType NoteProperty - } - if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { - $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true - } - if ($xcopyMSBuildToolsFolder -eq $null) { - throw 'Unable to get xcopy downloadable version of msbuild' - } - - $global:_MSBuildExe = "$($xcopyMSBuildToolsFolder)\MSBuild\Current\Bin\MSBuild.exe" + $global:_MSBuildExe = InitializeVisualStudioMSBuild } $taskProject = GetSdkTaskProject $task diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md index cdc62e72b07..f772aa3d78f 100644 --- a/eng/common/template-guidance.md +++ b/eng/common/template-guidance.md @@ -81,7 +81,6 @@ eng\common\ 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) @@ -104,7 +103,6 @@ eng\common\ 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) diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index f70224eaa45..d68e9fbc265 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -1,24 +1,15 @@ parameters: -# Sbom related params - enableSbom: true runAsPublic: false - PackageVersion: 9.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' +# Sbom related params, unused now and can eventually be removed + enableSbom: unused + PackageVersion: unused + BuildDropPath: unused jobs: - 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: @@ -26,12 +17,19 @@ jobs: outputs: - ${{ if ne(parameters.artifacts.publish, '') }}: - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - output: buildArtifacts + - output: pipelineArtifact displayName: Publish pipeline artifacts - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + condition: succeeded() + retryCountOnTaskFailure: 10 # for any files being locked + continueOnError: true + - output: pipelineArtifact + displayName: Publish pipeline artifacts + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) + condition: not(succeeded()) + retryCountOnTaskFailure: 10 # for any files being locked continueOnError: true - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - output: pipelineArtifact @@ -40,8 +38,8 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked - sbomEnabled: false # we don't need SBOM for logs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: - output: pipelineArtifact @@ -50,7 +48,8 @@ jobs: 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 + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - output: pipelineArtifact @@ -58,14 +57,20 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - sbomEnabled: false # we don't need SBOM for BuildConfiguration + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # BuildConfiguration is a non-production artifact - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + # V4 publishing: automatically publish staged artifacts as a pipeline artifact. + # The artifact name matches the SDK's FutureArtifactName ($(System.PhaseName)_Artifacts), + # which is encoded in the asset manifest for downstream publishing to discover. + # Jobs can opt in by setting enablePublishing: true. + - ${{ if and(eq(parameters.publishingVersion, 4), eq(parameters.enablePublishing, 'true')) }}: - output: pipelineArtifact - displayName: Publish SBOM manifest + displayName: 'Publish V4 pipeline artifacts' + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: '$(System.PhaseName)_Artifacts' continueOnError: true - targetPath: $(Build.ArtifactStagingDirectory)/sbom - artifactName: $(ARTIFACT_NAME) + retryCountOnTaskFailure: 10 # for any files being locked # add any outputs provided via root yaml - ${{ if ne(parameters.templateContext.outputs, '') }}: diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml deleted file mode 100644 index 30bb3985ca2..00000000000 --- a/eng/common/templates-official/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- 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/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml index 172f9f0fdc9..9e5981365e5 100644 --- a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml +++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -24,5 +24,7 @@ steps: artifactName: ${{ parameters.args.artifactName }} ${{ if parameters.args.properties }}: properties: ${{ parameters.args.properties }} - ${{ if parameters.args.sbomEnabled }}: + ${{ if ne(parameters.args.sbomEnabled, '') }}: sbomEnabled: ${{ parameters.args.sbomEnabled }} + ${{ if ne(parameters.args.isProduction, '') }}: + isProduction: ${{ parameters.args.isProduction }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 7f1b5d97d1a..5e261f34db4 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -1,12 +1,12 @@ parameters: enablePublishBuildArtifacts: false - disableComponentGovernance: '' - componentGovernanceIgnoreDirectories: '' -# Sbom related params - enableSbom: true runAsPublic: false - PackageVersion: 9.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' +# CG related params, unused now and can eventually be removed + disableComponentGovernance: unused +# Sbom related params, unused now and can eventually be removed + enableSbom: unused + PackageVersion: unused + BuildDropPath: unused jobs: - template: /eng/common/core-templates/job/job.yml @@ -21,32 +21,34 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - 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 }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + # we don't run CG in public + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable 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 + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: false args: displayName: Publish pipeline artifacts - pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - publishLocation: Container + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} continueOnError: true - condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked + condition: succeeded() + retryCountOnTaskFailure: 10 # for any files being locked + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish pipeline artifacts + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) + continueOnError: true + condition: not(succeeded()) + retryCountOnTaskFailure: 10 # for any files 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: @@ -57,8 +59,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 + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -70,7 +71,7 @@ jobs: artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() - sbomEnabled: false + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -81,4 +82,4 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - sbomEnabled: false # we don't need SBOM for BuildConfiguration + retryCountOnTaskFailure: 10 # for any files being locked diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml deleted file mode 100644 index c12a5f8d21d..00000000000 --- a/eng/common/templates/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- 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/tools.ps1 b/eng/common/tools.ps1 index 253dc16a969..d1ca56d8457 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -375,12 +375,11 @@ function InstallDotNet([string] $dotnetRoot, # # 1. MSBuild from an active VS command prompt # 2. MSBuild from a compatible VS installation -# 3. MSBuild from the xcopy tool package # # Returns full path to msbuild.exe. # Throws on failure. # -function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = $null) { +function InitializeVisualStudioMSBuild([object]$vsRequirements = $null) { if (-not (IsWindowsPlatform)) { throw "Cannot initialize Visual Studio on non-Windows" } @@ -390,13 +389,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = } # Minimum VS version to require. - $vsMinVersionReqdStr = '17.7' - $vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr) - - # 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/18.0.0 - $defaultXCopyMSBuildVersion = '18.0.0' + $vsMinVersionReqdStr = '18.0' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { @@ -426,46 +419,16 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = } } - # Locate Visual Studio installation or download x-copy msbuild. + # Locate Visual Studio installation. $vsInfo = LocateVisualStudio $vsRequirements - if ($vsInfo -ne $null -and $env:ForceUseXCopyMSBuild -eq $null) { + if ($vsInfo -ne $null) { # Ensure vsInstallDir has a trailing slash $vsInstallDir = Join-Path $vsInfo.installationPath "\" $vsMajorVersion = $vsInfo.installationVersion.Split('.')[0] InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion } else { - if (Get-Member -InputObject $GlobalJson.tools -Name 'xcopy-msbuild') { - $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' - $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] - } else { - #if vs version provided in global.json is incompatible (too low) then use the default version for xcopy msbuild download - if($vsMinVersion -lt $vsMinVersionReqd){ - Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible" - $xcopyMSBuildVersion = $defaultXCopyMSBuildVersion - $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] - } - else{ - # If the VS version IS compatible, look for an xcopy msbuild package - # with a version matching VS. - # Note: If this version does not exist, then an explicit version of xcopy msbuild - # can be specified in global.json. This will be required for pre-release versions of msbuild. - $vsMajorVersion = $vsMinVersion.Major - $vsMinorVersion = $vsMinVersion.Minor - $xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0" - } - } - - $vsInstallDir = $null - if ($xcopyMSBuildVersion.Trim() -ine "none") { - $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install - if ($vsInstallDir -eq $null) { - throw "Could not xcopy msbuild. Please check that package 'Microsoft.DotNet.Arcade.MSBuild.Xcopy @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." - } - } - if ($vsInstallDir -eq $null) { - throw 'Unable to find Visual Studio that has required version and components installed' - } + throw 'Unable to find Visual Studio that has required version and components installed' } $msbuildVersionDir = if ([int]$vsMajorVersion -lt 16) { "$vsMajorVersion.0" } else { "Current" } @@ -492,38 +455,6 @@ function InitializeVisualStudioEnvironmentVariables([string] $vsInstallDir, [str } } -function InstallXCopyMSBuild([string]$packageVersion) { - return InitializeXCopyMSBuild $packageVersion -install $true -} - -function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { - $packageName = 'Microsoft.DotNet.Arcade.MSBuild.Xcopy' - $packageDir = Join-Path $ToolsDir "msbuild\$packageVersion" - $packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg" - - if (!(Test-Path $packageDir)) { - if (!$install) { - return $null - } - - Create-Directory $packageDir - - Write-Host "Downloading $packageName $packageVersion" - $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit - Retry({ - 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 - } - - return Join-Path $packageDir 'tools' -} - # # Locates Visual Studio instance that meets the minimal requirements specified by tools.vs object in global.json. # @@ -632,7 +563,7 @@ function InitializeBuildTool() { $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net' } } elseif ($msbuildEngine -eq "vs") { try { - $msbuildPath = InitializeVisualStudioMSBuild -install:$restore + $msbuildPath = InitializeVisualStudioMSBuild } catch { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ ExitWithExitCode 1 diff --git a/global.json b/global.json index 38e6b931222..800c131561a 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.114", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.114" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.121", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.121" }, "native-tools": { "python3": "3.7.1" From 15e90fce1f0281346922a33e49382bdca4258cd7 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 20 Apr 2026 05:12:17 +0000 Subject: [PATCH 06/30] Update dependencies from https://github.com/dotnet/dotnet build 20260412.2 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26212.102 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26212.102 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26212.102 --- NuGet.config | 2 - eng/Version.Details.xml | 40 +-- eng/Versions.props | 10 +- eng/common/core-templates/job/job.yml | 5 +- .../job/publish-build-assets.yml | 12 +- eng/common/core-templates/job/renovate.yml | 2 +- eng/common/core-templates/jobs/jobs.yml | 5 - .../post-build/common-variables.yml | 2 + .../core-templates/post-build/post-build.yml | 132 +++---- .../post-build/setup-maestro-vars.yml | 5 +- .../steps/component-governance.yml | 16 + .../core-templates/steps/generate-sbom.yml | 60 +++- .../core-templates/steps/publish-logs.yml | 10 +- .../core-templates/steps/source-build.yml | 2 +- eng/common/darc-init.ps1 | 8 +- eng/common/darc-init.sh | 4 +- eng/common/generate-sbom-prep.ps1 | 29 ++ eng/common/generate-sbom-prep.sh | 39 +++ eng/common/post-build/redact-logs.ps1 | 4 +- .../post-build/sourcelink-validation.ps1 | 327 ++++++++++++++++++ eng/common/sdk-task.ps1 | 15 +- eng/common/template-guidance.md | 2 + eng/common/templates-official/job/job.yml | 57 ++- .../steps/component-governance.yml | 7 + .../steps/publish-pipeline-artifacts.yml | 4 +- eng/common/templates/job/job.yml | 53 ++- .../templates/steps/component-governance.yml | 7 + eng/common/tools.ps1 | 83 ++++- eng/common/tools.sh | 2 +- global.json | 4 +- 30 files changed, 744 insertions(+), 204 deletions(-) create mode 100644 eng/common/core-templates/steps/component-governance.yml create mode 100644 eng/common/generate-sbom-prep.ps1 create mode 100644 eng/common/generate-sbom-prep.sh create mode 100644 eng/common/post-build/sourcelink-validation.ps1 create mode 100644 eng/common/templates-official/steps/component-governance.yml create mode 100644 eng/common/templates/steps/component-governance.yml diff --git a/NuGet.config b/NuGet.config index e79b11914b3..491d53f36cb 100644 --- a/NuGet.config +++ b/NuGet.config @@ -11,8 +11,6 @@ - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 453ebc3a368..abbc1039047 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c - + https://github.com/dotnet/dotnet - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c https://github.com/dotnet/dotnet - - ab01524bbb2ef1eea0ffaef161b3ef5686e8f256 + + 093e1190e2cbb19b3800c6233cd4cd0a363fac2c https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 00fc5d06e38..db7979baa59 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26215.121 - 11.0.0-preview.4.26215.121 - 11.0.0-preview.4.26215.121 - 11.0.0-preview.4.26215.121 + 11.0.0-preview.4.26212.102 + 11.0.0-preview.4.26212.102 + 11.0.0-preview.4.26212.102 + 11.0.0-preview.4.26212.102 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26215.121 + 11.0.0-preview.4.26212.102 11.0.0-prerelease.26204.1 diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 66c7988f222..748c4f07a64 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -26,12 +26,12 @@ parameters: enablePublishBuildArtifacts: false enablePublishBuildAssets: false enablePublishTestResults: false - enablePublishing: false enableBuildRetry: false mergeTestResults: false testRunTitle: '' testResultsFormat: '' name: '' + componentGovernanceSteps: [] preSteps: [] artifactPublishSteps: [] runAsPublic: false @@ -152,6 +152,9 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} + - ${{ each step in parameters.componentGovernanceSteps }}: + - ${{ step }} + - ${{ 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: diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 700f7711465..9d7490518c4 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -172,18 +172,17 @@ jobs: targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml' artifactName: AssetManifests displayName: 'Publish Merged Manifest' - retryCountOnTaskFailure: 10 # for any files being locked - isProduction: false # just metadata for publishing + retryCountOnTaskFailure: 10 # for any logs being locked + sbomEnabled: false # we don't need SBOM for logs - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish ReleaseConfigs Artifact - targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' + pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs' + publishLocation: Container artifactName: ReleaseConfigs - retryCountOnTaskFailure: 10 # for any files being locked - isProduction: false # just metadata for publishing - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -219,5 +218,4 @@ jobs: - template: /eng/common/core-templates/steps/publish-logs.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} - StageLabel: 'BuildAssetRegistry' JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/job/renovate.yml b/eng/common/core-templates/job/renovate.yml index ff86c80b468..ab233539b5d 100644 --- a/eng/common/core-templates/job/renovate.yml +++ b/eng/common/core-templates/job/renovate.yml @@ -135,7 +135,7 @@ jobs: condition: succeededOrFailed() targetPath: $(Build.ArtifactStagingDirectory) artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt) - isProduction: false # logs are non-production artifacts + sbomEnabled: false steps: - checkout: self diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml index cc8cce45278..01ada747665 100644 --- a/eng/common/core-templates/jobs/jobs.yml +++ b/eng/common/core-templates/jobs/jobs.yml @@ -43,10 +43,6 @@ parameters: artifacts: {} is1ESPipeline: '' - - # Publishing version w/default. - publishingVersion: 3 - repositoryAlias: self officialBuildId: '' @@ -106,7 +102,6 @@ jobs: parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} continueOnError: ${{ parameters.continueOnError }} - publishingVersion: ${{ parameters.publishingVersion }} dependsOn: - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - ${{ each job in parameters.publishBuildAssetsDependsOn }}: diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml index db298ae16ba..d5627a994ae 100644 --- a/eng/common/core-templates/post-build/common-variables.yml +++ b/eng/common/core-templates/post-build/common-variables.yml @@ -11,6 +11,8 @@ variables: - name: MaestroApiVersion value: "2020-02-20" + - name: SourceLinkCLIVersion + value: 3.0.0 - name: SymbolToolVersion value: 1.0.1 - name: BinlogToolVersion diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index fcf40d1d2e6..0994189969f 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -9,7 +9,6 @@ parameters: default: 3 values: - 3 - - 4 - name: BARBuildId displayName: BAR Build Id @@ -131,30 +130,16 @@ stages: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - - ${{ if ne(parameters.publishingInfraVersion, 4) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - ${{ if eq(parameters.publishingInfraVersion, 4) }}: - - task: DownloadPipelineArtifact@2 - displayName: Download Pipeline Artifacts (V4) - inputs: - itemPattern: '*/packages/**/*.nupkg' - targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' - - task: CopyFiles@2 - displayName: Flatten packages to PackageArtifacts - inputs: - SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' - Contents: '**/*.nupkg' - TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' - flattenFolders: true + - 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 @@ -188,30 +173,16 @@ stages: PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} is1ESPipeline: ${{ parameters.is1ESPipeline }} - - ${{ if ne(parameters.publishingInfraVersion, 4) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Package Artifacts - inputs: - buildType: specific - buildVersionToDownload: specific - project: $(AzDOProjectName) - pipeline: $(AzDOPipelineId) - buildId: $(AzDOBuildId) - artifactName: PackageArtifacts - checkDownloadedFiles: true - - ${{ if eq(parameters.publishingInfraVersion, 4) }}: - - task: DownloadPipelineArtifact@2 - displayName: Download Pipeline Artifacts (V4) - inputs: - itemPattern: '*/packages/**/*.nupkg' - targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' - - task: CopyFiles@2 - displayName: Flatten packages to PackageArtifacts - inputs: - SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' - Contents: '**/*.nupkg' - TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' - flattenFolders: true + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true # 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 @@ -237,20 +208,53 @@ stages: JobLabel: 'Signing' BinlogToolVersion: $(BinlogToolVersion) - # SourceLink validation has been removed — the underlying CLI tool - # (targeting netcoreapp2.1) has not functioned for years. - # The enableSourceLinkValidation parameter is kept but ignored so - # existing pipelines that pass it are not broken. - # See https://github.com/dotnet/arcade/issues/16647 - - ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}: - - job: - displayName: 'SourceLink Validation Removed - please remove enableSourceLinkValidation from your pipeline' - pool: server - steps: - - task: Delay@1 - displayName: 'Warning: SourceLink validation removed (see https://github.com/dotnet/arcade/issues/16647)' - inputs: - delayForMinutes: '0' + - 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-Windows2025 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + ${{ if eq(parameters.is1ESPipeline, true) }}: + name: $(DncEngInternalBuildPool) + image: windows.vs2026.amd64 + os: windows + ${{ else }}: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals windows.vs2026.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 @@ -313,7 +317,7 @@ stages: scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: > -BuildId $(BARBuildId) - -PublishingInfraVersion 3 + -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml index 6dfa99ec5e3..a7abd58c4bb 100644 --- a/eng/common/core-templates/post-build/setup-maestro-vars.yml +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -8,11 +8,12 @@ steps: - '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: DownloadPipelineArtifact@2 + - task: DownloadBuildArtifacts@0 displayName: Download Release Configs inputs: + buildType: current artifactName: ReleaseConfigs - targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' + checkDownloadedFiles: true - task: AzureCLI@2 name: setReleaseVars 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 00000000000..cf0649aa956 --- /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/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index aad0a8aeda3..003f7eae0fa 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -1,14 +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: unused - BuildDropPath: unused - PackageName: unused - ManifestDirPath: unused - IgnoreDirectories: unused - sbomContinueOnError: unused - is1ESPipeline: unused - publishArtifacts: unused + PackageVersion: 11.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: | - echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include." - displayName: Issue generate-sbom.yml deprecation warning + 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/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml index 84a1922c73f..a9ea99ba6aa 100644 --- a/eng/common/core-templates/steps/publish-logs.yml +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -50,15 +50,13 @@ steps: TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' condition: always() -- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml +- template: /eng/common/core-templates/steps/publish-build-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish Logs - targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' - artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt) + pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + publishLocation: Container + artifactName: PostBuildLogs continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any files being locked - isProduction: false # logs are non-production artifacts - diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index b75f59c428d..acf16ed3496 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -62,4 +62,4 @@ steps: artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() - isProduction: false # logs are non-production artifacts + sbomEnabled: false # we don't need SBOM for logs diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index a5be41db690..e3374310563 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -29,11 +29,11 @@ function InstallDarcCli ($darcVersion, $toolpath) { Write-Host "Installing Darc CLI version $darcVersion..." Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' if (-not $toolpath) { - Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity -g" - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g + Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g" + & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g }else { - Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'" - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" + Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'" + & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" } } diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index b56d40e5706..9f5ad6b763b 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -73,9 +73,9 @@ function InstallDarcCli { 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." if [ -z "$toolpath" ]; then - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g) + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) else - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") fi } diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 new file mode 100644 index 00000000000..a0c7d792a76 --- /dev/null +++ b/eng/common/generate-sbom-prep.ps1 @@ -0,0 +1,29 @@ +Param( + [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed +) + +. $PSScriptRoot\pipeline-logging-functions.ps1 + +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName + +Write-Host "Artifact name before : $ArtifactName" +Write-Host "Artifact name after : $SafeArtifactName" + +Write-Host "Creating dir $ManifestDirPath" + +# create directory for sbom manifest to be placed +if (!(Test-Path -path $SbomGenerationDir)) +{ + New-Item -ItemType Directory -path $SbomGenerationDir + Write-Host "Successfully created directory $SbomGenerationDir" +} +else{ + Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." +} + +Write-Host "Updating artifact name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh new file mode 100644 index 00000000000..b8ecca72bbf --- /dev/null +++ b/eng/common/generate-sbom-prep.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +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 )" +. $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 +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +sbom_generation_dir="$manifest_dir/$safe_artifact_name" + +if [ ! -d "$sbom_generation_dir" ] ; then + mkdir -p "$sbom_generation_dir" + echo "Sbom directory created." $sbom_generation_dir +else + Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." +fi + +echo "Artifact name before : "$artifact_name +echo "Artifact name after : "$safe_artifact_name +export ARTIFACT_NAME=$safe_artifact_name +echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" + +exit 0 diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1 index 672f4e2652e..fc0218a013d 100644 --- a/eng/common/post-build/redact-logs.ps1 +++ b/eng/common/post-build/redact-logs.ps1 @@ -49,8 +49,8 @@ try { Write-Host "Installing Binlog redactor CLI..." Write-Host "'$dotnet' new tool-manifest" & "$dotnet" new tool-manifest - Write-Host "'$dotnet' tool install $packageName --local --source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" - & "$dotnet" tool install $packageName --local --source "$PackageFeed" -v $verbosity --version $BinlogToolVersion + 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 diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 new file mode 100644 index 00000000000..1976ef70fb8 --- /dev/null +++ b/eng/common/post-build/sourcelink-validation.ps1 @@ -0,0 +1,327 @@ +param( + [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored + [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation + [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade + [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages + [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use +) + +$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 +# all files present in the repo at a specific commit point. +$global:RepoFiles = @{} + +# Maximum number of jobs to run in parallel +$MaxParallelJobs = 16 + +$MaxRetries = 5 +$RetryWaitTimeInSeconds = 30 + +# Wait time between check for system load +$SecondsBetweenLoadChecks = 10 + +if (!$InputPath -or !(Test-Path $InputPath)){ + Write-Host "No files to validate." + ExitWithExitCode 0 +} + +$ValidatePackage = { + param( + [string] $PackagePath # Full path to a Symbols.NuGet package + ) + + . $using:PSScriptRoot\..\tools.ps1 + + # Ensure input file exist + if (!(Test-Path $PackagePath)) { + Write-Host "Input file does not exist: $PackagePath" + return [pscustomobject]@{ + result = 1 + packagePath = $PackagePath + } + } + + # Extensions for which we'll look for SourceLink information + # For now we'll only care about Portable & Embedded PDBs + $RelevantExtensions = @('.dll', '.exe', '.pdb') + + Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...' + + $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) + $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId + $FailedFiles = 0 + + Add-Type -AssemblyName System.IO.Compression.FileSystem + + [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null + + try { + $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) + + $zip.Entries | + Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | + ForEach-Object { + $FileName = $_.FullName + $Extension = [System.IO.Path]::GetExtension($_.Name) + $FakeName = -Join((New-Guid), $Extension) + $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName + + # We ignore resource DLLs + if ($FileName.EndsWith('.resources.dll')) { + return [pscustomobject]@{ + result = 0 + packagePath = $PackagePath + } + } + + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) + + $ValidateFile = { + param( + [string] $FullPath, # Full path to the module that has to be checked + [string] $RealPath, + [ref] $FailedFiles + ) + + $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools" + $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe" + $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String + + if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { + $NumFailedLinks = 0 + + # We only care about Http addresses + $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches + + if ($Matches.Count -ne 0) { + $Matches.Value | + ForEach-Object { + $Link = $_ + $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/" + + $FilePath = $Link.Replace($CommitUrl, "") + $Status = 200 + $Cache = $using:RepoFiles + + $attempts = 0 + + while ($attempts -lt $using:MaxRetries) { + if ( !($Cache.ContainsKey($FilePath)) ) { + try { + $Uri = $Link -as [System.URI] + + if ($Link -match "submodules") { + # Skip submodule links until sourcelink properly handles submodules + $Status = 200 + } + elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) { + # Only GitHub links are valid + $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode + } + else { + # If it's not a github link, we want to break out of the loop and not retry. + $Status = 0 + $attempts = $using:MaxRetries + } + } + catch { + Write-Host $_ + $Status = 0 + } + } + + if ($Status -ne 200) { + $attempts++ + + if ($attempts -lt $using:MaxRetries) + { + $attemptsLeft = $using:MaxRetries - $attempts + Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds" + Start-Sleep -Seconds $using:RetryWaitTimeInSeconds + } + else { + if ($NumFailedLinks -eq 0) { + if ($FailedFiles.Value -eq 0) { + Write-Host + } + + Write-Host "`tFile $RealPath has broken links:" + } + + Write-Host "`t`tFailed to retrieve $Link" + + $NumFailedLinks++ + } + } + else { + break + } + } + } + } + + if ($NumFailedLinks -ne 0) { + $FailedFiles.value++ + $global:LASTEXITCODE = 1 + } + } + } + + &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) + } + } + catch { + Write-Host $_ + } + finally { + $zip.Dispose() + } + + if ($FailedFiles -eq 0) { + Write-Host 'Passed.' + return [pscustomobject]@{ + result = 0 + packagePath = $PackagePath + } + } + else { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." + return [pscustomobject]@{ + result = 1 + packagePath = $PackagePath + } + } +} + +function CheckJobResult( + $result, + $packagePath, + [ref]$ValidationFailures, + [switch]$logErrors) { + if ($result -ne '0') { + if ($logErrors) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." + } + $ValidationFailures.Value++ + } +} + +function ValidateSourceLinkLinks { + if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) { + if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'" + ExitWithExitCode 1 + } + else { + $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2'; + } + } + + if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'" + ExitWithExitCode 1 + } + + if ($GHRepoName -ne '' -and $GHCommit -ne '') { + $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1') + $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript') + + try { + # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash + $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree + + foreach ($file in $Data) { + $Extension = [System.IO.Path]::GetExtension($file.path) + + if ($CodeExtensions.Contains($Extension)) { + $RepoFiles[$file.path] = 1 + } + } + } + catch { + Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching." + } + } + elseif ($GHRepoName -ne '' -or $GHCommit -ne '') { + Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.' + } + + if (Test-Path $ExtractPath) { + Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue + } + + $ValidationFailures = 0 + + # Process each NuGet package in parallel + Get-ChildItem "$InputPath\*.symbols.nupkg" | + ForEach-Object { + Write-Host "Starting $($_.FullName)" + Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null + $NumJobs = @(Get-Job -State 'Running').Count + + while ($NumJobs -ge $MaxParallelJobs) { + Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." + sleep $SecondsBetweenLoadChecks + $NumJobs = @(Get-Job -State 'Running').Count + } + + foreach ($Job in @(Get-Job -State 'Completed')) { + $jobResult = Wait-Job -Id $Job.Id | Receive-Job + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors + Remove-Job -Id $Job.Id + } + } + + foreach ($Job in @(Get-Job)) { + $jobResult = Wait-Job -Id $Job.Id | Receive-Job + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) + Remove-Job -Id $Job.Id + } + if ($ValidationFailures -gt 0) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation." + ExitWithExitCode 1 + } +} + +function InstallSourcelinkCli { + $sourcelinkCliPackageName = 'sourcelink' + + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + $toolList = & "$dotnet" tool list --global + + if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) { + Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed." + } + else { + Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..." + Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' + & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global + } +} + +try { + InstallSourcelinkCli + + foreach ($Job in @(Get-Job)) { + Remove-Job -Id $Job.Id + } + + ValidateSourceLinkLinks +} +catch { + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ + ExitWithExitCode 1 +} diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index 68119de603e..4017ff15ebf 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -66,7 +66,20 @@ try { if( $msbuildEngine -eq "vs") { # Ensure desktop MSBuild is available for sdk tasks. - $global:_MSBuildExe = InitializeVisualStudioMSBuild + if( -not ($GlobalJson.tools.PSObject.Properties.Name -contains "vs" )) { + $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 "18.0.0" -MemberType NoteProperty + } + if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { + $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true + } + if ($xcopyMSBuildToolsFolder -eq $null) { + throw 'Unable to get xcopy downloadable version of msbuild' + } + + $global:_MSBuildExe = "$($xcopyMSBuildToolsFolder)\MSBuild\Current\Bin\MSBuild.exe" } $taskProject = GetSdkTaskProject $task diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md index f772aa3d78f..cdc62e72b07 100644 --- a/eng/common/template-guidance.md +++ b/eng/common/template-guidance.md @@ -81,6 +81,7 @@ eng\common\ 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) @@ -103,6 +104,7 @@ eng\common\ 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) diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index d68e9fbc265..f70224eaa45 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -1,15 +1,24 @@ parameters: +# Sbom related params + enableSbom: true runAsPublic: false -# Sbom related params, unused now and can eventually be removed - enableSbom: unused - PackageVersion: unused - BuildDropPath: unused + PackageVersion: 9.0.0 + BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' jobs: - 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: @@ -17,19 +26,12 @@ jobs: outputs: - ${{ if ne(parameters.artifacts.publish, '') }}: - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - output: pipelineArtifact - displayName: Publish pipeline artifacts - targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' - artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - condition: succeeded() - retryCountOnTaskFailure: 10 # for any files being locked - continueOnError: true - - output: pipelineArtifact + - output: buildArtifacts displayName: Publish pipeline artifacts - targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' - artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) - condition: not(succeeded()) - retryCountOnTaskFailure: 10 # for any files being locked + 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 @@ -38,8 +40,8 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any files being locked - isProduction: false # logs are non-production artifacts + retryCountOnTaskFailure: 10 # for any logs being locked + sbomEnabled: false # we don't need SBOM for logs - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: - output: pipelineArtifact @@ -48,8 +50,7 @@ jobs: artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any files being locked - isProduction: false # logs are non-production artifacts + sbomEnabled: false # we don't need SBOM for logs - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - output: pipelineArtifact @@ -57,20 +58,14 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - retryCountOnTaskFailure: 10 # for any files being locked - isProduction: false # BuildConfiguration is a non-production artifact + sbomEnabled: false # we don't need SBOM for BuildConfiguration - # V4 publishing: automatically publish staged artifacts as a pipeline artifact. - # The artifact name matches the SDK's FutureArtifactName ($(System.PhaseName)_Artifacts), - # which is encoded in the asset manifest for downstream publishing to discover. - # Jobs can opt in by setting enablePublishing: true. - - ${{ if and(eq(parameters.publishingVersion, 4), eq(parameters.enablePublishing, 'true')) }}: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: - output: pipelineArtifact - displayName: 'Publish V4 pipeline artifacts' - targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' - artifactName: '$(System.PhaseName)_Artifacts' + displayName: Publish SBOM manifest continueOnError: true - retryCountOnTaskFailure: 10 # for any files being locked + targetPath: $(Build.ArtifactStagingDirectory)/sbom + artifactName: $(ARTIFACT_NAME) # add any outputs provided via root yaml - ${{ if ne(parameters.templateContext.outputs, '') }}: diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml new file mode 100644 index 00000000000..30bb3985ca2 --- /dev/null +++ b/eng/common/templates-official/steps/component-governance.yml @@ -0,0 +1,7 @@ +steps: +- 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/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml index 9e5981365e5..172f9f0fdc9 100644 --- a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml +++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -24,7 +24,5 @@ steps: artifactName: ${{ parameters.args.artifactName }} ${{ if parameters.args.properties }}: properties: ${{ parameters.args.properties }} - ${{ if ne(parameters.args.sbomEnabled, '') }}: + ${{ if parameters.args.sbomEnabled }}: sbomEnabled: ${{ parameters.args.sbomEnabled }} - ${{ if ne(parameters.args.isProduction, '') }}: - isProduction: ${{ parameters.args.isProduction }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 5e261f34db4..7f1b5d97d1a 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -1,12 +1,12 @@ parameters: enablePublishBuildArtifacts: false + disableComponentGovernance: '' + componentGovernanceIgnoreDirectories: '' +# Sbom related params + enableSbom: true runAsPublic: false -# CG related params, unused now and can eventually be removed - disableComponentGovernance: unused -# Sbom related params, unused now and can eventually be removed - enableSbom: unused - PackageVersion: unused - BuildDropPath: unused + PackageVersion: 9.0.0 + BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' jobs: - template: /eng/common/core-templates/job/job.yml @@ -21,34 +21,32 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - # we don't run CG in public - - ${{ if eq(variables['System.TeamProject'], 'public') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable + 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 }}: + disableComponentGovernance: true + ${{ else }}: + 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-pipeline-artifacts.yml + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml parameters: is1ESPipeline: false args: displayName: Publish pipeline artifacts - targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + publishLocation: Container artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} continueOnError: true - condition: succeeded() - retryCountOnTaskFailure: 10 # for any files being locked - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml - parameters: - is1ESPipeline: false - args: - displayName: Publish pipeline artifacts - targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' - artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) - continueOnError: true - condition: not(succeeded()) - retryCountOnTaskFailure: 10 # for any files being locked + 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: @@ -59,7 +57,8 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any files being locked + retryCountOnTaskFailure: 10 # for any logs being locked + sbomEnabled: false # we don't need SBOM for logs - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -71,7 +70,7 @@ jobs: artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any files being locked + sbomEnabled: false - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -82,4 +81,4 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - retryCountOnTaskFailure: 10 # for any files being locked + sbomEnabled: false # we don't need SBOM for BuildConfiguration diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml new file mode 100644 index 00000000000..c12a5f8d21d --- /dev/null +++ b/eng/common/templates/steps/component-governance.yml @@ -0,0 +1,7 @@ +steps: +- 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/tools.ps1 b/eng/common/tools.ps1 index d1ca56d8457..6710ffb884b 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -375,11 +375,12 @@ function InstallDotNet([string] $dotnetRoot, # # 1. MSBuild from an active VS command prompt # 2. MSBuild from a compatible VS installation +# 3. MSBuild from the xcopy tool package # # Returns full path to msbuild.exe. # Throws on failure. # -function InitializeVisualStudioMSBuild([object]$vsRequirements = $null) { +function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = $null) { if (-not (IsWindowsPlatform)) { throw "Cannot initialize Visual Studio on non-Windows" } @@ -389,7 +390,13 @@ function InitializeVisualStudioMSBuild([object]$vsRequirements = $null) { } # Minimum VS version to require. - $vsMinVersionReqdStr = '18.0' + $vsMinVersionReqdStr = '17.7' + $vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr) + + # 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/18.0.0 + $defaultXCopyMSBuildVersion = '18.0.0' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { @@ -419,16 +426,46 @@ function InitializeVisualStudioMSBuild([object]$vsRequirements = $null) { } } - # Locate Visual Studio installation. + # Locate Visual Studio installation or download x-copy msbuild. $vsInfo = LocateVisualStudio $vsRequirements - if ($vsInfo -ne $null) { + if ($vsInfo -ne $null -and $env:ForceUseXCopyMSBuild -eq $null) { # Ensure vsInstallDir has a trailing slash $vsInstallDir = Join-Path $vsInfo.installationPath "\" $vsMajorVersion = $vsInfo.installationVersion.Split('.')[0] InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion } else { - throw 'Unable to find Visual Studio that has required version and components installed' + if (Get-Member -InputObject $GlobalJson.tools -Name 'xcopy-msbuild') { + $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' + $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] + } else { + #if vs version provided in global.json is incompatible (too low) then use the default version for xcopy msbuild download + if($vsMinVersion -lt $vsMinVersionReqd){ + Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible" + $xcopyMSBuildVersion = $defaultXCopyMSBuildVersion + $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] + } + else{ + # If the VS version IS compatible, look for an xcopy msbuild package + # with a version matching VS. + # Note: If this version does not exist, then an explicit version of xcopy msbuild + # can be specified in global.json. This will be required for pre-release versions of msbuild. + $vsMajorVersion = $vsMinVersion.Major + $vsMinorVersion = $vsMinVersion.Minor + $xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0" + } + } + + $vsInstallDir = $null + if ($xcopyMSBuildVersion.Trim() -ine "none") { + $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install + if ($vsInstallDir -eq $null) { + throw "Could not xcopy msbuild. Please check that package 'Microsoft.DotNet.Arcade.MSBuild.Xcopy @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." + } + } + if ($vsInstallDir -eq $null) { + throw 'Unable to find Visual Studio that has required version and components installed' + } } $msbuildVersionDir = if ([int]$vsMajorVersion -lt 16) { "$vsMajorVersion.0" } else { "Current" } @@ -455,6 +492,38 @@ function InitializeVisualStudioEnvironmentVariables([string] $vsInstallDir, [str } } +function InstallXCopyMSBuild([string]$packageVersion) { + return InitializeXCopyMSBuild $packageVersion -install $true +} + +function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { + $packageName = 'Microsoft.DotNet.Arcade.MSBuild.Xcopy' + $packageDir = Join-Path $ToolsDir "msbuild\$packageVersion" + $packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg" + + if (!(Test-Path $packageDir)) { + if (!$install) { + return $null + } + + Create-Directory $packageDir + + Write-Host "Downloading $packageName $packageVersion" + $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit + Retry({ + 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 + } + + return Join-Path $packageDir 'tools' +} + # # Locates Visual Studio instance that meets the minimal requirements specified by tools.vs object in global.json. # @@ -563,7 +632,7 @@ function InitializeBuildTool() { $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net' } } elseif ($msbuildEngine -eq "vs") { try { - $msbuildPath = InitializeVisualStudioMSBuild + $msbuildPath = InitializeVisualStudioMSBuild -install:$restore } catch { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ ExitWithExitCode 1 @@ -676,7 +745,7 @@ function InitializeToolset() { ExitWithExitCode 1 } - $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--verbosity", "minimal", "--prerelease", "--output", "$nugetCache") + $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--prerelease", "--output", "$nugetCache") if ($env:NUGET_CONFIG) { $downloadArgs += "--configfile" $downloadArgs += $env:NUGET_CONFIG diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 22341be2cc6..d2339eb21d5 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -426,7 +426,7 @@ function InitializeToolset { ExitWithExitCode 2 fi - local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--verbosity" "minimal" "--prerelease" "--output" "$_GetNuGetPackageCachePath") + local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--prerelease" "--output" "$_GetNuGetPackageCachePath") if [[ -n "${NUGET_CONFIG:-}" ]]; then download_args+=("--configfile" "$NUGET_CONFIG") fi diff --git a/global.json b/global.json index 800c131561a..306a9654031 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26215.121", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26215.121" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26212.102", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26212.102" }, "native-tools": { "python3": "3.7.1" From 927ef418fa767a8944ffbd6f58e49aa5a1380ed7 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 20 Apr 2026 05:35:23 +0000 Subject: [PATCH 07/30] Update dependencies from https://github.com/dotnet/dotnet build 20260411.2 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26211.102 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26211.102 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26211.102 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index abbc1039047..ae0e5ebcfe3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b - + https://github.com/dotnet/dotnet - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + 36afe73557f5f93cd7bc827cb644a3ff018eca0b https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + + 36afe73557f5f93cd7bc827cb644a3ff018eca0b https://github.com/dotnet/dotnet - - 093e1190e2cbb19b3800c6233cd4cd0a363fac2c + + 36afe73557f5f93cd7bc827cb644a3ff018eca0b https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index db7979baa59..74736337948 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26212.102 - 11.0.0-preview.4.26212.102 - 11.0.0-preview.4.26212.102 - 11.0.0-preview.4.26212.102 + 11.0.0-preview.4.26211.102 + 11.0.0-preview.4.26211.102 + 11.0.0-preview.4.26211.102 + 11.0.0-preview.4.26211.102 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26212.102 + 11.0.0-preview.4.26211.102 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 306a9654031..5386ecdac38 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26212.102", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26212.102" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26211.102", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26211.102" }, "native-tools": { "python3": "3.7.1" From 15b83ac1d20d0169c08eb56bf321480baf9c1b98 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 23 Apr 2026 14:52:05 +0000 Subject: [PATCH 08/30] Update dependencies from https://github.com/dotnet/dotnet build 20260422.42 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26222.142 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26222.142 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26222.142 --- eng/Version.Details.xml | 40 +-- eng/Versions.props | 10 +- eng/common/core-templates/job/job.yml | 5 +- .../job/publish-build-assets.yml | 12 +- eng/common/core-templates/job/renovate.yml | 2 +- eng/common/core-templates/jobs/jobs.yml | 5 + .../post-build/common-variables.yml | 2 - .../core-templates/post-build/post-build.yml | 134 ++++--- .../post-build/setup-maestro-vars.yml | 5 +- .../steps/component-governance.yml | 16 - .../core-templates/steps/generate-sbom.yml | 60 +--- .../core-templates/steps/publish-logs.yml | 10 +- .../core-templates/steps/source-build.yml | 2 +- eng/common/darc-init.ps1 | 8 +- eng/common/darc-init.sh | 4 +- eng/common/generate-sbom-prep.ps1 | 29 -- eng/common/generate-sbom-prep.sh | 39 --- eng/common/post-build/redact-logs.ps1 | 4 +- .../post-build/sourcelink-validation.ps1 | 327 ------------------ eng/common/sdk-task.ps1 | 15 +- eng/common/template-guidance.md | 2 - eng/common/templates-official/job/job.yml | 57 +-- .../steps/component-governance.yml | 7 - .../steps/publish-pipeline-artifacts.yml | 4 +- eng/common/templates/job/job.yml | 53 +-- .../templates/steps/component-governance.yml | 7 - eng/common/tools.ps1 | 103 ++---- eng/common/tools.sh | 23 +- global.json | 4 +- 29 files changed, 238 insertions(+), 751 deletions(-) delete mode 100644 eng/common/core-templates/steps/component-governance.yml delete mode 100644 eng/common/generate-sbom-prep.ps1 delete mode 100644 eng/common/generate-sbom-prep.sh delete mode 100644 eng/common/post-build/sourcelink-validation.ps1 delete mode 100644 eng/common/templates-official/steps/component-governance.yml delete mode 100644 eng/common/templates/steps/component-governance.yml diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ae0e5ebcfe3..c8b8f4fe409 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 - + https://github.com/dotnet/dotnet - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + aae32bdb43e214583a15e3393e38c889b9447ec4 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + + aae32bdb43e214583a15e3393e38c889b9447ec4 https://github.com/dotnet/dotnet - - 36afe73557f5f93cd7bc827cb644a3ff018eca0b + + aae32bdb43e214583a15e3393e38c889b9447ec4 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 74736337948..370d9f63146 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26211.102 - 11.0.0-preview.4.26211.102 - 11.0.0-preview.4.26211.102 - 11.0.0-preview.4.26211.102 + 11.0.0-preview.4.26222.142 + 11.0.0-preview.4.26222.142 + 11.0.0-preview.4.26222.142 + 11.0.0-preview.4.26222.142 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26211.102 + 11.0.0-preview.4.26222.142 11.0.0-prerelease.26204.1 diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml index 748c4f07a64..66c7988f222 100644 --- a/eng/common/core-templates/job/job.yml +++ b/eng/common/core-templates/job/job.yml @@ -26,12 +26,12 @@ parameters: enablePublishBuildArtifacts: false enablePublishBuildAssets: false enablePublishTestResults: false + enablePublishing: false enableBuildRetry: false mergeTestResults: false testRunTitle: '' testResultsFormat: '' name: '' - componentGovernanceSteps: [] preSteps: [] artifactPublishSteps: [] runAsPublic: false @@ -152,9 +152,6 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - - ${{ each step in parameters.componentGovernanceSteps }}: - - ${{ step }} - - ${{ 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: diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml index 9d7490518c4..700f7711465 100644 --- a/eng/common/core-templates/job/publish-build-assets.yml +++ b/eng/common/core-templates/job/publish-build-assets.yml @@ -172,17 +172,18 @@ jobs: 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 + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # just metadata for publishing - - 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 ReleaseConfigs Artifact - pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs' - publishLocation: Container + targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' artifactName: ReleaseConfigs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # just metadata for publishing - ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}: - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -218,4 +219,5 @@ jobs: - template: /eng/common/core-templates/steps/publish-logs.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} + StageLabel: 'BuildAssetRegistry' JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/core-templates/job/renovate.yml b/eng/common/core-templates/job/renovate.yml index ab233539b5d..ff86c80b468 100644 --- a/eng/common/core-templates/job/renovate.yml +++ b/eng/common/core-templates/job/renovate.yml @@ -135,7 +135,7 @@ jobs: condition: succeededOrFailed() targetPath: $(Build.ArtifactStagingDirectory) artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt) - sbomEnabled: false + isProduction: false # logs are non-production artifacts steps: - checkout: self diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml index 01ada747665..cc8cce45278 100644 --- a/eng/common/core-templates/jobs/jobs.yml +++ b/eng/common/core-templates/jobs/jobs.yml @@ -43,6 +43,10 @@ parameters: artifacts: {} is1ESPipeline: '' + + # Publishing version w/default. + publishingVersion: 3 + repositoryAlias: self officialBuildId: '' @@ -102,6 +106,7 @@ jobs: parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} continueOnError: ${{ parameters.continueOnError }} + publishingVersion: ${{ parameters.publishingVersion }} dependsOn: - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - ${{ each job in parameters.publishBuildAssetsDependsOn }}: diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml index d5627a994ae..db298ae16ba 100644 --- a/eng/common/core-templates/post-build/common-variables.yml +++ b/eng/common/core-templates/post-build/common-variables.yml @@ -11,8 +11,6 @@ variables: - name: MaestroApiVersion value: "2020-02-20" - - name: SourceLinkCLIVersion - value: 3.0.0 - name: SymbolToolVersion value: 1.0.1 - name: BinlogToolVersion diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 0994189969f..8aa86e30491 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -9,6 +9,7 @@ parameters: default: 3 values: - 3 + - 4 - name: BARBuildId displayName: BAR Build Id @@ -130,16 +131,30 @@ stages: 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 + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/packages/**/*.nupkg' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten packages to PackageArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' + flattenFolders: true - task: PowerShell@2 displayName: Validate @@ -173,16 +188,30 @@ stages: 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 + - ${{ if ne(parameters.publishingInfraVersion, 4) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + - ${{ if eq(parameters.publishingInfraVersion, 4) }}: + - task: DownloadPipelineArtifact@2 + displayName: Download Pipeline Artifacts (V4) + inputs: + itemPattern: '*/packages/**/*.nupkg' + targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + - task: CopyFiles@2 + displayName: Flatten packages to PackageArtifacts + inputs: + SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload' + Contents: '**/*.nupkg' + TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts' + flattenFolders: true # 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 @@ -196,7 +225,7 @@ stages: displayName: Validate inputs: filePath: eng\common\sdk-task.ps1 - arguments: -task SigningValidation -restore + arguments: -task SigningValidation -restore -msbuildEngine dotnet /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt' ${{ parameters.signingValidationAdditionalParameters }} @@ -208,53 +237,20 @@ stages: 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-Windows2025 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ else }}: - ${{ if eq(parameters.is1ESPipeline, true) }}: - name: $(DncEngInternalBuildPool) - image: windows.vs2026.amd64 - os: windows - ${{ else }}: - name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2026.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 + # SourceLink validation has been removed — the underlying CLI tool + # (targeting netcoreapp2.1) has not functioned for years. + # The enableSourceLinkValidation parameter is kept but ignored so + # existing pipelines that pass it are not broken. + # See https://github.com/dotnet/arcade/issues/16647 + - ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}: + - job: + displayName: 'SourceLink Validation Removed - please remove enableSourceLinkValidation from your pipeline' + pool: server + steps: + - task: Delay@1 + displayName: 'Warning: SourceLink validation removed (see https://github.com/dotnet/arcade/issues/16647)' + inputs: + delayForMinutes: '0' - ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: - stage: publish_using_darc @@ -317,7 +313,7 @@ stages: scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: > -BuildId $(BARBuildId) - -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} + -PublishingInfraVersion 3 -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml index a7abd58c4bb..6dfa99ec5e3 100644 --- a/eng/common/core-templates/post-build/setup-maestro-vars.yml +++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -8,12 +8,11 @@ steps: - '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 + - task: DownloadPipelineArtifact@2 displayName: Download Release Configs inputs: - buildType: current artifactName: ReleaseConfigs - checkDownloadedFiles: true + targetPath: '$(Build.StagingDirectory)/ReleaseConfigs' - task: AzureCLI@2 name: setReleaseVars diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml deleted file mode 100644 index cf0649aa956..00000000000 --- a/eng/common/core-templates/steps/component-governance.yml +++ /dev/null @@ -1,16 +0,0 @@ -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/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index 003f7eae0fa..aad0a8aeda3 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -1,54 +1,14 @@ -# 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: 11.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 + PackageVersion: unused + BuildDropPath: unused + PackageName: unused + ManifestDirPath: unused + IgnoreDirectories: unused + sbomContinueOnError: unused + is1ESPipeline: unused + publishArtifacts: unused 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) - + echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include." + displayName: Issue generate-sbom.yml deprecation warning diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml index a9ea99ba6aa..84a1922c73f 100644 --- a/eng/common/core-templates/steps/publish-logs.yml +++ b/eng/common/core-templates/steps/publish-logs.yml @@ -50,13 +50,15 @@ steps: TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' condition: always() -- 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 Logs - pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' - publishLocation: Container - artifactName: PostBuildLogs + targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs' + artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt) continueOnError: true condition: always() + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts + diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index acf16ed3496..b75f59c428d 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -62,4 +62,4 @@ steps: artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() - sbomEnabled: false # we don't need SBOM for logs + isProduction: false # logs are non-production artifacts diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index e3374310563..a5be41db690 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -29,11 +29,11 @@ function InstallDarcCli ($darcVersion, $toolpath) { Write-Host "Installing Darc CLI version $darcVersion..." Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' if (-not $toolpath) { - Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g" - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g + Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity -g" + & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g }else { - Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'" - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" + Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'" + & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" } } diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 9f5ad6b763b..b56d40e5706 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -73,9 +73,9 @@ function InstallDarcCli { 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." if [ -z "$toolpath" ]; then - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g) else - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") fi } diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 deleted file mode 100644 index a0c7d792a76..00000000000 --- a/eng/common/generate-sbom-prep.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -Param( - [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed -) - -. $PSScriptRoot\pipeline-logging-functions.ps1 - -# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' -$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName - -Write-Host "Artifact name before : $ArtifactName" -Write-Host "Artifact name after : $SafeArtifactName" - -Write-Host "Creating dir $ManifestDirPath" - -# create directory for sbom manifest to be placed -if (!(Test-Path -path $SbomGenerationDir)) -{ - New-Item -ItemType Directory -path $SbomGenerationDir - Write-Host "Successfully created directory $SbomGenerationDir" -} -else{ - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -} - -Write-Host "Updating artifact name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh deleted file mode 100644 index b8ecca72bbf..00000000000 --- a/eng/common/generate-sbom-prep.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -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 )" -. $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 -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -sbom_generation_dir="$manifest_dir/$safe_artifact_name" - -if [ ! -d "$sbom_generation_dir" ] ; then - mkdir -p "$sbom_generation_dir" - echo "Sbom directory created." $sbom_generation_dir -else - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -fi - -echo "Artifact name before : "$artifact_name -echo "Artifact name after : "$safe_artifact_name -export ARTIFACT_NAME=$safe_artifact_name -echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" - -exit 0 diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1 index fc0218a013d..672f4e2652e 100644 --- a/eng/common/post-build/redact-logs.ps1 +++ b/eng/common/post-build/redact-logs.ps1 @@ -49,8 +49,8 @@ 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 + Write-Host "'$dotnet' tool install $packageName --local --source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" + & "$dotnet" tool install $packageName --local --source "$PackageFeed" -v $verbosity --version $BinlogToolVersion if (Test-Path $TokensFilePath) { Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 deleted file mode 100644 index 1976ef70fb8..00000000000 --- a/eng/common/post-build/sourcelink-validation.ps1 +++ /dev/null @@ -1,327 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade - [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages - [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use -) - -$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 -# all files present in the repo at a specific commit point. -$global:RepoFiles = @{} - -# Maximum number of jobs to run in parallel -$MaxParallelJobs = 16 - -$MaxRetries = 5 -$RetryWaitTimeInSeconds = 30 - -# Wait time between check for system load -$SecondsBetweenLoadChecks = 10 - -if (!$InputPath -or !(Test-Path $InputPath)){ - Write-Host "No files to validate." - ExitWithExitCode 0 -} - -$ValidatePackage = { - param( - [string] $PackagePath # Full path to a Symbols.NuGet package - ) - - . $using:PSScriptRoot\..\tools.ps1 - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - Write-Host "Input file does not exist: $PackagePath" - return [pscustomobject]@{ - result = 1 - packagePath = $PackagePath - } - } - - # Extensions for which we'll look for SourceLink information - # For now we'll only care about Portable & Embedded PDBs - $RelevantExtensions = @('.dll', '.exe', '.pdb') - - Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - $FailedFiles = 0 - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null - - try { - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $FileName = $_.FullName - $Extension = [System.IO.Path]::GetExtension($_.Name) - $FakeName = -Join((New-Guid), $Extension) - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName - - # We ignore resource DLLs - if ($FileName.EndsWith('.resources.dll')) { - return [pscustomobject]@{ - result = 0 - packagePath = $PackagePath - } - } - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) - - $ValidateFile = { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $RealPath, - [ref] $FailedFiles - ) - - $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools" - $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe" - $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String - - if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { - $NumFailedLinks = 0 - - # We only care about Http addresses - $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches - - if ($Matches.Count -ne 0) { - $Matches.Value | - ForEach-Object { - $Link = $_ - $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/" - - $FilePath = $Link.Replace($CommitUrl, "") - $Status = 200 - $Cache = $using:RepoFiles - - $attempts = 0 - - while ($attempts -lt $using:MaxRetries) { - if ( !($Cache.ContainsKey($FilePath)) ) { - try { - $Uri = $Link -as [System.URI] - - if ($Link -match "submodules") { - # Skip submodule links until sourcelink properly handles submodules - $Status = 200 - } - elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) { - # Only GitHub links are valid - $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode - } - else { - # If it's not a github link, we want to break out of the loop and not retry. - $Status = 0 - $attempts = $using:MaxRetries - } - } - catch { - Write-Host $_ - $Status = 0 - } - } - - if ($Status -ne 200) { - $attempts++ - - if ($attempts -lt $using:MaxRetries) - { - $attemptsLeft = $using:MaxRetries - $attempts - Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds" - Start-Sleep -Seconds $using:RetryWaitTimeInSeconds - } - else { - if ($NumFailedLinks -eq 0) { - if ($FailedFiles.Value -eq 0) { - Write-Host - } - - Write-Host "`tFile $RealPath has broken links:" - } - - Write-Host "`t`tFailed to retrieve $Link" - - $NumFailedLinks++ - } - } - else { - break - } - } - } - } - - if ($NumFailedLinks -ne 0) { - $FailedFiles.value++ - $global:LASTEXITCODE = 1 - } - } - } - - &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) - } - } - catch { - Write-Host $_ - } - finally { - $zip.Dispose() - } - - if ($FailedFiles -eq 0) { - Write-Host 'Passed.' - return [pscustomobject]@{ - result = 0 - packagePath = $PackagePath - } - } - else { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." - return [pscustomobject]@{ - result = 1 - packagePath = $PackagePath - } - } -} - -function CheckJobResult( - $result, - $packagePath, - [ref]$ValidationFailures, - [switch]$logErrors) { - if ($result -ne '0') { - if ($logErrors) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." - } - $ValidationFailures.Value++ - } -} - -function ValidateSourceLinkLinks { - if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) { - if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'" - ExitWithExitCode 1 - } - else { - $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2'; - } - } - - if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'" - ExitWithExitCode 1 - } - - if ($GHRepoName -ne '' -and $GHCommit -ne '') { - $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1') - $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript') - - try { - # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash - $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree - - foreach ($file in $Data) { - $Extension = [System.IO.Path]::GetExtension($file.path) - - if ($CodeExtensions.Contains($Extension)) { - $RepoFiles[$file.path] = 1 - } - } - } - catch { - Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching." - } - } - elseif ($GHRepoName -ne '' -or $GHCommit -ne '') { - Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.' - } - - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - $ValidationFailures = 0 - - # Process each NuGet package in parallel - Get-ChildItem "$InputPath\*.symbols.nupkg" | - ForEach-Object { - Write-Host "Starting $($_.FullName)" - Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null - $NumJobs = @(Get-Job -State 'Running').Count - - while ($NumJobs -ge $MaxParallelJobs) { - Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." - sleep $SecondsBetweenLoadChecks - $NumJobs = @(Get-Job -State 'Running').Count - } - - foreach ($Job in @(Get-Job -State 'Completed')) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors - Remove-Job -Id $Job.Id - } - } - - foreach ($Job in @(Get-Job)) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) - Remove-Job -Id $Job.Id - } - if ($ValidationFailures -gt 0) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation." - ExitWithExitCode 1 - } -} - -function InstallSourcelinkCli { - $sourcelinkCliPackageName = 'sourcelink' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list --global - - if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) { - Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed." - } - else { - Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global - } -} - -try { - InstallSourcelinkCli - - foreach ($Job in @(Get-Job)) { - Remove-Job -Id $Job.Id - } - - ValidateSourceLinkLinks -} -catch { - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index 4017ff15ebf..68119de603e 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -66,20 +66,7 @@ try { if( $msbuildEngine -eq "vs") { # Ensure desktop MSBuild is available for sdk tasks. - if( -not ($GlobalJson.tools.PSObject.Properties.Name -contains "vs" )) { - $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 "18.0.0" -MemberType NoteProperty - } - if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { - $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true - } - if ($xcopyMSBuildToolsFolder -eq $null) { - throw 'Unable to get xcopy downloadable version of msbuild' - } - - $global:_MSBuildExe = "$($xcopyMSBuildToolsFolder)\MSBuild\Current\Bin\MSBuild.exe" + $global:_MSBuildExe = InitializeVisualStudioMSBuild } $taskProject = GetSdkTaskProject $task diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md index cdc62e72b07..f772aa3d78f 100644 --- a/eng/common/template-guidance.md +++ b/eng/common/template-guidance.md @@ -81,7 +81,6 @@ eng\common\ 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) @@ -104,7 +103,6 @@ eng\common\ 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) diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index f70224eaa45..d68e9fbc265 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -1,24 +1,15 @@ parameters: -# Sbom related params - enableSbom: true runAsPublic: false - PackageVersion: 9.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' +# Sbom related params, unused now and can eventually be removed + enableSbom: unused + PackageVersion: unused + BuildDropPath: unused jobs: - 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: @@ -26,12 +17,19 @@ jobs: outputs: - ${{ if ne(parameters.artifacts.publish, '') }}: - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - output: buildArtifacts + - output: pipelineArtifact displayName: Publish pipeline artifacts - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + condition: succeeded() + retryCountOnTaskFailure: 10 # for any files being locked + continueOnError: true + - output: pipelineArtifact + displayName: Publish pipeline artifacts + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) + condition: not(succeeded()) + retryCountOnTaskFailure: 10 # for any files being locked continueOnError: true - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: - output: pipelineArtifact @@ -40,8 +38,8 @@ jobs: displayName: 'Publish logs' continueOnError: true condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked - sbomEnabled: false # we don't need SBOM for logs + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts - ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}: - output: pipelineArtifact @@ -50,7 +48,8 @@ jobs: 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 + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # logs are non-production artifacts - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - output: pipelineArtifact @@ -58,14 +57,20 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - sbomEnabled: false # we don't need SBOM for BuildConfiguration + retryCountOnTaskFailure: 10 # for any files being locked + isProduction: false # BuildConfiguration is a non-production artifact - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + # V4 publishing: automatically publish staged artifacts as a pipeline artifact. + # The artifact name matches the SDK's FutureArtifactName ($(System.PhaseName)_Artifacts), + # which is encoded in the asset manifest for downstream publishing to discover. + # Jobs can opt in by setting enablePublishing: true. + - ${{ if and(eq(parameters.publishingVersion, 4), eq(parameters.enablePublishing, 'true')) }}: - output: pipelineArtifact - displayName: Publish SBOM manifest + displayName: 'Publish V4 pipeline artifacts' + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: '$(System.PhaseName)_Artifacts' continueOnError: true - targetPath: $(Build.ArtifactStagingDirectory)/sbom - artifactName: $(ARTIFACT_NAME) + retryCountOnTaskFailure: 10 # for any files being locked # add any outputs provided via root yaml - ${{ if ne(parameters.templateContext.outputs, '') }}: diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml deleted file mode 100644 index 30bb3985ca2..00000000000 --- a/eng/common/templates-official/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- 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/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml index 172f9f0fdc9..9e5981365e5 100644 --- a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml +++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -24,5 +24,7 @@ steps: artifactName: ${{ parameters.args.artifactName }} ${{ if parameters.args.properties }}: properties: ${{ parameters.args.properties }} - ${{ if parameters.args.sbomEnabled }}: + ${{ if ne(parameters.args.sbomEnabled, '') }}: sbomEnabled: ${{ parameters.args.sbomEnabled }} + ${{ if ne(parameters.args.isProduction, '') }}: + isProduction: ${{ parameters.args.isProduction }} diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 7f1b5d97d1a..5e261f34db4 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -1,12 +1,12 @@ parameters: enablePublishBuildArtifacts: false - disableComponentGovernance: '' - componentGovernanceIgnoreDirectories: '' -# Sbom related params - enableSbom: true runAsPublic: false - PackageVersion: 9.0.0 - BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts' +# CG related params, unused now and can eventually be removed + disableComponentGovernance: unused +# Sbom related params, unused now and can eventually be removed + enableSbom: unused + PackageVersion: unused + BuildDropPath: unused jobs: - template: /eng/common/core-templates/job/job.yml @@ -21,32 +21,34 @@ jobs: - ${{ each step in parameters.steps }}: - ${{ step }} - 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 }}: - disableComponentGovernance: true - ${{ else }}: - disableComponentGovernance: ${{ parameters.disableComponentGovernance }} - componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + # we don't run CG in public + - ${{ if eq(variables['System.TeamProject'], 'public') }}: + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable 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 + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: false args: displayName: Publish pipeline artifacts - pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - publishLocation: Container + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} continueOnError: true - condition: always() - retryCountOnTaskFailure: 10 # for any logs being locked + condition: succeeded() + retryCountOnTaskFailure: 10 # for any files being locked + - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml + parameters: + is1ESPipeline: false + args: + displayName: Publish pipeline artifacts + targetPath: '$(Build.ArtifactStagingDirectory)/artifacts' + artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt) + continueOnError: true + condition: not(succeeded()) + retryCountOnTaskFailure: 10 # for any files 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: @@ -57,8 +59,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 + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -70,7 +71,7 @@ jobs: artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }} continueOnError: true condition: always() - sbomEnabled: false + retryCountOnTaskFailure: 10 # for any files being locked - ${{ if eq(parameters.enableBuildRetry, 'true') }}: - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -81,4 +82,4 @@ jobs: artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' continueOnError: true - sbomEnabled: false # we don't need SBOM for BuildConfiguration + retryCountOnTaskFailure: 10 # for any files being locked diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml deleted file mode 100644 index c12a5f8d21d..00000000000 --- a/eng/common/templates/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- 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/tools.ps1 b/eng/common/tools.ps1 index 6710ffb884b..65adefc7f26 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -185,7 +185,11 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) { if ((-not $globalJsonHasRuntimes) -and (-not [string]::IsNullOrEmpty($env:DOTNET_INSTALL_DIR)) -and (Test-Path(Join-Path $env:DOTNET_INSTALL_DIR "sdk\$dotnetSdkVersion"))) { $dotnetRoot = $env:DOTNET_INSTALL_DIR } else { - $dotnetRoot = Join-Path $RepoRoot '.dotnet' + if (-not [string]::IsNullOrEmpty($env:DOTNET_GLOBAL_INSTALL_DIR)) { + $dotnetRoot = $env:DOTNET_GLOBAL_INSTALL_DIR + } else { + $dotnetRoot = Join-Path $RepoRoot '.dotnet' + } if (-not (Test-Path(Join-Path $dotnetRoot "sdk\$dotnetSdkVersion"))) { if ($install) { @@ -375,12 +379,11 @@ function InstallDotNet([string] $dotnetRoot, # # 1. MSBuild from an active VS command prompt # 2. MSBuild from a compatible VS installation -# 3. MSBuild from the xcopy tool package # # Returns full path to msbuild.exe. # Throws on failure. # -function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = $null) { +function InitializeVisualStudioMSBuild([object]$vsRequirements = $null) { if (-not (IsWindowsPlatform)) { throw "Cannot initialize Visual Studio on non-Windows" } @@ -390,13 +393,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = } # Minimum VS version to require. - $vsMinVersionReqdStr = '17.7' - $vsMinVersionReqd = [Version]::new($vsMinVersionReqdStr) - - # 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/18.0.0 - $defaultXCopyMSBuildVersion = '18.0.0' + $vsMinVersionReqdStr = '18.0' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { @@ -426,46 +423,16 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = } } - # Locate Visual Studio installation or download x-copy msbuild. + # Locate Visual Studio installation. $vsInfo = LocateVisualStudio $vsRequirements - if ($vsInfo -ne $null -and $env:ForceUseXCopyMSBuild -eq $null) { + if ($vsInfo -ne $null) { # Ensure vsInstallDir has a trailing slash $vsInstallDir = Join-Path $vsInfo.installationPath "\" $vsMajorVersion = $vsInfo.installationVersion.Split('.')[0] InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion } else { - if (Get-Member -InputObject $GlobalJson.tools -Name 'xcopy-msbuild') { - $xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild' - $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] - } else { - #if vs version provided in global.json is incompatible (too low) then use the default version for xcopy msbuild download - if($vsMinVersion -lt $vsMinVersionReqd){ - Write-Host "Using xcopy-msbuild version of $defaultXCopyMSBuildVersion since VS version $vsMinVersionStr provided in global.json is not compatible" - $xcopyMSBuildVersion = $defaultXCopyMSBuildVersion - $vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0] - } - else{ - # If the VS version IS compatible, look for an xcopy msbuild package - # with a version matching VS. - # Note: If this version does not exist, then an explicit version of xcopy msbuild - # can be specified in global.json. This will be required for pre-release versions of msbuild. - $vsMajorVersion = $vsMinVersion.Major - $vsMinorVersion = $vsMinVersion.Minor - $xcopyMSBuildVersion = "$vsMajorVersion.$vsMinorVersion.0" - } - } - - $vsInstallDir = $null - if ($xcopyMSBuildVersion.Trim() -ine "none") { - $vsInstallDir = InitializeXCopyMSBuild $xcopyMSBuildVersion $install - if ($vsInstallDir -eq $null) { - throw "Could not xcopy msbuild. Please check that package 'Microsoft.DotNet.Arcade.MSBuild.Xcopy @ $xcopyMSBuildVersion' exists on feed 'dotnet-eng'." - } - } - if ($vsInstallDir -eq $null) { - throw 'Unable to find Visual Studio that has required version and components installed' - } + throw 'Unable to find Visual Studio that has required version and components installed' } $msbuildVersionDir = if ([int]$vsMajorVersion -lt 16) { "$vsMajorVersion.0" } else { "Current" } @@ -492,38 +459,6 @@ function InitializeVisualStudioEnvironmentVariables([string] $vsInstallDir, [str } } -function InstallXCopyMSBuild([string]$packageVersion) { - return InitializeXCopyMSBuild $packageVersion -install $true -} - -function InitializeXCopyMSBuild([string]$packageVersion, [bool]$install) { - $packageName = 'Microsoft.DotNet.Arcade.MSBuild.Xcopy' - $packageDir = Join-Path $ToolsDir "msbuild\$packageVersion" - $packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg" - - if (!(Test-Path $packageDir)) { - if (!$install) { - return $null - } - - Create-Directory $packageDir - - Write-Host "Downloading $packageName $packageVersion" - $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit - Retry({ - 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 - } - - return Join-Path $packageDir 'tools' -} - # # Locates Visual Studio instance that meets the minimal requirements specified by tools.vs object in global.json. # @@ -632,7 +567,7 @@ function InitializeBuildTool() { $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net' } } elseif ($msbuildEngine -eq "vs") { try { - $msbuildPath = InitializeVisualStudioMSBuild -install:$restore + $msbuildPath = InitializeVisualStudioMSBuild } catch { Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ ExitWithExitCode 1 @@ -745,10 +680,20 @@ function InitializeToolset() { ExitWithExitCode 1 } - $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--prerelease", "--output", "$nugetCache") - if ($env:NUGET_CONFIG) { + $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--verbosity", "minimal", "--prerelease", "--output", "$nugetCache") + $nugetConfig = $env:NUGET_CONFIG + if (-not $nugetConfig) { + # Search for any variation of nuget.config in the RepoRoot + $configFile = Get-ChildItem -Path $RepoRoot -File | Where-Object { $_.Name -ieq "nuget.config" } | Select-Object -First 1 + + if ($configFile) { + $nugetConfig = $configFile.FullName + } + } + + if ($nugetConfig) { $downloadArgs += "--configfile" - $downloadArgs += $env:NUGET_CONFIG + $downloadArgs += $nugetConfig } DotNet @downloadArgs diff --git a/eng/common/tools.sh b/eng/common/tools.sh index d2339eb21d5..95c55ce9b4d 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -148,7 +148,11 @@ 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" + if [[ -n "${DOTNET_GLOBAL_INSTALL_DIR:-}" ]]; then + dotnet_root="$DOTNET_GLOBAL_INSTALL_DIR" + else + dotnet_root="${repo_root}.dotnet" + fi export DOTNET_INSTALL_DIR="$dotnet_root" @@ -426,9 +430,20 @@ function InitializeToolset { ExitWithExitCode 2 fi - local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--prerelease" "--output" "$_GetNuGetPackageCachePath") - if [[ -n "${NUGET_CONFIG:-}" ]]; then - download_args+=("--configfile" "$NUGET_CONFIG") + local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--verbosity" "minimal" "--prerelease" "--output" "$_GetNuGetPackageCachePath") + local nuget_config="${NUGET_CONFIG:-}" + if [[ -z "$nuget_config" ]]; then + # Search for any variation of nuget.config in the RepoRoot + local found_config + found_config=$(find "$repo_root" -maxdepth 1 -type f -iname "nuget.config" -print -quit) + + if [[ -n "$found_config" ]]; then + nuget_config="$found_config" + fi + fi + + if [[ -n "$nuget_config" ]]; then + download_args+=("--configfile" "$nuget_config") fi DotNet "${download_args[@]}" diff --git a/global.json b/global.json index 5386ecdac38..b46099f8253 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26211.102", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26211.102" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26222.142", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26222.142" }, "native-tools": { "python3": "3.7.1" From 6604915517e82a9a3e43dadc23cc0ba7d402f58c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 24 Apr 2026 05:25:39 +0000 Subject: [PATCH 09/30] Update dependencies from https://github.com/dotnet/dotnet build 20260423.12 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26223.112 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26223.112 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26223.112 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c8b8f4fe409..b9548daf51c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 - + https://github.com/dotnet/dotnet - aae32bdb43e214583a15e3393e38c889b9447ec4 + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - aae32bdb43e214583a15e3393e38c889b9447ec4 + + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 https://github.com/dotnet/dotnet - - aae32bdb43e214583a15e3393e38c889b9447ec4 + + 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 370d9f63146..7f8e9300d82 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26222.142 - 11.0.0-preview.4.26222.142 - 11.0.0-preview.4.26222.142 - 11.0.0-preview.4.26222.142 + 11.0.0-preview.4.26223.112 + 11.0.0-preview.4.26223.112 + 11.0.0-preview.4.26223.112 + 11.0.0-preview.4.26223.112 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26222.142 + 11.0.0-preview.4.26223.112 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index b46099f8253..2ba61133a9a 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26222.142", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26222.142" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26223.112", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26223.112" }, "native-tools": { "python3": "3.7.1" From 630746957d58dbf6437bbb049f030b96fb8b5a95 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 24 Apr 2026 21:39:41 +0000 Subject: [PATCH 10/30] Update dependencies from https://github.com/dotnet/dotnet build 20260424.4 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26224.104 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.4.26224.104 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.4.26224.104 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b9548daf51c..207b83582a9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 - + https://github.com/dotnet/dotnet - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + c04bdfe301317064b6ebc9738c274e28f98377a6 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + + c04bdfe301317064b6ebc9738c274e28f98377a6 https://github.com/dotnet/dotnet - - 1a76ed96ce79d0aaafccd60f0f0e0d46cd7d7510 + + c04bdfe301317064b6ebc9738c274e28f98377a6 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 7f8e9300d82..bf983274dea 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26223.112 - 11.0.0-preview.4.26223.112 - 11.0.0-preview.4.26223.112 - 11.0.0-preview.4.26223.112 + 11.0.0-preview.4.26224.104 + 11.0.0-preview.4.26224.104 + 11.0.0-preview.4.26224.104 + 11.0.0-preview.4.26224.104 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26223.112 + 11.0.0-preview.4.26224.104 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 2ba61133a9a..10b2ad83d61 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26223.112", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26223.112" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26224.104", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26224.104" }, "native-tools": { "python3": "3.7.1" From e6fcbb9efbffe70608d275d636a1a2446c7eb719 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 25 Apr 2026 06:48:45 +0000 Subject: [PATCH 11/30] Update dependencies from https://github.com/dotnet/dotnet build 20260424.23 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26224.123 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26224.123 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26224.123 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 207b83582a9..802cb18c317 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 - + https://github.com/dotnet/dotnet - c04bdfe301317064b6ebc9738c274e28f98377a6 + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - c04bdfe301317064b6ebc9738c274e28f98377a6 + + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 https://github.com/dotnet/dotnet - - c04bdfe301317064b6ebc9738c274e28f98377a6 + + 472c68a4fb23be92717d1714fb7a38bda7c4aac0 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index bf983274dea..dccdfac8901 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.4.26224.104 - 11.0.0-preview.4.26224.104 - 11.0.0-preview.4.26224.104 - 11.0.0-preview.4.26224.104 + 11.0.0-preview.5.26224.123 + 11.0.0-preview.5.26224.123 + 11.0.0-preview.5.26224.123 + 11.0.0-preview.5.26224.123 0.16.0-nightly.20260320.467 - 11.0.0-preview.4.26224.104 + 11.0.0-preview.5.26224.123 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 10b2ad83d61..58987a8d554 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26224.104", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26224.104" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26224.123", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26224.123" }, "native-tools": { "python3": "3.7.1" From e4267ac8c46a7b010c3e3ab4d3799f991f407d33 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 27 Apr 2026 03:58:31 +0000 Subject: [PATCH 12/30] Update dependencies from https://github.com/dotnet/dotnet build 20260426.11 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26226.111 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26226.111 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26226.111 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 802cb18c317..9efeeb7c5fc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 - + https://github.com/dotnet/dotnet - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 https://github.com/dotnet/dotnet - - 472c68a4fb23be92717d1714fb7a38bda7c4aac0 + + 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index dccdfac8901..7c5934e295b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26224.123 - 11.0.0-preview.5.26224.123 - 11.0.0-preview.5.26224.123 - 11.0.0-preview.5.26224.123 + 11.0.0-preview.5.26226.111 + 11.0.0-preview.5.26226.111 + 11.0.0-preview.5.26226.111 + 11.0.0-preview.5.26226.111 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26224.123 + 11.0.0-preview.5.26226.111 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 58987a8d554..eaa22c8d2f8 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26224.123", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26224.123" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26226.111", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26226.111" }, "native-tools": { "python3": "3.7.1" From 1aefbf36f81703f42a2693ab74542dddbe8b3f24 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 28 Apr 2026 00:30:45 +0000 Subject: [PATCH 13/30] Update dependencies from https://github.com/dotnet/dotnet build 20260427.4 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26227.104 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26227.104 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26227.104 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9efeeb7c5fc..14529a7d572 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 - + https://github.com/dotnet/dotnet - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + bf38c69d5d4087d1098b5f31283ad147feadf787 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + + bf38c69d5d4087d1098b5f31283ad147feadf787 https://github.com/dotnet/dotnet - - 2e6efe3a93c7a685d76951a7bfd91c520dc7b333 + + bf38c69d5d4087d1098b5f31283ad147feadf787 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 7c5934e295b..f3fa948e1c5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26226.111 - 11.0.0-preview.5.26226.111 - 11.0.0-preview.5.26226.111 - 11.0.0-preview.5.26226.111 + 11.0.0-preview.5.26227.104 + 11.0.0-preview.5.26227.104 + 11.0.0-preview.5.26227.104 + 11.0.0-preview.5.26227.104 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26226.111 + 11.0.0-preview.5.26227.104 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index eaa22c8d2f8..e9c98c9093c 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26226.111", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26226.111" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26227.104", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26227.104" }, "native-tools": { "python3": "3.7.1" From 74ec1337334a1bff646ec87d828b03769a522c53 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 28 Apr 2026 06:50:12 +0000 Subject: [PATCH 14/30] Update dependencies from https://github.com/dotnet/dotnet build 20260427.24 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26227.124 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26227.124 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26227.124 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 14529a7d572..455d428cc18 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 - + https://github.com/dotnet/dotnet - bf38c69d5d4087d1098b5f31283ad147feadf787 + 0188adf7c695ee112445a74c0f2b0f23c517c750 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - bf38c69d5d4087d1098b5f31283ad147feadf787 + + 0188adf7c695ee112445a74c0f2b0f23c517c750 https://github.com/dotnet/dotnet - - bf38c69d5d4087d1098b5f31283ad147feadf787 + + 0188adf7c695ee112445a74c0f2b0f23c517c750 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index f3fa948e1c5..983f51e1e4f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26227.104 - 11.0.0-preview.5.26227.104 - 11.0.0-preview.5.26227.104 - 11.0.0-preview.5.26227.104 + 11.0.0-preview.5.26227.124 + 11.0.0-preview.5.26227.124 + 11.0.0-preview.5.26227.124 + 11.0.0-preview.5.26227.124 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26227.104 + 11.0.0-preview.5.26227.124 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index e9c98c9093c..ac825b7255f 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26227.104", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26227.104" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26227.124", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26227.124" }, "native-tools": { "python3": "3.7.1" From 2cd28dad3ce0f2a3d7b1e0d366a9b6e9909065a3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 28 Apr 2026 12:17:09 +0000 Subject: [PATCH 15/30] Update dependencies from https://github.com/dotnet/dotnet build 20260427.31 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26227.131 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26227.131 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26227.131 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 455d428cc18..344cf867166 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet - 0188adf7c695ee112445a74c0f2b0f23c517c750 + d3d9bbbf2028bc388d245a60a03d216c3582f605 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 0188adf7c695ee112445a74c0f2b0f23c517c750 + + d3d9bbbf2028bc388d245a60a03d216c3582f605 https://github.com/dotnet/dotnet - - 0188adf7c695ee112445a74c0f2b0f23c517c750 + + d3d9bbbf2028bc388d245a60a03d216c3582f605 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 983f51e1e4f..6743af59f27 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26227.124 - 11.0.0-preview.5.26227.124 - 11.0.0-preview.5.26227.124 - 11.0.0-preview.5.26227.124 + 11.0.0-preview.5.26227.131 + 11.0.0-preview.5.26227.131 + 11.0.0-preview.5.26227.131 + 11.0.0-preview.5.26227.131 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26227.124 + 11.0.0-preview.5.26227.131 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index ac825b7255f..c2f2126319e 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26227.124", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26227.124" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26227.131", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26227.131" }, "native-tools": { "python3": "3.7.1" From f4b00d32971869b8732aaf3e78d53ed4d4d9f3ee Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 28 Apr 2026 13:54:46 +0000 Subject: [PATCH 16/30] Update dependencies from https://github.com/dotnet/dotnet build 20260428.2 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26228.102 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26228.102 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26228.102 --- eng/Version.Details.xml | 20 ++++++++++---------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 344cf867166..2f8e25b1c01 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,37 +1,37 @@ - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 - + https://github.com/dotnet/dotnet d3d9bbbf2028bc388d245a60a03d216c3582f605 @@ -55,11 +55,11 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - + d3d9bbbf2028bc388d245a60a03d216c3582f605 https://github.com/dotnet/dotnet - + d3d9bbbf2028bc388d245a60a03d216c3582f605 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 6743af59f27..f2bdf6078f0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26227.131 - 11.0.0-preview.5.26227.131 - 11.0.0-preview.5.26227.131 - 11.0.0-preview.5.26227.131 + 11.0.0-preview.5.26228.102 + 11.0.0-preview.5.26228.102 + 11.0.0-preview.5.26228.102 + 11.0.0-preview.5.26228.102 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26227.131 + 11.0.0-preview.5.26228.102 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index c2f2126319e..4174fdf0c7d 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26227.131", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26227.131" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26228.102", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26228.102" }, "native-tools": { "python3": "3.7.1" From fe3e569651f4b0af0b0ceafe20ad878687990c31 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 29 Apr 2026 05:19:51 +0000 Subject: [PATCH 17/30] Update dependencies from https://github.com/dotnet/dotnet build 20260428.23 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26228.123 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26228.123 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26228.123 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2f8e25b1c01..d5a096322a1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 - + https://github.com/dotnet/dotnet - d3d9bbbf2028bc388d245a60a03d216c3582f605 + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - d3d9bbbf2028bc388d245a60a03d216c3582f605 + + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 https://github.com/dotnet/dotnet - - d3d9bbbf2028bc388d245a60a03d216c3582f605 + + c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index f2bdf6078f0..56eec3934e4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26228.102 - 11.0.0-preview.5.26228.102 - 11.0.0-preview.5.26228.102 - 11.0.0-preview.5.26228.102 + 11.0.0-preview.5.26228.123 + 11.0.0-preview.5.26228.123 + 11.0.0-preview.5.26228.123 + 11.0.0-preview.5.26228.123 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26228.102 + 11.0.0-preview.5.26228.123 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 4174fdf0c7d..1ad00fd5fae 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26228.102", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26228.102" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26228.123", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26228.123" }, "native-tools": { "python3": "3.7.1" From 4276f3141c5ce35afebba4c5045670deef161e36 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 29 Apr 2026 21:24:25 +0000 Subject: [PATCH 18/30] Update dependencies from https://github.com/dotnet/dotnet build 20260429.13 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26229.113 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26229.113 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26229.113 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d5a096322a1..509f8bf908c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 - + https://github.com/dotnet/dotnet - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 https://github.com/dotnet/dotnet - - c59aad41c35dd3c0c50da3bbb04c540ad59eb0e6 + + 4c4e7f410fc876590f219fc6022b6c18d6f6a475 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 56eec3934e4..e72ac635a51 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26228.123 - 11.0.0-preview.5.26228.123 - 11.0.0-preview.5.26228.123 - 11.0.0-preview.5.26228.123 + 11.0.0-preview.5.26229.113 + 11.0.0-preview.5.26229.113 + 11.0.0-preview.5.26229.113 + 11.0.0-preview.5.26229.113 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26228.123 + 11.0.0-preview.5.26229.113 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 1ad00fd5fae..5a94b2fd589 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26228.123", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26228.123" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26229.113", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26229.113" }, "native-tools": { "python3": "3.7.1" From 8bd5d7c14358b5ad5689e49f3c99a493c1ead3cd Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 30 Apr 2026 12:09:16 +0000 Subject: [PATCH 19/30] Update dependencies from https://github.com/dotnet/dotnet build 20260430.1 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26230.101 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26230.101 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26230.101 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 509f8bf908c..8a6fd78227b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e - + https://github.com/dotnet/dotnet - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e https://github.com/dotnet/dotnet - - 4c4e7f410fc876590f219fc6022b6c18d6f6a475 + + 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index e72ac635a51..13dd1de0605 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26229.113 - 11.0.0-preview.5.26229.113 - 11.0.0-preview.5.26229.113 - 11.0.0-preview.5.26229.113 + 11.0.0-preview.5.26230.101 + 11.0.0-preview.5.26230.101 + 11.0.0-preview.5.26230.101 + 11.0.0-preview.5.26230.101 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26229.113 + 11.0.0-preview.5.26230.101 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 5a94b2fd589..503fe0c32df 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26229.113", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26229.113" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26230.101", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26230.101" }, "native-tools": { "python3": "3.7.1" From 1b62a584810b23744ce529fd65cf382bfd061223 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 2 May 2026 05:34:37 +0000 Subject: [PATCH 20/30] Update dependencies from https://github.com/dotnet/dotnet build 20260501.10 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26251.110 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26251.110 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26251.110 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8a6fd78227b..0aceeb88d02 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 - + https://github.com/dotnet/dotnet - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + 613deef68ee29a6fbe891984df0e2a0b27945bc6 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + + 613deef68ee29a6fbe891984df0e2a0b27945bc6 https://github.com/dotnet/dotnet - - 5d0de746ed8accbd81c2a5c3c7bfa4e70b2df80e + + 613deef68ee29a6fbe891984df0e2a0b27945bc6 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 13dd1de0605..c93827952c3 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26230.101 - 11.0.0-preview.5.26230.101 - 11.0.0-preview.5.26230.101 - 11.0.0-preview.5.26230.101 + 11.0.0-preview.5.26251.110 + 11.0.0-preview.5.26251.110 + 11.0.0-preview.5.26251.110 + 11.0.0-preview.5.26251.110 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26230.101 + 11.0.0-preview.5.26251.110 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 503fe0c32df..3d9d643a5a5 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26230.101", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26230.101" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26251.110", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26251.110" }, "native-tools": { "python3": "3.7.1" From ede83c2c4e0c9580ecd36d175b2feacc8f10e251 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 2 May 2026 10:51:19 +0000 Subject: [PATCH 21/30] Update dependencies from https://github.com/dotnet/dotnet build 20260501.12 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26251.112 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26251.112 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26251.112 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0aceeb88d02..780c0fc4c73 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 - + https://github.com/dotnet/dotnet - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 https://github.com/dotnet/dotnet - - 613deef68ee29a6fbe891984df0e2a0b27945bc6 + + 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index c93827952c3..07d7e808283 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26251.110 - 11.0.0-preview.5.26251.110 - 11.0.0-preview.5.26251.110 - 11.0.0-preview.5.26251.110 + 11.0.0-preview.5.26251.112 + 11.0.0-preview.5.26251.112 + 11.0.0-preview.5.26251.112 + 11.0.0-preview.5.26251.112 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26251.110 + 11.0.0-preview.5.26251.112 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 3d9d643a5a5..dc5fde9a69d 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26251.110", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26251.110" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26251.112", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26251.112" }, "native-tools": { "python3": "3.7.1" From e616cd389736c19b0f5e609b3b5fbd9d36870ee4 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Mon, 4 May 2026 19:59:54 +0000 Subject: [PATCH 22/30] Update dependencies from https://github.com/dotnet/dotnet build 20260504.3 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26254.103 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26254.103 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26254.103 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 780c0fc4c73..5859bb28c2e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 - + https://github.com/dotnet/dotnet - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 https://github.com/dotnet/dotnet - - 3c45e4f3e8b0e9069e8b740c7cfa610075c8ca34 + + 423ddd1cabeff54b53750de2d429e6ea121c7fd1 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 07d7e808283..b4a8c07817a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26251.112 - 11.0.0-preview.5.26251.112 - 11.0.0-preview.5.26251.112 - 11.0.0-preview.5.26251.112 + 11.0.0-preview.5.26254.103 + 11.0.0-preview.5.26254.103 + 11.0.0-preview.5.26254.103 + 11.0.0-preview.5.26254.103 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26251.112 + 11.0.0-preview.5.26254.103 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index dc5fde9a69d..2561d025e44 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26251.112", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26251.112" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26254.103", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26254.103" }, "native-tools": { "python3": "3.7.1" From 7c648897fdc93b726955849e9ba455285906299e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 5 May 2026 03:57:37 +0000 Subject: [PATCH 23/30] Update dependencies from https://github.com/dotnet/dotnet build 20260504.12 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26254.112 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26254.112 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26254.112 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5859bb28c2e..9f7ba4659de 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 - + https://github.com/dotnet/dotnet - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + b37e00fee8d2a9755ef4403a13f43f27ba52e601 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + + b37e00fee8d2a9755ef4403a13f43f27ba52e601 https://github.com/dotnet/dotnet - - 423ddd1cabeff54b53750de2d429e6ea121c7fd1 + + b37e00fee8d2a9755ef4403a13f43f27ba52e601 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index b4a8c07817a..e026d9907e5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26254.103 - 11.0.0-preview.5.26254.103 - 11.0.0-preview.5.26254.103 - 11.0.0-preview.5.26254.103 + 11.0.0-preview.5.26254.112 + 11.0.0-preview.5.26254.112 + 11.0.0-preview.5.26254.112 + 11.0.0-preview.5.26254.112 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26254.103 + 11.0.0-preview.5.26254.112 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 2561d025e44..8ae2cf442df 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26254.103", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26254.103" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26254.112", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26254.112" }, "native-tools": { "python3": "3.7.1" From bfa45a1d6e71e5c77eb5666e7133ef5c26283d1d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 5 May 2026 13:27:15 +0000 Subject: [PATCH 24/30] Update dependencies from https://github.com/dotnet/dotnet build 20260505.1 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26255.101 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26255.101 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26255.101 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9f7ba4659de..597dbc64b79 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 - + https://github.com/dotnet/dotnet - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + a9f67ca52554b81412da8bef1ba45e6e26561052 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + + a9f67ca52554b81412da8bef1ba45e6e26561052 https://github.com/dotnet/dotnet - - b37e00fee8d2a9755ef4403a13f43f27ba52e601 + + a9f67ca52554b81412da8bef1ba45e6e26561052 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index e026d9907e5..b3fd06b0659 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26254.112 - 11.0.0-preview.5.26254.112 - 11.0.0-preview.5.26254.112 - 11.0.0-preview.5.26254.112 + 11.0.0-preview.5.26255.101 + 11.0.0-preview.5.26255.101 + 11.0.0-preview.5.26255.101 + 11.0.0-preview.5.26255.101 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26254.112 + 11.0.0-preview.5.26255.101 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 8ae2cf442df..2141717f814 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26254.112", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26254.112" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26255.101", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26255.101" }, "native-tools": { "python3": "3.7.1" From 63dc086ef07fb7f0812495b0a843d3c6a21823da Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Tue, 5 May 2026 18:12:42 +0000 Subject: [PATCH 25/30] Update dependencies from https://github.com/dotnet/dotnet build 20260505.6 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26255.106 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26255.106 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26255.106 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 597dbc64b79..d8aeea8a38e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 - + https://github.com/dotnet/dotnet - a9f67ca52554b81412da8bef1ba45e6e26561052 + c802bb0f0b272d8547b12719c604c65f6beb1912 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - a9f67ca52554b81412da8bef1ba45e6e26561052 + + c802bb0f0b272d8547b12719c604c65f6beb1912 https://github.com/dotnet/dotnet - - a9f67ca52554b81412da8bef1ba45e6e26561052 + + c802bb0f0b272d8547b12719c604c65f6beb1912 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index b3fd06b0659..004cd739f7e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26255.101 - 11.0.0-preview.5.26255.101 - 11.0.0-preview.5.26255.101 - 11.0.0-preview.5.26255.101 + 11.0.0-preview.5.26255.106 + 11.0.0-preview.5.26255.106 + 11.0.0-preview.5.26255.106 + 11.0.0-preview.5.26255.106 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26255.101 + 11.0.0-preview.5.26255.106 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 2141717f814..d8270353b01 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26255.101", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26255.101" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26255.106", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26255.106" }, "native-tools": { "python3": "3.7.1" From c5290114a0eaa9be13ed329e5acccad17895af3a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Wed, 6 May 2026 12:47:48 +0000 Subject: [PATCH 26/30] Update dependencies from https://github.com/dotnet/dotnet build 20260506.1 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26256.101 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26256.101 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26256.101 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d8aeea8a38e..102a0275330 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 - + https://github.com/dotnet/dotnet - c802bb0f0b272d8547b12719c604c65f6beb1912 + f4510188f38a030eebc4d4639baacff1c266e602 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - c802bb0f0b272d8547b12719c604c65f6beb1912 + + f4510188f38a030eebc4d4639baacff1c266e602 https://github.com/dotnet/dotnet - - c802bb0f0b272d8547b12719c604c65f6beb1912 + + f4510188f38a030eebc4d4639baacff1c266e602 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 004cd739f7e..0635f67745f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26255.106 - 11.0.0-preview.5.26255.106 - 11.0.0-preview.5.26255.106 - 11.0.0-preview.5.26255.106 + 11.0.0-preview.5.26256.101 + 11.0.0-preview.5.26256.101 + 11.0.0-preview.5.26256.101 + 11.0.0-preview.5.26256.101 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26255.106 + 11.0.0-preview.5.26256.101 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index d8270353b01..2cff7b4692b 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26255.106", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26255.106" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26256.101", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26256.101" }, "native-tools": { "python3": "3.7.1" From 9bfba49348b8cde086c012531da9ec746c3dfb7c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Thu, 7 May 2026 00:13:15 +0000 Subject: [PATCH 27/30] Update dependencies from https://github.com/dotnet/dotnet build 20260506.5 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26256.105 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26256.105 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26256.105 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 102a0275330..0cfc9dc53d6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 - + https://github.com/dotnet/dotnet - f4510188f38a030eebc4d4639baacff1c266e602 + d64191f29ec9042e2696d8b7d8326c4bd10ba268 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - f4510188f38a030eebc4d4639baacff1c266e602 + + d64191f29ec9042e2696d8b7d8326c4bd10ba268 https://github.com/dotnet/dotnet - - f4510188f38a030eebc4d4639baacff1c266e602 + + d64191f29ec9042e2696d8b7d8326c4bd10ba268 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 0635f67745f..81c9d964e91 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26256.101 - 11.0.0-preview.5.26256.101 - 11.0.0-preview.5.26256.101 - 11.0.0-preview.5.26256.101 + 11.0.0-preview.5.26256.105 + 11.0.0-preview.5.26256.105 + 11.0.0-preview.5.26256.105 + 11.0.0-preview.5.26256.105 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26256.101 + 11.0.0-preview.5.26256.105 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 2cff7b4692b..b56289a26c4 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26256.101", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26256.101" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26256.105", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26256.105" }, "native-tools": { "python3": "3.7.1" From 9bbc81aeeeb1e6300e6ccec86934e475186a7b58 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Fri, 8 May 2026 03:06:35 +0000 Subject: [PATCH 28/30] Update dependencies from https://github.com/dotnet/dotnet build 20260507.13 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26257.113 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26257.113 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26257.113 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0cfc9dc53d6..07923d4caa6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf - + https://github.com/dotnet/dotnet - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf https://github.com/dotnet/dotnet - - d64191f29ec9042e2696d8b7d8326c4bd10ba268 + + 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 81c9d964e91..8992ab03dcf 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26256.105 - 11.0.0-preview.5.26256.105 - 11.0.0-preview.5.26256.105 - 11.0.0-preview.5.26256.105 + 11.0.0-preview.5.26257.113 + 11.0.0-preview.5.26257.113 + 11.0.0-preview.5.26257.113 + 11.0.0-preview.5.26257.113 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26256.105 + 11.0.0-preview.5.26257.113 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index b56289a26c4..6b80b1dc2a8 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26256.105", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26256.105" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26257.113", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26257.113" }, "native-tools": { "python3": "3.7.1" From ab99c0625044dbbe6f0eb48fa7df49e0d6900dd3 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 9 May 2026 01:23:47 +0000 Subject: [PATCH 29/30] Update dependencies from https://github.com/dotnet/dotnet build 20260508.7 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26258.107 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26258.107 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26258.107 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 07923d4caa6..1cdd3b406db 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 - + https://github.com/dotnet/dotnet - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 https://github.com/dotnet/dotnet - - 0eae08ed2f094f44e0151e4815e7cdd1a334fcdf + + 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index 8992ab03dcf..a620eb9489f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26257.113 - 11.0.0-preview.5.26257.113 - 11.0.0-preview.5.26257.113 - 11.0.0-preview.5.26257.113 + 11.0.0-preview.5.26258.107 + 11.0.0-preview.5.26258.107 + 11.0.0-preview.5.26258.107 + 11.0.0-preview.5.26258.107 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26257.113 + 11.0.0-preview.5.26258.107 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 6b80b1dc2a8..0d16af8d17b 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26257.113", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26257.113" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26258.107", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26258.107" }, "native-tools": { "python3": "3.7.1" From 958cc19d65ade6330c38b69f969e18697246ec36 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" Date: Sat, 9 May 2026 02:52:31 +0000 Subject: [PATCH 30/30] Update dependencies from https://github.com/dotnet/dotnet build 20260508.10 On relative base path root Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk From Version 11.0.0-beta.26210.111 -> To Version 11.0.0-beta.26258.110 Microsoft.Extensions.Logging , Microsoft.NET.ILLink , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64 , Microsoft.NETCore.App.Ref , Microsoft.WindowsDesktop.App.Ref , System.Threading.Channels From Version 11.0.0-preview.4.26210.111 -> To Version 11.0.0-preview.5.26258.110 Microsoft.NET.Sdk From Version 11.0.100-preview.4.26210.111 -> To Version 11.0.100-preview.5.26258.110 --- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- global.json | 4 ++-- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1cdd3b406db..66eb11fdb92 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,39 +1,39 @@ - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 - + https://github.com/dotnet/dotnet - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 https://github.com/dotnet/xharness @@ -55,12 +55,12 @@ 6e563dcf3cbf4853316eb4724e49ec92caeabb07 https://github.com/dotnet/maui - - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 https://github.com/dotnet/dotnet - - 6a78ff2ff4f82b8929d58d6af5d97b16737ca756 + + 2c9bec4ec0be4c22ce27ece0c2ca0a8a4d481168 https://github.com/dotnet/dotnet diff --git a/eng/Versions.props b/eng/Versions.props index a620eb9489f..0206c0c1fb7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -7,12 +7,12 @@ - 11.0.0-preview.5.26258.107 - 11.0.0-preview.5.26258.107 - 11.0.0-preview.5.26258.107 - 11.0.0-preview.5.26258.107 + 11.0.0-preview.5.26258.110 + 11.0.0-preview.5.26258.110 + 11.0.0-preview.5.26258.110 + 11.0.0-preview.5.26258.110 0.16.0-nightly.20260320.467 - 11.0.0-preview.5.26258.107 + 11.0.0-preview.5.26258.110 11.0.0-prerelease.26204.1 diff --git a/global.json b/global.json index 0d16af8d17b..c79e11b9654 100644 --- a/global.json +++ b/global.json @@ -8,8 +8,8 @@ "dotnet": "11.0.100-preview.3.26170.106" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26258.107", - "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26258.107" + "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26258.110", + "Microsoft.DotNet.Helix.Sdk": "11.0.0-beta.26258.110" }, "native-tools": { "python3": "3.7.1"