-
Notifications
You must be signed in to change notification settings - Fork 154
Expand file tree
/
Copy pathbuild-test-resource-config.yml
More file actions
85 lines (74 loc) · 3.03 KB
/
build-test-resource-config.yml
File metadata and controls
85 lines (74 loc) · 3.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
parameters:
- name: SubscriptionConfiguration
type: string
default: $(sub-config-azure-cloud-test-resources)
- name: SubscriptionConfigurations
type: object
default: null
# EnvVars is used to help diagnose variable conflict issues early
- name: EnvVars
type: object
default: null
- name: SubscriptionConfigurationFilePaths
type: object
default: null
steps:
- task: AzurePowerShell@5
displayName: Set Pipeline Subnet Info
env: ${{ parameters.EnvVars }}
inputs:
azureSubscription: azure-sdk-tests
azurePowerShellVersion: LatestVersion
pwsh: true
ScriptType: InlineScript
Inline: |
Set-AzContext 'Azure SDK Engineering System'
if ($env:Pool -eq 'Azure Pipelines') {
Write-Host "Skipping pool subnet lookup when running on an Azure Pipelines hosted pool"
Write-Host "##vso[task.setvariable variable=PoolSubnet;]"
exit 0
}
$poolSubnet = (Get-AzResource -ResourceGroupName azsdk-pools -Name $env:Pool -ExpandProperties).Properties.networkProfile.subnetId
Write-Host "Setting pipeline subnet env variable PoolSubnet to '$poolSubnet'"
Write-Host "##vso[task.setvariable variable=PoolSubnet;]$poolSubnet"
- pwsh: |
. ./eng/common/TestResources/SubConfig-Helpers.ps1
$finalConfig = @{}
$baseSubConfigRaw = @'
${{ parameters.SubscriptionConfiguration }}
'@.Trim()
if ($baseSubConfigRaw) {
$baseSubConfig = $baseSubConfigRaw | ConvertFrom-Json -AsHashtable
Write-Host "Setting base sub config"
$finalConfig = SetSubscriptionConfiguration $baseSubConfig
}
$subConfigJsonsRaw = @'
${{ convertToJson(parameters.SubscriptionConfigurations) }}
'@.Trim() -replace '"{', '{' -replace '}"', '}'
if ($subConfigJsonsRaw) {
$subConfigs = $subConfigJsonsRaw | ConvertFrom-Json -AsHashtable
foreach ($subConfig in $subConfigs) {
Write-Host "Merging sub config from list"
$finalConfig = UpdateSubscriptionConfiguration $finalConfig $subConfig
}
}
$subConfigFilesRaw = @'
${{ convertToJson(parameters.SubscriptionConfigurationFilePaths) }}
'@.Trim()
if ($subConfigFilesRaw) {
$subConfigFiles = $subConfigFilesRaw | ConvertFrom-Json -AsHashtable
foreach ($file in $subConfigFiles) {
# In some cases, $file could be an empty string. Get-Content will fail
# if $file is an empty string, so skip those cases.
if (!$file) {
continue
}
Write-Host "Merging sub config from file: $file"
$subConfig = Get-Content $file | ConvertFrom-Json -AsHashtable
$finalConfig = UpdateSubscriptionConfiguration $finalConfig $subConfig
}
}
Write-Host ($finalConfig | ConvertTo-Json)
$serialized = $finalConfig | ConvertTo-Json -Compress
Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized"
displayName: Merge subscription configurations