Использование вложенных параметров с шаблоном в файле yaml конвейеров Azure - PullRequest
0 голосов
/ 05 февраля 2019

Есть ли способ использовать вложенные в parameters на azure-pipelines.yml?Пример ниже неправильный ...

# my-template.yml
parameters:
steps:
- ${{ each pf in parameters.pf }}:
  - task: PublishBuildArtifacts@1
    displayName: 'Publish ${{ pf.rid }} ${{ pf.output }}'
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)/${{ pf.output }}.zip'
# azure-pipelines.yml
steps:
- template: my-template.yml
  parameters:
  - windows:
      rid: 'win-x64'
      output: 'Foo.exe'
  - macos:
      rid: 'osx-x64'
      output: 'foo'

1 Ответ

0 голосов
/ 21 июня 2019

Я немного подправил ваш пример, чтобы он работал:

# my-template.yml
parameters:
  pf: []

steps:
- ${{ each pf in parameters.pf }}:
  - script: echo ${{ pf.rid }} ${{ pf.output }}
    displayName: 'Publish ${{ pf.rid }} ${{ pf.output }}'
# azure-pipelines.yml
steps:
- template: my-template.yml
  parameters:
    pf:
    # windows
    - rid: 'win-x64'
      output: 'Foo.exe'
    # macos
    - rid: 'osx-x64'
      output: 'foo'

Более подробную информацию можно найти здесь об итеративной вставке шаблонов.

Хотя я подозреваю, что то, что вы хотите сделать, может быть лучше достигнуто с помощью strategy и matrix, например:

# azure-pipelines.yml
strategy:
  matrix:
    windows:
      imageName: "vs2017-win2016"
      output: 'Foo.exe'
    macos:
      imageName: 'macos-10.13'
      output: 'foo'

pool:
  vmImage: $(imageName)

steps:
- script: echo $(output)
  displayName: 'Publish'

Более подробную информацию можно найти здесь о сборке на нескольких платформах..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...