diff --git a/images/win/scripts/Installers/Install-AzureDevOpsCli.ps1 b/images/win/scripts/Installers/Install-AzureDevOpsCli.ps1 index 1c7d1bbf..05368f26 100644 --- a/images/win/scripts/Installers/Install-AzureDevOpsCli.ps1 +++ b/images/win/scripts/Installers/Install-AzureDevOpsCli.ps1 @@ -3,6 +3,41 @@ ## Desc: Install Azure DevOps CLI ################################################################################ -az extension add -n azure-devops +$azureDevOpsCliConfigPath = 'C:\azureDevOpsCli' +# Store azure-devops-cli cache outside of the provisioning user's profile +[Environment]::SetEnvironmentVariable('AZURE_DEVOPS_EXT_CONFIG_DIR', $azureDevOpsCliConfigPath, [System.EnvironmentVariableTarget]::Machine) +# make variable to be available in the current session +${env:AZURE_DEVOPS_EXT_CONFIG_DIR} = $azureDevOpsCliConfigPath -Invoke-PesterTests -TestFile "CLI.Tools" -TestName "Azure DevOps CLI" \ No newline at end of file +$azureDevOpsCliCachePath = Join-Path $azureDevOpsCliConfigPath 'cache' +$null = New-Item -ItemType 'Directory' -Path $azureDevOpsCliCachePath + +[Environment]::SetEnvironmentVariable('AZURE_DEVOPS_CACHE_DIR', $azureDevOpsCliCachePath, [System.EnvironmentVariableTarget]::Machine) +# make variable to be available in the current session +${env:AZURE_DEVOPS_CACHE_DIR} = $azureDevOpsCliCachePath + +az extension add -n azure-devops +if ($LASTEXITCODE -ne 0) +{ + throw "Command 'az extension add -n azure-devops' failed" +} + +# Warm-up Azure DevOps CLI + +Write-Host "Warmup 'az-devops'" +@('devops', 'pipelines', 'boards', 'repos', 'artifacts') | ForEach-Object { + + az $_ --help + if ($LASTEXITCODE -ne 0) + { + throw "Command 'az $_ --help' failed" + } + +} + +# calling az devops login to force it to install `keyring`. Login will actually fail, redirecting error to null +Write-Host 'fake token' | az devops login | Out-Null +# calling az devops logout to be sure no credentials remain. +az devops logout | out-null + +Invoke-PesterTests -TestFile 'CLI.Tools' -TestName 'Azure DevOps CLI'