Azure DevOps экспортная переменная как последовательность или отображение - PullRequest
0 голосов
/ 24 февраля 2020

Мне нужно выполнить те же действия, которые описаны в template.yml списке объектов, которые я получаю от какого-то API

Этот список объектов всегда новый, и я не могу его предопределить

Я экспортирую список из сценария Python: print(f'##vso[task.setvariable variable=validRepos]{validRepos}')

Вот как это выглядит в задаче конвейера: enter image description here

Я пытаюсь использовать его в конвейере:

- template: template.yml
  parameters:
    param: $(validRepos)

.. но появляется следующая ошибка:
enter image description here

Возможно ли экспортировать переменную как последовательность или отображение?

1 Ответ

1 голос
/ 25 февраля 2020

Полагаю, вы использовали этот похожий оператор в template.yml - ${{ each step in parameters.buildSteps }}:.

Ошибка произошла из-за того, что выражение шаблона ${{}} анализируется во время компиляции. Но значение переменной $(validRepos) создается во время выполнения. Когда конвейер агента проанализировал шаблон, задания не были выполнены, а значение переменной $(validRepos) еще не сгенерировано. По этой причине произошел сбой конвейера с указанной выше ошибкой. Пожалуйста, проверьте документ понимаете синтаксис переменной .

Обходной путь - использовать команды (ie. Powershell task) для выполнения вашей задачи. И переместить операцию итерации внутри задачи команды. Ниже приведен простой пример задачи powershell.

parameters:
  buildSteps: []

steps:
- powershell: |
    foreach($step in ${{parameters.buildSteps}}){
      write-host $step
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...