Есть ли способ получить доступ к системным свойствам TeamCity в скрипте Powershell?

я пытаюсь настроить новую конфигурацию сборки в TeamCity, используя бегунок Powershell. Тем не менее, я могуПохоже, что в скрипте сборки нет способа получить доступ к системным свойствам TeamCity. Я'Видел намеки, что это возможно, но не могу найти документацию о том, как это сделать.

Я попытался получить доступ к системным свойствам с помощью синтаксиса переменной Powershell, $ variable. Я также распечатал все переменные в памяти и не вижу переменных teamcity для использования.

Возможно ли это с помощью раннера Powershell, и если да, то какой синтаксис необходим для его работы?

 Matthias17 авг. 2017 г., 15:34
Ответ в соответствии с названиемВот.

Ответы на вопрос(4)

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

Это'мне пришло в голову написать psake-оптимизированный сборщик, которыйделает, но в то же время вы можете сделать одно из следующих действий:

явным образом сопоставьте любые свойства сборки TeamCity с параметрами сценария, используя расширение параметра, которое 'Доступно в поле «Источник сценария». например.\build.ps1 -someParam:%build.name%

использовать параметры среды, к которым можно получить явный доступ в PowerShell, используя$env:NAME_IN_TEAMCITY syntaxнапример,$env:TEAMCITY_VERSION, или зациклен и вставлен в переменную область видимости

получить доступ к файлу свойств сборки, который TeamCity делает доступным во время сборки. Файл доступен по адресу$env:TEAMCITY_BUILD_PROPERTIES_FILEи если вы загрузите версию XML,Довольно легко пройти через все и вставить их в область видимости (хотя вы, конечно, получаете все как строку). Я выложил суть о том, как это сделать (https://gist.github.com/piers7/6432985). Или, если вы используете Psake, измените приведенный выше скрипт так, чтобы он возвращал вам хеш-таблицу, которую вы можете передать непосредственно Psake 'аргумент s -свойства.

который будет передавать через системные параметры параметры, объявленные в скрипте Powershell. Это'не идеально (если вы положите@ в вашем источнике он сломается) но он работает для того, что мне нужно, вы можете найти его здесь:https://gist.github.com/anonymous/ef60ada3f48f0fb25093

как передать системные свойства в скрипт PSake:

& .\psake.ps1 -parameters @{build_number=%build.number%; personal_build=%build.is.personal%}

Если вы неИспользуя Psake, вы можете определить свои переменные следующим образом:

$build_number = %build.number%

%build.number% часть будет заменена данными, предоставленными TeamCity. Я думаю, это работает только вИсходный код режим ввода скрипта.

 Aleš Roubíček09 нояб. 2012 г., 08:49
Я предпочитаю этот путь, потому что мои сценарии могут быть отделены от Teamcity или другой среды.
 Paul09 нояб. 2012 г., 00:49
Спасибо за этот ответ. Это будет очень полезно в случае, если я использую режим ввода Script в TeamCity.
Решение Вопроса

такие как build.number (вы можете увидеть их список в TeamCity).

В Powershell вы можете получить доступ к переменным среды, используяокр "провайдер»например,

$env:PATH

Переменные TeamCity доступны путем замены. с _, поэтому переменная build.number может быть доступна как

$env:build_number
 alansiqueira2704 дек. 2015 г., 14:20
@ Маркус Является ли этот синтаксис правильным? скопируйте $ env: system_teamcity_build_checkoutDir \ chromedriver.exe $ env: system_teamcity_build_tempDir
 Paul09 нояб. 2012 г., 00:47
Спасибо, это работает. Я немного зациклился на попытке заставить работать Системные свойства, но переменные окружения отлично работают для моих нужд прямо сейчас. Я'я не уверен, что мне вообще нужны Системные Свойства сейчас.
 Elfalem16 нояб. 2017 г., 17:52
Похоже, некоторые параметры отбрасываютсистема» префикс. например%system.build.vcs.number% на самом деле .$env:build_vcs_number
 sirdank27 нояб. 2018 г., 18:19
Это не сработало для меня.$env:build_number Внутри моего PowerShell исходный код всегда был пустым. Teamcity, однако, был готов заменить%build.number% непосредственно в моем исходном коде powershell с моим желаемым значением.

Ваш ответ на вопрос