TeamCity Kotlin DSL: как получить доступ к параметрам конфигурации агента из внешнего сценария powershell - PullRequest
0 голосов
/ 05 мая 2020

У меня есть этап сборки, определенный в kotlin, который загружает сценарий PowerShell по следующему пути:

powerShell { 
    scriptMode = file { 
        path = "path\to\file.ps1"
    }
}

Файл успешно загружен и запущен, но проблема в том, что сценарий должен ссылка на параметр конфигурации агента, например MSBuildTools15.0_x64_Path. Если бы я использовал встроенные скрипты, к параметру можно было бы получить доступ через %MSBuildTools15.0_x64_Path%.

Есть ли способ получить доступ к этим переменным, не объявляя их как среду? Я знаю, что если бы это было в контексте среды, было бы просто вызвать ${env:MSBuildTools15.0_x64_Path} в скрипте, но я бы предпочел не объявлять те же самые вещи повторно, если есть правильный способ сделать это.

1 Ответ

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

Как упоминалось в постаноте , проблема заключалась в размахе. Переменные агента не видны сценарию, поскольку он выполняется в области закрытия. Это означает, что вы должны явно отправить ему переменные. Как я это сделал, я определил param в начале сценария PowerShell, как вы обычно хотели бы это:

param ([string] $MSBuildPath)

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

powerShell {
    formatStderrAsError = true
    scriptMode = file {
        path = "path\to\file.ps1"
    }
    param("jetbrains_powershell_scriptArguments", """-MSBuildPath "%MSBuildTools15.0_x86_Path%"""")
}

Я пытался использовать args[0] без именованных параметров, но вы действительно не знаете положение параметра без попытки и ошибки, потому что TeamCity добавляет кучу других аргументов.

...