diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2efcc7ae278e7..148bd1902c0ed 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,17 +3,17 @@ - + https://github.com/dotnet/arcade - 1c06c541c2dc6edb3d652cb092785eb341ef8331 + 4957a6f3dd5f6fd1ca9ff06f9c50402f2e3b17e8 https://github.com/dotnet/roslyn 69f354dd21df8dac374c35169bdabb9000cfdea3 - + https://github.com/dotnet/arcade - 1c06c541c2dc6edb3d652cb092785eb341ef8331 + 4957a6f3dd5f6fd1ca9ff06f9c50402f2e3b17e8 diff --git a/eng/common/tools.sh b/eng/common/tools.sh index acbb0c5b3ffd7..4df7e60e884e9 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -234,6 +234,28 @@ function InstallDotNet { } } +function with_retries { + local maxRetries=5 + local retries=1 + echo "Trying to run '$@' for maximum of $maxRetries attempts." + while [[ $((retries++)) -le $maxRetries ]]; do + "$@" + + if [[ $? == 0 ]]; then + echo "Ran '$@' successfully." + return 0 + fi + + timeout=$((3**$retries-1)) + echo "Failed to execute '$@'. Waiting $timeout seconds before next attempt ($retries out of $maxRetries)." 1>&2 + sleep $timeout + done + + echo "Failed to execute '$@' for $maxRetries times." 1>&2 + + return 1 +} + function GetDotNetInstallScript { local root=$1 local install_script="$root/dotnet-install.sh" @@ -246,13 +268,22 @@ function GetDotNetInstallScript { # Use curl if available, otherwise use wget if command -v curl > /dev/null; then + # first, try directly, if this fails we will retry with verbose logging curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script" || { - local exit_code=$? - Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')." - ExitWithExitCode $exit_code + if command -v openssl &> /dev/null + then + echo "Curl failed; dumping some information about dotnet.microsoft.com for later investigation" + echo | openssl s_client -showcerts -servername dotnet.microsoft.com -connect dotnet.microsoft.com:443 + fi + echo "Will now retry the same URL with verbose logging." + with_retries curl "$install_script_url" -sSL --verbose --retry 10 --create-dirs -o "$install_script" || { + local exit_code=$? + Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')." + ExitWithExitCode $exit_code + } } - else - wget -q -O "$install_script" "$install_script_url" || { + else + with_retries wget -v -O "$install_script" "$install_script_url" || { local exit_code=$? Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')." ExitWithExitCode $exit_code @@ -267,7 +298,7 @@ function InitializeBuildTool { if [[ -n "${_InitializeBuildTool:-}" ]]; then return fi - + InitializeDotNetCli $restore # return values diff --git a/global.json b/global.json index 810dceca21e9f..b506768176d21 100644 --- a/global.json +++ b/global.json @@ -12,7 +12,7 @@ "xcopy-msbuild": "16.8.0-preview2.1" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.21116.3", - "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.21116.3" + "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.21118.7", + "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.21118.7" } }