Передача переменной, установленной в задаче PowerShell, другой задаче (YAML) - PullRequest
1 голос
/ 28 мая 2020

У меня есть файл yaml со следующими задачами:

parameters:  

 steps:    
- task: AzurePowerShell@4
  displayName: 'script'
  inputs:
        azureSubscription: 
        ScriptPath: 
        ScriptArguments: 
        azurePowerShellVersion: LatestVersion

 - task: AzureResourceGroupDeployment@2
   displayName: 'deployment'
   inputs:
         azureSubscription: 
         resourceGroupName: 
         location: 
         overrideParameters: '-abc $(var1) -def $(var2)'
         deploymentMode: 'Incremental'

В сценарии Powershell я устанавливаю 2 переменные следующим образом:

    $ABC = 1
    $DEF = 2
    Write-Host "##vso[task.setvariable variable=var1;isOutput=true]$ABC"
    Write-Host "##vso[task.setvariable variable=var2;isOutput=true]$DEF"

При попытке использовать эти переменные во второй задаче (в разделе overrideParameters) я вижу следующую ошибку:

[ошибка] InvalidContentLink: невозможно загрузить содержимое развертывания из 'xxxx $ (var1)'

[ошибка] InvalidContentLink : Невозможно загрузить содержимое развертывания из 'xxxx $ (var2)'

Неправильно ли я устанавливаю переменные в сценарии PowerShell?

1 Ответ

3 голосов
/ 29 мая 2020

Вы можете попробовать добавить ссылочное имя к первой задаче. Например:

- task: AzurePowerShell@4
  displayName: 'script'
  inputs:
        azureSubscription: 
        ScriptPath: 
        ScriptArguments: 
        azurePowerShellVersion: LatestVersion
  name: test

Затем во второй задаче получите значение переменной в виде $(test.var1).

Это потому, что в редакторе определений последующие задачи не получат переменную name intellisense для выходных переменных, опубликованных специальным сценарием c. Вы можете обратиться к этому документу для получения подробной информации.

Кроме того, вот блог с некоторыми примерами того, как передавать переменные в Azure задачах YAML конвейеров.

...