Как передать шаблон переменной для расширения шаблона в качестве параметра в конвейерах azure - PullRequest
0 голосов
/ 07 августа 2020

У меня есть переменные, объявленные в шаблонах yaml, например

# File: vars.yml
variables:
- name: firstvar
  value:'first var value'
- name: secondvar
  value:'second var value'

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

trigger:
- none

extends:
  template: resource-template.yml
  paramters:
    uservariablestemplate: <i want to pass above variable yaml template here>

, потому что мой расширенный шаблон использует другие переменные, поэтому этот пользователь определил там должны использоваться переменные

    # File: resource-template.yml
   parameters:
   - name: uservariablestemplate
     type: string
     default: none

    resources:
      repositories:
      - repository: samplerepo
        type: git
        name: myproject/myrepo
    
    variables:
    - template: centralvariables.yml@samplerepo
    - template: <i want to use variable template from user here>
    
    steps:
     - script: echo "Testing resource template"

Любая помощь приветствуется. или любой другой способ решения этой проблемы.

1 Ответ

0 голосов
/ 10 августа 2020

Вы можете просто передать в параметры имя файла шаблона переменной. Для примера ниже:

trigger:
- none

extends:
  template: resource-template.yml
  paramters:
    uservariablestemplate: vars.yml

Затем в шаблоне resource-template.yml извлеките шаблон переменной, используя ${{parameters.uservariablestemplate}}. См. Пример ниже:

   parameters:
   - name: uservariablestemplate
     type: string
     default: none

   resources:
     repositories:
     - repository: samplerepo
       type: git
       name: myproject/myrepo
    
   variables:
   - template: centralvariables.yml@samplerepo
   - template: ${{parameters.uservariablestemplate}}
    
   steps:
    - script: echo "Testing resource template"

Если файл шаблона переменной находится в другом репо. Вам необходимо определить репо в разделе ресурсов репо. Для примера ниже:

   parameters:
   - name: uservariablestemplate
     type: string
     default: none

   resources:
     repositories:
     - repository: samplerepo
       type: git
       name: myproject/myrepo
     
     - repository: variableRepo
       type: git
       name: myVariableRepo
    
   variables:
   - template: centralvariables.yml@samplerepo
   - template: ${{parameters.uservariablestemplate}}@variableRepo
    
   steps:
    - script: echo "Testing resource template"

Обновление:

Чтобы динамически установить имя репо, вы можете попробовать использовать параметры времени выполнения . См. Ниже: Определите параметр времени выполнения repo:

trigger: none

parameters:
- name: repo
  type: string
  default: none

extends:
  template: resource-template.yml
  parameters:
    uservariablestemplate: vars.yml

Затем вы можете ссылаться на репо с помощью ${{parameters.repo}} в следующем yaml.

При запуске конвейера. Вы сможете установить имя репо:

введите описание изображения здесь

...