Teamcity and Rake: Где находятся свойства системы tc?

Я конвертирую некоторые из моих скриптов сборки NAnt в рейк. Кто-нибудь знает, как получить доступ к системным свойствам (например, build.number) внутри моих скриптов rake? Является ли плагин рейка Teamcity их инъекцией? Кажется, я не могу найти документ.

2 ответа

Решение

Пожалуйста, обратитесь к списку предопределенных свойств. В сценарии rake и в коде ruby ​​эти переменные доступны через окружение, например, добавьте это в файл rakefile:

puts 'Build number: ' + ENV['BUILD_NUMBER']

Если вы хотите увидеть все доступные свойства, поставьте следующий код:

ENV.each {|key, value| puts "#{key} = #{value}" }

Запустите сборку из TeamCity и проверьте журнал, в режиме " Все сообщения " вы увидите доступные свойства.

Если вы хотите передать какое-либо другое свойство, которое доступно в TeamCity или определено в файле agent.conf, вы должны добавить его на вкладке " Свойства" и "Переменные среды " конфигурации Rake в веб-интерфейсе пользователя.

Например, вы хотите передать свойство system.CUSTOM, определенное в файле agent.conf. Нажмите на ссылку Добавить новую переменную, укажите CUSTOM в качестве имени и %system.CUSTOM% в качестве значения. Теперь в rakefile вы можете получить к нему доступ как ENV ['CUSTOM'].

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

Я думаю, что нашел лучший способ справиться с этим. Если вы установите gem java_properties, то добавьте следующий код в ваш rakefile:

props = JavaProperties::Properties.new(ENV["TEAMCITY_BUILD_PROPERTIES_FILE"])

Теперь у вас будет хеш, в котором есть все системные свойства (за исключением лидирующей "системы").

Надеюсь это поможет.

отметка

Другие вопросы по тегам