From 2576c695ad92ac1a1d3ec335c65f3c95a0dd6fd9 Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Thu, 16 Feb 2017 11:16:47 -0800 Subject: [PATCH] Raising number of Retries With Exponential Backoff so slower machines don't get a "maxNumber of retries reached" exception.. --- build-bits.ps1 | 101 ++++++++++++++++++ .../Utilities/RetryWithExponentialBackoff.cs | 2 +- 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 build-bits.ps1 diff --git a/build-bits.ps1 b/build-bits.ps1 new file mode 100644 index 000000000..3a33a6ee7 --- /dev/null +++ b/build-bits.ps1 @@ -0,0 +1,101 @@ +$scriptPath = Split-Path $script:MyInvocation.MyCommand.Path + +Write-Host "Current script directory is $scriptPath" -ForegroundColor Yellow + +$pubFolderToDelete = $scriptPath + "\pub" +remove-item -path $pubFolderToDelete -Force -Recurse -ErrorAction SilentlyContinue + +# *** WebMVC image *** +$webPathToJson = $scriptPath + "\src\Web\WebMVC\project.json" +Write-Host "webPathToJson is $webPathToJson" -ForegroundColor Yellow +$webPathToPub = $scriptPath + "\pub\webMVC" +Write-Host "webPathToPub is $webPathToPub" -ForegroundColor Yellow + +Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +dotnet restore $webPathToJson +dotnet build $webPathToJson +dotnet publish $webPathToJson -o $webPathToPub + +# *** WebSPA image *** +$webSPAPath = $scriptPath + "\src\Web\WebSPA\eShopOnContainers.WebSPA" +$webSPAPathToJson = $webSPAPath + "\project.json" +Write-Host "webSPAPathToJson is $webSPAPathToJson" -ForegroundColor Yellow +$webSPAPathToPub = $scriptPath + "\pub\webSPA" +Write-Host "webSPAPathToPub is $webSPAPathToPub" -ForegroundColor Yellow + +Write-Host "Installing npm dependencies" +Start-Process -WorkingDirectory $webSPAPath -NoNewWindow -Wait npm i + +Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +dotnet restore $webSPAPathToJson +dotnet build $webSPAPathToJson +dotnet publish $webSPAPathToJson -o $webSPAPathToPub + +# *** identitySvc image *** +$identitySvcPathToJson = $scriptPath + "\src\Services\Identity\Identity.API\project.json" +Write-Host "identitySvcPathToJson is $identitySvcPathToJson" -ForegroundColor Yellow +$identitySvcPathToPub = $scriptPath + "\pub\identity" +Write-Host "identitySvcPathToPub is $identitySvcPathToPub" -ForegroundColor Yellow + +Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +dotnet restore $identitySvcPathToJson +dotnet build $identitySvcPathToJson +dotnet publish $identitySvcPathToJson -o $identitySvcPathToPub + +#*** Catalog service image *** +$catalogPathToJson = $scriptPath + "\src\Services\Catalog\Catalog.API\project.json" +Write-Host "catalogPathToJson is $catalogPathToJson" -ForegroundColor Yellow +$catalogPathToPub = $scriptPath + "\pub\catalog" +Write-Host "catalogPathToPub is $catalogPathToPub" -ForegroundColor Yellow + +Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +dotnet restore $catalogPathToJson +dotnet build $catalogPathToJson +dotnet publish $catalogPathToJson -o $catalogPathToPub + +#*** Ordering service image *** +$orderingPath = $scriptPath + "\src\Services\Ordering" +Write-Host "orderingPath is $orderingPath" -ForegroundColor Yellow +$orderingApiPathToJson = $orderingPath + "\Ordering.API\project.json" +Write-Host "orderingApiPathToJson is $orderingApiPathToJson" -ForegroundColor Yellow +$orderingApiPathToPub = $scriptPath + "\pub\ordering" +Write-Host "orderingApiPathToPub is $orderingApiPathToPub" -ForegroundColor Yellow + +Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +dotnet restore $orderingPath +dotnet build $orderingApiPathToJson +dotnet publish $orderingApiPathToJson -o $orderingApiPathToPub + +#*** Basket service image *** +$basketPathToJson = $scriptPath + "\src\Services\Basket\Basket.API\project.json" +Write-Host "basketPathToJson is $basketPathToJson" -ForegroundColor Yellow +$basketPathToPub = $scriptPath + "\pub\basket" +Write-Host "basketPathToPub is $basketPathToPub" -ForegroundColor Yellow + +Write-Host "Restore Dependencies just in case as it is needed to run dotnet publish" -ForegroundColor Blue +dotnet restore $basketPathToJson +dotnet build $basketPathToJson +dotnet publish $basketPathToJson -o $basketPathToPub + +$imagesToDelete = docker images --filter=reference="eshop/*" -q + +If (-Not $imagesToDelete) {Write-Host "Not deleting eShop images as there are no eShop images in the current local Docker repo."} +Else +{ + # Delete all containers + Write-Host "Deleting all containers in local Docker Host" + docker rm $(docker ps -a -q) -f + + # Delete all eshop images + Write-Host "Deleting eShop images in local Docker repo" + Write-Host $imagesToDelete + docker rmi $(docker images --filter=reference="eshop/*" -q) -f +} + +#*** build docker images *** +docker build -t eshop/web $webPathToPub +docker build -t eshop/catalog.api $catalogPathToPub +docker build -t eshop/ordering.api $orderingApiPathToPub +docker build -t eshop/basket.api $basketPathToPub +docker build -t eshop/webspa $webSPAPathToPub +docker build -t eshop/identity $identitySvcPathToPub \ No newline at end of file diff --git a/src/Web/WebMVC/Services/Utilities/RetryWithExponentialBackoff.cs b/src/Web/WebMVC/Services/Utilities/RetryWithExponentialBackoff.cs index fe2404fe0..09e3d548f 100644 --- a/src/Web/WebMVC/Services/Utilities/RetryWithExponentialBackoff.cs +++ b/src/Web/WebMVC/Services/Utilities/RetryWithExponentialBackoff.cs @@ -21,7 +21,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services { private readonly int maxRetries, delayMilliseconds, maxDelayMilliseconds; - public RetryWithExponentialBackoff(int maxRetries = 5, int delayMilliseconds = 200, int maxDelayMilliseconds = 2000) + public RetryWithExponentialBackoff(int maxRetries = 10, int delayMilliseconds = 200, int maxDelayMilliseconds = 2000) { this.maxRetries = maxRetries; this.delayMilliseconds = delayMilliseconds;