From bc317cc823cbe9e790ff490941f89d12b03e3b9d Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Mon, 19 Apr 2021 11:00:35 -0700 Subject: [PATCH] Sync eng/common directory with azure-sdk-tools for PR 1560 (#18112) * Add template to merge multiple subscription configurations * Update eng/common/TestResources/build-test-resource-config.yml Co-authored-by: Wes Haggard Co-authored-by: Ben Broderick Phillips Co-authored-by: Ben Broderick Phillips Co-authored-by: Wes Haggard --- .../build-test-resource-config.yml | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 eng/common/TestResources/build-test-resource-config.yml diff --git a/eng/common/TestResources/build-test-resource-config.yml b/eng/common/TestResources/build-test-resource-config.yml new file mode 100644 index 000000000000..98cdd96f5ad6 --- /dev/null +++ b/eng/common/TestResources/build-test-resource-config.yml @@ -0,0 +1,65 @@ +parameters: + - name: SubscriptionConfiguration + type: string + default: $(sub-config-azure-cloud-test-resources) + - name: SubscriptionConfigurations + type: object + default: null + +steps: + - ${{ if parameters.SubscriptionConfiguration }}: + - pwsh: | + $config = @' + ${{ parameters.SubscriptionConfiguration }} + '@ | ConvertFrom-Json -AsHashtable + + foreach($pair in $config.GetEnumerator()) { + if ($pair.Value -is [Hashtable]) { + foreach($nestedPair in $pair.Value.GetEnumerator()) { + Write-Host "##vso[task.setvariable variable=$($nestedPair.Name);issecret=true;]$($nestedPair.Value)" + } + } else { + Write-Host "##vso[task.setvariable variable=$($pair.Name);issecret=true;]$($pair.Value)" + } + } + + Write-Host ($config | ConvertTo-Json) + $serialized = $config | ConvertTo-Json -Compress + Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized" + displayName: Initialize SubscriptionConfiguration variable + + - ${{ if parameters.SubscriptionConfigurations }}: + - pwsh: | + Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]{}" + displayName: Initialize SubscriptionConfiguration variable for merging + condition: eq(variables['SubscriptionConfiguration'], '') + + - ${{ each config in parameters.SubscriptionConfigurations }}: + - pwsh: | + $config = @' + $(SubscriptionConfiguration) + '@ | ConvertFrom-Json -AsHashtable + $addToConfig = @' + ${{ config }} + '@ | ConvertFrom-Json -AsHashtable + + foreach ($pair in $addToConfig.GetEnumerator()) { + if ($pair.Value -is [Hashtable]) { + if (!$config.ContainsKey($pair.Name)) { + $config[$pair.Name] = @{} + } + foreach($nestedPair in $pair.Value.GetEnumerator()) { + Write-Host "##vso[task.setvariable variable=$($nestedPair.Name);issecret=true;]$($nestedPair.Value)" + $config[$pair.Name][$nestedPair.Name] = $nestedPair.Value + } + } else { + Write-Host "##vso[task.setvariable variable=$($pair.Name);issecret=true;]$($pair.Value)" + $config[$pair.Name] = $pair.Value + } + } + + $serialized = $config | ConvertTo-Json -Compress + Write-Host ($config | ConvertTo-Json) + Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized" + + displayName: Merge Test Resource Configurations