не удалось передать параметр из Azure Devops yaml в PowerShell

avatar
knowdotnet
1 июля 2021 в 17:15
1025
1
0
parameters:
- name: AzureSubscription
  default: 'abc'
- name: BlobName
  type: string
  default: ""
stages:
- stage: MyStage
  displayName: 'My Stage'
  variables:
    - name: sas

 jobs:
   - job: ABC
     displayName: ABC 
     steps:
     - task: AzureCLI@2
       displayName: 'XYZ'
       inputs:
        azureSubscription: ${{ parameters.AzureSubscription }}
        scriptType: pscore
        arguments: 
        scriptLocation: inlineScript
        inlineScript: |
          $sas=az storage account generate-sas --account-key "mykey" --account-name "abc" --expiry (Get-Date).AddHours(100).ToString("yyyy-MM-dTH:mZ") --https-only --permissions rw --resource-types sco --services b
          Write-Host "My Token: " $sas

    - task: PowerShell@2
      inputs:
        targetType: 'filepath'
        filePath: $(System.DefaultWorkingDirectory)/psscript.ps1
        arguments: >
          -Token "????"
          -BlobName "${{parameters.BlobName}}"
        displayName: 'some work'

В этом yaml Azure Devops я создал 2 задачи. AzureCLI@2 и PowerShell@2

В AzureCLI@2 я получаю значение переменной $sas. Write-Host подтверждает это, но $sas не передает в качестве параметра файл powershell PowerShell@2 в качестве параметра.

"${{parameters.BlobName}}" работает нормально. В powershell я могу прочитать это значение. Как передать значение переменной sas?
Пробовал

-Токен $sas # не работает

-Токен "${{sas}}" # не работает

Источник

Ответы (1)

avatar
Manuel Batsching
1 июля 2021 в 19:35
0

Разные задачи в Azure Pipeline не имеют общего пространства выполнения, которое позволило бы им сохранять или передавать переменные.

По этой причине Azure Pipelines предлагает специальные команды ведения журнала, которые позволяют получать строковые выходные данные задачи для обновления переменной среды Azure Pipeline, которую можно использовать в последующих задачах: Установка переменных в скриптах (Microsoft Docs) .

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

Write-Host "##vso[task.setvariable variable=sas]$sas"

В аргументе вашей последующей задачи (в рамках того же задания) используйте переменный синтаксис Azure Pipelines:

-Token '$(sas)'