将值从哈希表传递到 Azure DevOps YAML 计划任务

Pass value from hashtable to a Azure DevOps YAML scheduled task

我有一个预定的 yaml 管道。 2 个要执行的任务。第一个任务是创建一个哈希表,它是订阅和资源组数组的组合。第二个任务是使用第一个任务中的一个订阅和一个 rg 调用另一个模板。代码如下。

steps:

- task: AzurePowerShell@5
  displayName: 
  condition: succeeded()
  inputs:
    azureSubscription: '$(AzureSubscription)'
    ScriptType: 'InlineScript'
    Inline: |
      $Subscriptions = Get-AzSubscription
      $AKSSubscriptionAndRG = @{}
 
      foreach ($Subscription in $Subscriptions) {
      Set-AzContext -SubscriptionName $Subscription
      $AKSResourceGroup = (Get-AzResource -ResourceType "Microsoft.ContainerService/managedClusters").ResourceGroupName
      if(![String]::IsNullOrWhiteSpace($AKSResourceGroup)){
      $AKSSubscriptionAndRG.add($Subscription.Name,$AKSResourceGroup)
      }
      }
      Write-Output "Exporting pipeline variable AKSSubscription with value AKSRG"
      Write-Output "##vso[task.setvariable variable=AKSSubscriptionAndRG;]$AKSSubscriptionAndRG"
    azurePowerShellVersion: 'LatestVersion'
    FailOnStandardError: true

- template: another.yaml
  parameters:
    AzureSubscription: '$(AzureSubscription)'
    AksResourceGroupName: '$(AksResourceGroupName)'

我的问题是:如何将每个订阅和 RG 传递给第二个模板? 有人可以帮助我吗?

根据我的测试,当我在模板中传递Defined variablesAzureSubscription参数时,参数似乎只能识别文本本身。定义的变量无法传递给参数。

错误信息如下:

这是一个已知问题。您必须将 Azure 订阅作为文字传递。

例如:

- template: another.yml
  parameters:
     AzureSubscription: Subscriptionname
     AksResourceGroupName: groupname

据我所知,目前没有解决方法。

Github.

中有关于此限制的 ticket