#azure-devops #azure-pipelines #azure-pipelines-yaml
#azure-devops #azure-конвейеры #azure-pipelines-yaml
Вопрос:
Я хотел бы запустить шаблон задания с объектом в качестве параметра. К сожалению, даже на основе примеров я не смог найти способ сделать это. Я был бы признателен, если бы кто-нибудь мог подсказать мне, как этого добиться.
Чего я хочу добиться, так это заменить часть [«DEPLOY», «CONFIG»] динамической переменной:
- template: job-template.yaml
parameters:
jobs: ["DEPLOY", "CONFIG"]
Ответ №1:
Это невозможно. YAML здесь очень ограничен, и вы можете прочитать больше об этом здесь
Переменные Yaml всегда были строковыми: строковые сопоставления.
Так, например, вы можете определить параметры как сложный тип
Файл шаблона
parameters:
- name: 'instances'
type: object
default: {}
- name: 'server'
type: string
default: ''
steps:
- ${{ each instance in parameters.instances }}:
- script: echo ${{ parameters.server }}:${{ instance }}
Основной файл
steps:
- template: template.yaml
parameters:
instances:
- test1
- test2
server: someServer
Но вы не можете сделать это динамически / программно, так как каждый созданный вами вывод будет выглядеть как простая строка.
Что вы можете сделать, это передать как строку, а затем с помощью powershell разделить эту строку. Но все зависит от того, что вы хотите запустить дальше, потому что вы не сможете просто перебирать структуру yaml таким образом. Все, что вы можете сделать, это запустить в цикле powershell и что-то сделать, но этого может быть недостаточно для вас.
Ответ №2:
Это возможно с некоторой логикой. смотрите ниже
- template: job-template.yaml
parameters:
param: ["DEPLOY", "CONFIG"]
и в шаблоне задания.файл yaml, который вы можете определить. Таким образом, каждое имя задания будет отличаться
parameters:
param: []
jobs:
- ${{each jobName in parameters.param}}:
- job: ${{jobName}}
steps:
- task: Downl......