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"])
Теперь у вас будет хеш, в котором есть все системные свойства (за исключением лидирующей "системы").
Надеюсь это поможет.
отметка