我正在将我的一些NAnt构建脚本转换为rake。有谁知道如何在我的rake脚本中访问系统属性(例如build.number)? Teamcity rake插件是否注入了它们?我似乎无法找到doco。
答案 0 :(得分:6)
请参阅predefined properties列表。在rake脚本和ruby代码中,这些变量可以通过环境获得,例如在 rakefile 中添加:
puts 'Build number: ' + ENV['BUILD_NUMBER']
如果要查看所有可用属性,请输入以下代码:
ENV.each {|key, value| puts "#{key} = #{value}" }
从TeamCity运行构建并检查日志,在所有消息模式下,您将看到可用的属性。
如果要传递TeamCity中可用的或在agent.conf文件中定义的其他属性,则应将其添加到 Rake的属性和环境变量选项卡中Web UI中的配置。
例如,您希望传递 agent.conf 文件中定义的 system.CUSTOM 属性。点击添加新变量链接,将 CUSTOM 指定为名称,将%system.CUSTOM%指定为值。现在在 rakefile 中,您可以将其作为 ENV ['CUSTOM'] 进行访问。
因此,如果它们不在已作为环境变量传递的预定义属性的列表中,则通过环境传递所需的属性。
答案 1 :(得分:2)
我想我找到了一种更好的方法来解决这个问题。如果安装gem java_properties,则将以下代码添加到rakefile:
props = JavaProperties::Properties.new(ENV["TEAMCITY_BUILD_PROPERTIES_FILE"])
现在你将拥有一个包含所有系统属性的哈希(减去领先的'系统')。
希望这有帮助。
标记