从 master 检索 Jenkins 节点变量
Retrieving Jenkins node variables from master
所以我的 google-fu 让我失望了,Jenkins O'Reilly 的书也没有帮助。
我有一个带有主节点和 20 多个节点的 Jenkins 设置。我在节点上大量使用自定义环境变量,因为它们中的许多执行类似的任务,只是平台略有不同。
我现在的位置是我有一个在主节点上运行的作业(必要时),它需要知道任何给定节点的某些节点属性,包括我设置的一些环境变量向上。
有什么办法可以参考这些吗?我的替代方案似乎是在 master 中以 node1_var1、node2_var1、node1_var2、node2_var2 等形式拥有数百个环境变量,这看起来很乱。主人显然知道变量,因为这是完成它们的配置的地方,但我找不到在工作中指定它们的方法。
非常感谢任何帮助(或嘲笑和指出显而易见的答案)...
这是一个简单的 Groovy 脚本,它打印每个从站的环境变量列表:
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 in order to experiment. You can also run a "System Groovy Script" as a build step. Both of the above require the Groovy plugin 的这个。如果您在工作中不使用 Groovy,则可以使用此脚本编写一个属性文件,您可以将其加载到执行实际工作的构建部分。
所以我的 google-fu 让我失望了,Jenkins O'Reilly 的书也没有帮助。
我有一个带有主节点和 20 多个节点的 Jenkins 设置。我在节点上大量使用自定义环境变量,因为它们中的许多执行类似的任务,只是平台略有不同。
我现在的位置是我有一个在主节点上运行的作业(必要时),它需要知道任何给定节点的某些节点属性,包括我设置的一些环境变量向上。
有什么办法可以参考这些吗?我的替代方案似乎是在 master 中以 node1_var1、node2_var1、node1_var2、node2_var2 等形式拥有数百个环境变量,这看起来很乱。主人显然知道变量,因为这是完成它们的配置的地方,但我找不到在工作中指定它们的方法。
非常感谢任何帮助(或嘲笑和指出显而易见的答案)...
这是一个简单的 Groovy 脚本,它打印每个从站的环境变量列表:
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 in order to experiment. You can also run a "System Groovy Script" as a build step. Both of the above require the Groovy plugin 的这个。如果您在工作中不使用 Groovy,则可以使用此脚本编写一个属性文件,您可以将其加载到执行实际工作的构建部分。