[macOS] Add retry for toolcache assets (#1798)

* Add retry for toolset manifest downloading

* Add common helper

* Minor fix

* Fix helper module path

* Fix helper module path
This commit is contained in:
Vladimir Safonkin
2020-10-19 13:28:53 +03:00
committed by GitHub
parent eb478e9f2b
commit c5e468893d
2 changed files with 16 additions and 5 deletions

View File

@@ -24,7 +24,7 @@ function Get-EnvironmentVariable($variable) {
} }
# Returns the object with information about current OS # Returns the object with information about current OS
# It can be used for OS-specific tests # It can be used for OS-specific tests
function Get-OSVersion { function Get-OSVersion {
$osVersion = [Environment]::OSVersion $osVersion = [Environment]::OSVersion
return [PSCustomObject]@{ return [PSCustomObject]@{
@@ -36,7 +36,7 @@ function Get-OSVersion {
IsBigSur = $osVersion.Version.Major -eq 20 IsBigSur = $osVersion.Version.Major -eq 20
IsLessThanCatalina = $osVersion.Version.Major -lt 19 IsLessThanCatalina = $osVersion.Version.Major -lt 19
IsLessThanBigSur = $osVersion.Version.Major -lt 20 IsLessThanBigSur = $osVersion.Version.Major -lt 20
IsHigherThanMojave = $osVersion.Version.Major -gt 18 IsHigherThanMojave = $osVersion.Version.Major -gt 18
} }
} }
@@ -63,7 +63,7 @@ function Get-ToolsetValue {
$jsonNode = Get-Content -Raw $toolsetPath | ConvertFrom-Json $jsonNode = Get-Content -Raw $toolsetPath | ConvertFrom-Json
$pathParts = $KeyPath.Split(".") $pathParts = $KeyPath.Split(".")
# try to walk through all arguments consequentially to resolve specific json node # try to walk through all arguments consequentially to resolve specific json node
$pathParts | ForEach-Object { $pathParts | ForEach-Object {
$jsonNode = $jsonNode.$_ $jsonNode = $jsonNode.$_
} }
@@ -73,4 +73,13 @@ function Get-ToolsetValue {
function Get-ToolcachePackages { function Get-ToolcachePackages {
$toolcachePath = Join-Path $env:HOME "image-generation" "toolcache.json" $toolcachePath = Join-Path $env:HOME "image-generation" "toolcache.json"
return Get-Content -Raw $toolcachePath | ConvertFrom-Json return Get-Content -Raw $toolcachePath | ConvertFrom-Json
} }
function Invoke-RestMethodWithRetry {
param (
[Parameter()]
[string]
$Url
)
Invoke-RestMethod $Url -MaximumRetryCount 10 -RetryIntervalSec 30
}

View File

@@ -4,6 +4,8 @@
## Desc: Install toolset ## Desc: Install toolset
################################################################################ ################################################################################
Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
Function Get-ToolcacheFromToolset { Function Get-ToolcacheFromToolset {
$toolsetPath = Join-Path $env:HOME "image-generation" "toolset.json" $toolsetPath = Join-Path $env:HOME "image-generation" "toolset.json"
$toolsetJson = Get-Content -Raw $toolsetPath | ConvertFrom-Json $toolsetJson = Get-Content -Raw $toolsetPath | ConvertFrom-Json
@@ -38,7 +40,7 @@ $tools = Get-ToolcacheFromToolset | Where-Object {$ToolsToInstall -contains $_.
foreach ($tool in $tools) { foreach ($tool in $tools) {
# Get versions manifest for current tool # Get versions manifest for current tool
$assets = Invoke-RestMethod $tool.url $assets = Invoke-RestMethodWithRetry -Url $tool.url
# Get github release asset for each version # Get github release asset for each version
foreach ($version in $tool.versions) { foreach ($version in $tool.versions) {