我正在运行一个DSL脚本,该脚本打印Jenkins中所有连接的节点,并为每个节点设置从站上的Git工具位置。
import hudson.tools.*
import hudson.slaves.*
import jenkins.model.Jenkins
def jenkins = Jenkins.instance
def computers = jenkins.slaves
computers.each{
println "${it.displayName} ${it.nodeName}"
it.labelString = "blabla"
println "${it.labelString}"
def gitToolDescriptor = Jenkins.getInstance().getDescriptor("hudson.plugins.git.GitTool")
def toolLocation = new ToolLocationNodeProperty.ToolLocation(gitToolDescriptor, " ", "/usr/bin/git")
def toolLocationProperty = new ToolLocationNodeProperty(toolLocation as List)
it.nodeProperties.add(toolLocationProperty)
it.save()
}
通过Jenkins UI检查Node configuration时,路径位置已正确设置。不过,似乎路径未正确更新,因为当我尝试在从属服务器上克隆存储库时,会得到:
/ usr / local / git / bin / git rev-parse --is-inside-work-tree#timeout = 10
我必须返回到节点配置,然后手动按“保存”按钮,然后路径会正确更新。
/ usr / bin / git rev-parse refs / remotes / origin /
欢迎提供任何线索!
答案 0 :(得分:0)
同时已解决。也许将来会帮助别人。问题是我得到的所有从属对象都是SwarmSlave
类型,因此我必须首先进行类型安全的强制转换Node slave = it.asNode()
。还有宾果!