Это невозможно. TemplateParam
всегда будет строкой. Но вы можете попробовать другой подход.
Если вы определите свой шаблон таким образом:
#template.yaml
parameters:
- name: 'DOCKER_FILES'
type: object
default: {}
- name: 'server'
type: string
default: ''
steps:
- ${{ each dockerFile in parameters.DOCKER_FILES }}:
- script: echo ${{ parameters.server }}:${{ dockerFile }}
и создадите его
pool:
vmImage: 'ubuntu-latest'
steps:
- template: template.yaml
parameters:
DOCKER_FILES:
- "dir1/dir2"
- "dir3/dir4"
server: someServer
Однако в этом случае вы еще нужно поставить их отдельно. Переменные, по крайней мере, на данный момент считаются строковыми.
Я также пробовал этот подход: Передать конвейерную переменную из дизайнера в шаблон задания YAML но я получил тот же результат.
РЕДАКТИРОВАТЬ
Это ниже не работает. Я только хотел показать то, что пытался сэкономить ваше время.
И я пробовал что-то вроде этого:
variables:
- name: templateParam
value: "dir1/dir2,dir3/dir4"
pool:
vmImage: 'ubuntu-latest'
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
$array = $variable.Split(',)
Write-Host "##vso[task.setvariable variable=templateParamArray]$array"
- template: template.yaml
parameters:
instances:
${{ each s in templateParamArray }}:
- ${{ s }}:
server: someServer
Но безуспешно. Вы также можете быть заинтересованы в этом сообществе разработчиков topi c.
Подводя итог, я думаю, что в настоящий момент невозможно достичь того, чего вы хотите достичь, имея список в одном переменная.