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"
}
}