Трубопроводы Azure: передача переменной в качестве параметра в шаблон - PullRequest
0 голосов
/ 18 января 2019

В настоящее время я оцениваю конвейеры Azure с небольшим POC, и мне кажется, что я столкнулся с ограничением, но хотел бы знать, есть ли у кого-нибудь обходной путь.

Вот ключевые части того, что я пытаюсь сделать.

лазурь-pipelines.yml

variables:
  - name: FavouriteSportsTeam
    value: "Houston Rockets"
jobs:
  - template: Build1.yml
    parameters:
      SportsTeam: $(FavouriteSportsTeam)
  - template: Build2.yml
    parameters:
      SportsTeam: $(FavouriteSportsTeam)

Build1.yml

parameters:
  SportsTeam: "A Default Team"
jobs:
  - job: SportsTeamPrinter
    steps:
      - script: "echo ${{ parameters.SportsTeam }}"

Теперь, когда я пытаюсь запустить это, переменная, переданная из файла azure-pipelines.yml, не раскрывается и остается как "$ (FavouriteSportsTeam)"

Можно ли передать расширенную переменную в качестве параметра в другой файл?

Ответы [ 2 ]

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

Я полагаю, что параметры шаблона оцениваются до инициализации переменных. Вот почему вы получаете $(FavouriteSportsTeam) вместо значения переменной

Я пытался установить значение параметра шаблона из переменной по-разному, но не повезло

В шаблоне значение параметра может быть разрешено с помощью format или без (с использованием $ {{}}), например

#template1
parameters:
  poolname: dev4-kyiv
  versionFile: ''

jobs:
  - job: versionJob 
    pool:
      name: ${{ parameters.poolname }}
    steps:
      - powershell: |
          Write-Host ("${{ parameters.versionFile }}")

или с локальными переменными шаблона

#template2
parameters:
  releaseFilePath: ''
  packageTags: '' 
jobs:
  - job: build
    variables:
      releaseNotesFile: '${{ parameters.releaseFilePath }}/releaseNotes.txt'
      tags: '${{ parameters.packageTags }}'

но я не могу найти способ установить значение параметра шаблона, используя переменную из основного скрипта, который использует шаблон.

0 голосов
/ 18 января 2019

да, но вы должны использовать функцию format():

Inline: |
  ${{ format('$Tags = (Get-AzureRmResourceGroup -Name {0}).Tags
  $Tags.Version = "$(Build.BuildNumber)"
  $Tags.FailedVersion = "-"; Set-AzureRmResourceGroup -Name {0} -Tag $Tags',
        parameters.resourceGroupName ) }}

вот пример. Вы также можете сделать его многострочным для лучшей читаемости.

https://github.com/Microsoft/azure-pipelines-agent/issues/1686

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