从master中检索Jenkins节点变量

时间:2015-01-21 15:12:33

标签: jenkins environment-variables slave

所以我的google-fu失败了,Jenkins O'Reilly的书也没有帮助。

我有一个带有主节点和20多个节点的Jenkins设置。我在节点上大量使用自定义环境变量,因为它们中的许多都执行类似的任务,只是略有不同的平台。

我现在的位置是我有一个在主服务器上运行的工作(必要时),它需要知道任何给定节点的某些节点属性,包括我设置的一些环境变量。

有没有办法参考这些?我的替代方案似乎是在master1中以node1_var1,node2_var1,node1_var2,node2_var2等形式拥有数百个环境变量,这看起来很混乱。主人清楚地了解变量,因为变量的配置已完成,但我找不到在工作中指定变量的方法。

任何帮助(或嘲笑并指出明显的答案)都非常感谢...

1 个答案:

答案 0 :(得分:1)

这是一个简单的Groovy脚本,它打印每个slave的环境变量列表:

for (slave in jenkins.model.Jenkins.instance.slaves) {
  println(slave.name + ": ")
  def props = slave.nodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
  for (prop in props) {
    for (envvar in prop.envVars) {
      println envvar.key + " -> " + envvar.value
    }
  }
}

警告:我不是一位经验丰富的Groovy程序员,所以我可能没有使用Groovy的相应习语。

您可以从Jenkins script console运行此功能以进行试验。您还可以运行一个" System Groovy Script"作为构建步骤。以上两者都需要Groovy plugin。如果您不在工作中使用Groovy,则可以使用此脚本编写一个属性文件,您可以在构建的实际工作部分中加载该文件。