Пользовательские переменные в TFS Release Management - PullRequest
0 голосов
/ 04 июня 2018

Я использую функцию сборки и выпуска TFS 2017.1.В моем определении релиза у меня есть пара переменных релиза, на которые нужно сослаться в моей задаче PowerShell (выполнить на удаленном компьютере).До сих пор я пробовал следующие варианты, но не смог заставить его работать.

Добавлена ​​задача Execute PowerShell для сохранения переменных выпуска в переменных среды:

$releaseVaraiables = Get-ChildItem Env: | Where-Object { $_.Name -like "ACL_*" } 
Write-Host "##vso[task.setvariable variable=aclVariables]$releaseVaraiables"

Добавлена ​​команда ExecutePowerShell для задачи удаленного компьютера:

Здесь я не могу прочитать переменные среды (может быть, потому что это задача удаленного компьютера?)

Write-Verbose "problem reading $env:aclVariables" -Verbose

Затем я попытался передать переменную среды в качестве аргумента., но это тоже не сработало

param
(
    $RbacAccessTokenParams
)

$RbacAccessTokenParams.GetEnumerator() | % {$_.Name}
$RbacAccessTokenParams | % {
    Write-Verbose "variable is $_" -Verbose
    Write-Verbose "name is $_.Name" -Verbose
    Write-Verbose "value is $_.Value" -Verbose
}

Вот как я передал в качестве аргумента

-RbacAccessTokenParams $(aclVariables)

Чего мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Я протестировал ваш сценарий на моей стороне с TFS 2017.3.1, и он работает, когда передается переменная окружения в качестве аргумента.Вы можете сначала обновить свою TFS и попробовать снова.Приложите мои шаги для справки:

1. enter image description here

2. enter image description here

3.

enter image description here

4.

enter image description here

0 голосов
/ 04 июня 2018

Несекретные переменные уже хранятся как переменные среды;Вам не нужно делать ничего особенного, чтобы получить к ним доступ.Вы можете получить к ним доступ с помощью $ENV:VariableName.Периоды заменяются подчеркиванием.Так что Foo.Bar будет $env:FOO_BAR.

Секретные переменные должны передаваться в сценарий, который требует их.

Однако это относится только к к агенту .Если вы используете задачу PowerShell On Target Machines для запуска скрипта, вам необходимо передать переменные в качестве аргументов скрипту.Обойти это невозможно, если только вы не решите использовать группы развертывания.

Или, что еще лучше, следуйте соглашению «конфигурация как код» и сохраняйте значения для конкретного приложения в файлах конфигурации с управлением исходным кодом, которые читают ваши сценарии,чтобы вы не были тесно связаны с платформой развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...