Teamcity和Rake:tc系统属性在哪里?

Teamcity和Rake:tc系统属性在哪里?,teamcity,rake,Teamcity,Rake,我正在将一些NAnt构建脚本转换为rake。有人知道如何访问我的rake脚本中的系统属性(例如build.number)吗?Teamcity rake插件甚至给它们注射了吗?我好像找不到文件了。请参阅文件清单。在rake脚本和ruby代码中,这些变量可通过环境获得,例如,将其添加到rakefile: puts 'Build number: ' + ENV['BUILD_NUMBER'] 如果要查看所有可用属性,请输入以下代码: ENV.each {|key, value| puts "#{ke

我正在将一些NAnt构建脚本转换为rake。有人知道如何访问我的rake脚本中的系统属性(例如build.number)吗?Teamcity rake插件甚至给它们注射了吗?我好像找不到文件了。

请参阅文件清单。在rake脚本和ruby代码中,这些变量可通过环境获得,例如,将其添加到rakefile

puts 'Build number: ' + ENV['BUILD_NUMBER']
如果要查看所有可用属性,请输入以下代码:

ENV.each {|key, value| puts "#{key} = #{value}" }
从TeamCity运行构建并检查日志,在所有消息模式下,您将看到可用的属性

如果要传递TeamCity中可用的或在agent.conf文件中定义的某些其他属性,应将其添加到Web UI中Rake配置的属性和环境变量选项卡中

例如,您希望传递在agent.conf文件中定义的system.CUSTOM属性。单击添加新变量链接,指定自定义变量作为名称,指定系统自定义变量作为值。现在在rakefile中,您可以通过ENV['CUSTOM']访问它


因此,如果您需要的属性不在已作为环境变量传递的预定义属性列表中,则可以通过环境传递它们。

我想我已经找到了更好的方法来处理这个问题。如果安装gem java_属性,则向rakefile添加以下代码:

props = JavaProperties::Properties.new(ENV["TEAMCITY_BUILD_PROPERTIES_FILE"])
现在您将拥有一个包含所有系统属性的哈希(减去前导的“system”)

希望这有帮助


准确地说,这是一个很好的解决方案。看到我的博客了吗@