From b4e2e8cd56895611231e955efefecc672e538b33 Mon Sep 17 00:00:00 2001
From: Bruno Oliveira <brolivei@microsoft.com>
Date: Tue, 25 Oct 2022 14:45:25 -0700
Subject: [PATCH] Adding nuget --version workaround

---
 .azure/pipelines/ci.yml |  4 ++--
 eng/build.sh            | 30 ++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml
index bc52c55d613..4a18bc21bfa 100644
--- a/.azure/pipelines/ci.yml
+++ b/.azure/pipelines/ci.yml
@@ -489,13 +489,13 @@ stages:
               $(_InternalRuntimeDownloadArgs)
           displayName: Run build.sh
         - script: git clean -xfd src/**/obj/;
-            ./dockerbuild.sh bionic --ci --nobl --arch x64 --build-installers --no-build-deps --no-build-nodejs
+            ./dockerbuild.sh bionic --ci --nobl --arch x64 --build-installers --no-build-deps --no-build-nodejs --init-nuget
             -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=deb
             $(_BuildArgs)
             $(_InternalRuntimeDownloadArgs)
           displayName: Build Debian installers
         - script: git clean -xfd src/**/obj/;
-            ./dockerbuild.sh rhel --ci --nobl --arch x64 --build-installers --no-build-deps --no-build-nodejs
+            ./dockerbuild.sh rhel --ci --nobl --arch x64 --build-installers --no-build-deps --no-build-nodejs --init-nuget
             -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=rpm
             -p:AssetManifestFileName=aspnetcore-Linux_x64.xml
             $(_BuildArgs)
diff --git a/eng/build.sh b/eng/build.sh
index a6b6ba99be4..093b04affdd 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -33,6 +33,7 @@ target_arch='x64'
 configuration=''
 runtime_source_feed=''
 runtime_source_feed_key=''
+init_nuget=false
 
 if [ "$(uname)" = "Darwin" ]; then
     target_os_name='osx'
@@ -82,6 +83,8 @@ Options:
     --runtime-source-feed             Additional feed that can be used when downloading .NET runtimes and SDKs
     --runtime-source-feed-key         Key for feed that can be used when downloading .NET runtimes and SDKs
 
+    --init-nuget                      Run nuget --version.
+
 Description:
     This build script installs required tools and runs an MSBuild command on this repository
     This script can be used to invoke various targets, such as targets to produce packages
@@ -208,6 +211,9 @@ while [[ $# -gt 0 ]]; do
         -ci)
             ci=true
             ;;
+        -init-nuget)
+            init_nuget=true
+            ;;
         -binarylog|-bl)
             binary_log=true
             ;;
@@ -359,6 +365,30 @@ export MSBUILDDEBUGPATH="$log_dir"
 _tmp_restore=$restore
 restore=true
 
+if [[ "$init_nuget" == true ]]; then
+    InitializeBuildTool
+
+    function RunBuildTool {
+        "$_InitializeBuildTool" "$@" || {
+        local exit_code=$?
+        # We should not Write-PipelineTaskError here because that message shows up in the build summary
+        # The build already logged an error, that's the reason it failed. Producing an error here only adds noise.
+        echo "Build failed with exit code $exit_code. Check errors above."
+        if [[ "$ci" == "true" ]]; then
+            Write-PipelineSetResult -result "Failed" -message "nuget execution failed."
+            # Exiting with an exit code causes the azure pipelines task to log yet another "noise" error
+            # The above Write-PipelineSetResult will cause the task to be marked as failure without adding yet another error
+            ExitWithExitCode 0
+        else
+            ExitWithExitCode $exit_code
+        fi
+        }
+    }
+
+    echo 'Running dotnet nuget --version (issue: https://github.com/NuGet/Home/issues/12159#issuecomment-1278360511)'
+    RunBuildTool "nuget" "--version"
+fi
+
 InitializeToolset
 
 restore=$_tmp_restore=
-- 
GitLab