Azure конвейерные выходные переменные task.setvariable не присваивает значение переменной - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь выполнить скрипт terraform для создания ec2 и, используя концепцию выходных переменных, я хочу получить ec2 publi c ip, назначить его переменной и передать его другой задаче. Но я вижу, что выходные переменные, использующие bash или скрипт, не работают в azure pipe yml. Я использую Ubuntu Agent.

  • script: COMMAND = $ (cat terraform.tfstate | grep 'public_ip "' | cut -d": "-f2 | cut -d '"' -f2) && echo "## vso [task.setvariable variable = ec2ip;] $ COMMAND" && echo $ ec2ip Но я не вижу значения для печати. Не уверен, работает ли task.setvarible или нет. Нужна помощь, чтобы исправить это.

1 Ответ

0 голосов
/ 05 мая 2020

Нельзя отобразить значение новой переменной в той же задаче сценария. Новая переменная, заданная оператором task.setvariable, доступна только в последующих задачах.

Вы можете добавить последующую задачу сценария к эхо-переменной ec2ip. И вы получаете его значение, заключая его в $() (ie. $(ec2ip)). Пожалуйста, проверьте документ Определить допустимые значения для получения дополнительной информации.

- script: COMMAND=$(cat terraform.tfstate | grep 'public_ip"' | cut -d":" -f2 | cut -d'"' -f2) && echo "##vso[task.setvariable variable=ec2ip;]$COMMAND" 


- script: echo "$(ec2ip)"
...