【发布时间】:2014-01-16 23:37:03
【问题描述】:
我正在将我的一些 NAnt 构建脚本转换为 rake。有谁知道如何访问我的 rake 脚本中的系统属性(例如 build.number)? Teamcity rake 插件甚至会注入它们吗?我似乎找不到文档。
【问题讨论】:
我正在将我的一些 NAnt 构建脚本转换为 rake。有谁知道如何访问我的 rake 脚本中的系统属性(例如 build.number)? Teamcity rake 插件甚至会注入它们吗?我似乎找不到文档。
【问题讨论】:
请参考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 属性。点击 Add new variable 链接,指定 CUSTOM 作为名称,指定 %system.CUSTOM% 作为值。现在,您可以在 rakefile 中以 ENV['CUSTOM'] 的身份访问它。
因此,如果您需要的属性不在已作为环境变量传递的预定义属性列表中,那么我们的想法是通过环境传递您需要的属性。
【讨论】:
我想我找到了更好的方法来处理这个问题。如果您安装 gem java_properties,则将以下代码添加到您的 rakefile:
props = JavaProperties::Properties.new(ENV["TEAMCITY_BUILD_PROPERTIES_FILE"])
您现在将拥有一个包含所有系统属性的哈希(减去前导“系统”)。
希望这会有所帮助。
标记
【讨论】: