Azure Pipelines YAML: неожиданное значение 'переменные'

Я использую Azure Pipelines как часть Azure DevOps. Я пытаюсь определить переменные в своем файле шаблона, потому что мне нужно использовать одно и то же значение несколько раз.

Это мой stage-template.yml:

parameters:
 - name: param1
   type: string
 - name: param2
   type: string

variables:
  var1: path/${{ parameters.param2 }}/to-my-file.yml

stages:
 - stage: Deploy${{ parameters.param2 }}
   displayName: Deploy ${{ parameters.param1 }}
   jobs:  
    ...

При попытке использовать этот конвейер я получаю сообщение об ошибке:

/stage-template.yml (строка: 7, столбец: 1): неожиданное значение 'переменных'

Почему это не работает? Что я сделал не так?


person Draex_    schedule 29.03.2020    source источник
comment
ИМО, полгода спустя на повторяющийся вопрос был опубликован несколько лучший ответ: stackoverflow.com/questions/63381680/.   -  person Avius    schedule 11.11.2020


Ответы (1)


у вас не может быть параметров в конвейере, только в templateReferences:

name: string  # build numbering format
resources:
  pipelines: [ pipelineResource ]
  containers: [ containerResource ]
  repositories: [ repositoryResource ]
variables: # several syntaxes, see specific section
trigger: trigger
pr: pr
stages: [ stage | templateReference ]

если вы хотите использовать переменные в шаблонах, вы должны использовать правильный синтаксис:

parameters:
 - name: param1
   type: string
 - name: param2
   type: string

stages:
- stage: Deploy${{ parameters.param2 }}
  displayName: Deploy ${{ parameters.param1 }}
  variables:
    var1: path/${{ parameters.param2 }}/to-my-file.yml
  jobs:  
  ...
person 4c74356b41    schedule 29.03.2020
comment
Я могу их получить, так как использую шаблон. См. Это: docs.microsoft .com / en-us / azure / DevOps / pipelines / process / Весь конвейер (включая параметры) отлично работает без раздела переменных. - person Draex_; 29.03.2020
comment
ну, в этом случае у вас не может быть переменных, они должны быть на стадии (или на заданиях) - person 4c74356b41; 29.03.2020
comment
Вы говорите, что переменные нельзя использовать в шаблонах? или что нужно использовать по другому? не могли бы вы привести пример того, как я могу их использовать? - person Draex_; 29.03.2020
comment
вы можете иметь параметры в конвейере. Я использую их постоянно для ввода, ожидаемого при инициализации конвейера. docs.microsoft.com/en-us/azure/devops/pipelines/ "Вы можете использовать параметры в шаблонах и конвейерах". - person BlueBunny; 03.06.2021