Как установить переменную сборки в DevOps Azure с помощью Bash? - PullRequest
0 голосов
/ 18 декабря 2018

Я использую приведенное ниже, чтобы извлечь версию из моего файла package.json и установить для нее одну из моих переменных сборки: Version.

# successfully retrieves and prints the version to console
ver=$(node -e "console.log(require('./package.json').version)")
echo "Version: $ver"

# does jack squat
# even trying to hard-code something in place of $ver doesn't set the variable
echo "##vso[task.setvariable variable=Version]$ver"
echo "Version: $(Version)"

Я пытался использовать verи $(ver) вместо $ver, ни одна из них не работает, поскольку консоль печатает пробел для $(Version) во всех случаях (с самого начала он пуст).Если я жестко кодирую Version, он печатается нормально, поэтому проблема не в печати или получении, а в настройках.Мой скрипт основан на примере MS:

echo "##vso[task.setvariable variable=sauce]crushed tomatoes"

Наш сервер сборки находится в среде Windows.

1 Ответ

0 голосов
/ 08 августа 2019

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

Из документации переменная конвейера не раскрывается до тех пор, пока задача не будет завершена. Microsoft расширила свою документацию, чтобы лучше ее проиллюстрировать

steps:

# Create a variable
- script: |
    echo '##vso[task.setvariable variable=sauce]crushed tomatoes'

# Use the variable
# "$(sauce)" is replaced by the contents of the `sauce` variable by Azure Pipelines
# before handing the body of the script to the shell.
- script: |
    echo my pipeline variable is $(sauce)

Я подозреваю, что поэтому даже при жестком кодировании значения вы ничего еще не видели.

...