Установите переменную среды Path во время сборки vsts, чтобы она сохранялась во всех задачах сборки, в частности, в задаче vsTest.

У меня есть определение сборки vsts, в котором я пытаюсь установить переменную среды PATH с помощью задачи PowerShell (и до того, как я попробовал cmd), чтобы в более поздней задаче vsTest тесты могли запускать exe с этого пути, однако устанавливая PATH с помощью задачи ps \ cmd, похоже, не работают, я попробовал несколько вариантов, например:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";" + $newPath, [EnvironmentVariableTarget]::User)

setx path " %newPath;%PATH%"

Какие-либо предложения?


person uril    schedule 14.03.2018    source источник
comment
Переменные среды обычно наследуются подпроцессами, но процессы, которые вызываются последовательно, не смогут получить значения таким образом. Вы можете настроить файл, который можно будет запросить в следующей тестовой задаче, чтобы получить нужный путь.   -  person Bob Dalgleish    schedule 15.03.2018


Ответы (2)


Задайте переменную среды процесса, вызвав команду ведения журнала через задачу PowerShell:

Например:

Write-Host "##vso[task.setvariable variable=PATH;]${env:PATH};$newPath";
person starian chen-MSFT    schedule 15.03.2018
comment
Да, в итоге я так и сделал - person uril; 15.03.2018
comment
Кстати, это не работает должным образом, если вы вводите секретную переменную, которая содержит знак доллара в своем значении. Знаки доллара удаляются из окончательного значения. Я столкнулся с этой конкретной проблемой при вводе секретной строки подключения, содержащей знак доллара. - person baumgarb; 05.07.2018
comment
Убедитесь, что вы не добавляете isOutput=true в качестве параметра к task.setvariable - тогда у меня это не сработало. - person White hawk; 01.12.2018
comment
Как использовать это в Kudu для лазурной функции? Я получаю: $ newPath = D: \ home \ python364x86 PS D: \ home ›Write-Host ## vso [task.setvariable variable = PATH;] $ {env: PATH}; $ newPath; Write-Host ## vso [task.setvariable variable = PATH;] $ {env: PATH}; $ newPath; Write-Host: внутренняя ошибка Win32. Недействительный дескриптор. Произошла ошибка 0x6. - person Noppey; 02.04.2019

Если вам нужно сделать это в конвейере Linux, вы можете сделать следующее:

- script: echo "##vso[task.setvariable variable=PATH]${PATH}:<your new path here>"

person Jonathan Chauncey    schedule 22.08.2019