节点工具位置无法在Jenkins中正确保存

时间:2019-01-17 09:01:46

标签: jenkins jenkins-plugins nodes slave

我正在运行一个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 /

欢迎提供任何线索!

1 个答案:

答案 0 :(得分:0)

同时已解决。也许将来会帮助别人。问题是我得到的所有从属对象都是SwarmSlave类型,因此我必须首先进行类型安全的强制转换Node slave = it.asNode()。还有宾果!