#azure-devops #azure-pipelines
#azure-devops #azure-конвейеры
Вопрос:
У меня есть файл YAML конвейера Azure, и я не могу понять, как объявить переменную списка в скрипте и использовать ее на следующем шаге.
Я хотел бы что-то вроде этого:
- script: echo "##vso[task.setvariable variable=packages]@('a','b')"
- template: publish-template.yml
parameters:
packages: packages
или
- script: echo "##vso[task.setvariable variable=packages]@('a','b')"
- ${{ each package in parameters.packages }}:
- script: echo ${{ package }}
Но я не могу понять, как это возможно.
Спасибо 🙂
Комментарии:
1. Вы пытаетесь смешать переменные макроса (которые устанавливаются во время выполнения) с выражениями (которые расширяются во время анализа конвейера) — по сути, вы не можете этого сделать.
2. Привет @Or Gaizer, есть ли какие-либо обновления об этом билете? Не стесняйтесь, дайте мне знать, если у вас возникнут какие-либо вопросы. Если ответ может помочь, вы можете рассмотреть возможность его принятия.
Ответ №1:
Вы не можете этого сделать. Переменные хранятся в виде строк. Таким образом, это script: echo "##vso[task.setvariable variable=packages]@('a','b')"
приведет к созданию строки ('a','b')
, а не массива. Вы можете проанализировать задачу скрипта и обработать как массив, но нет способа, чтобы массив обслуживался на уровне to, как вы показываете в своем примере.
Пожалуйста, проверьте это здесь:
Переменные Yaml всегда были строковыми: строковые сопоставления. Документ, похоже, в настоящее время исправлен, хотя, возможно, у нас была ошибка при последнем посещении.
В ближайшем будущем мы готовимся выпустить функцию, которая позволит вам передавать более сложные структуры. Следите за обновлениями!
Комментарии:
1. Есть новости по этому поводу? Я хотел бы добавить выпадающее меню, которое создается из сценария или задачи. Тогда значения будут доступны для пользователя, чтобы выбрать его, а затем запустить конвейер