Azure Шаблон YAML ARM - передать $ Build в сценарий PowerShell - PullRequest
0 голосов
/ 09 июля 2020

В настоящее время у меня есть рабочий шаблон YAML ARM со следующим:

  - task: PowerShell@2
    displayName: "Do My Stuff"
    inputs:
      targetType: 'filePath'
      pwsh: true
      filePath: '$(Build.SourcesDirectory)/Do-MyStuff.ps1'
      arguments: >- 
        -SourcesDirectory $(Build.SourcesDirectory)
        -Foo hello
        -Bar world

Но теперь я хочу получить доступ к дополнительным свойствам переменной $ Build, но когда я это сделаю

  - task: PowerShell@2
    displayName: "Do My Stuff"
    inputs:
      targetType: 'filePath'
      pwsh: true
      filePath: '$(Build.SourcesDirectory)/Do-MyStuff.ps1'
      arguments: >- 
        -Build $(Build)
        -Foo hello
        -Bar world

(и обновите Do-MyStuff.ps1)

Я получаю сообщение об ошибке: Build : The term 'Build' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Кто-нибудь знает, что я могу сделать, чтобы передать $ Build в свой сценарий PowerShell?

1 Ответ

0 голосов
/ 17 июля 2020

Оказывается, ARM считает Build. просто частью имени переменной. Это НЕ структура.

Если вы хотите передать несколько значений, вы можете сделать что-то вроде этого:

  - task: PowerShell@2
    displayName: "Do My Stuff"
    inputs:
      targetType: 'filePath'
      pwsh: true
      filePath: '$(Build.SourcesDirectory)/Do-MyStuff.ps1'
      arguments: >- 
        -Build @{
          'SourcesDirectory' = '$(Build.SourcesDirectory)';
          'ArtifactStagingDirectory' = '$(Build.ArtifactStagingDirectory)';
        }
        -Foo hello
        -Bar world

И сценарий примет параметр, например:

    [Parameter(Mandatory = $true, Position = 0)]
    [hashtable]
    $Build,
...