it-swarm.com.ru

Установить выходную переменную VSTS как результат команды bash

Я запускаю задачу в VSTS, которая выполняет некоторые операции с переменной из предыдущего шага, и затем мне нужно вывести результат для использования в будущих задачах. У меня есть следующее в задаче командной строки, работающей на хосте сборки linux, но мне не повезло при попытке позже использовать результат с $ (podName3).

COMMAND="$(echo '$(pods)' | grep -oh -P '[^ ]*' | grep schema)"
##vso[task.setvariable variable=podName3]"$COMMAND"

Я попробовал несколько вариантов этого безрезультатно и нуждаюсь в каком-то направлении, так как это слишком долго ставило меня в тупик

4
David Parsonson

Кажется, синтаксис неверен.

Просто попробуйте формат ниже:

COMMAND="$(echo '$pods' | grep -oh -P '[^ ]*' | grep schema)"
echo "##vso[task.setvariable variable=podName3]$COMMAND"

Или добавьте задачу powershell и выполните команды ниже для установки переменной:

$COMMAND="$(echo '$env:pods' | grep -oh -P '[^ ]*' | grep schema)"

Write-Host "##vso[task.setvariable variable=podName3]$COMMAND"

Более подробную информацию смотрите в Определите и измените ваши переменные в скрипте

9
Andy Li-MSFT

Для этого я создал инструмент командной строки и задачу DevOps Azure: https://marketplace.visualstudio.com/items?itemName=riezebosch.setvar

Это просто позволяет вам передать вывод команды в инструмент и вывести ее в виде строки магической переменной. Он написан на Go и кросс-скомпилирован, поэтому работает на всех основных платформах и во всех различных оболочках.

Ваш пример:

echo '$pods' | grep -oh -P '[^ ]*' | grep schema | setvar -name podName3

Вам нужно только включить задачу setvar перед этой задачей сценария, чтобы получить инструмент на агенте.

0
riezebosch