Jenkins/Hudson CLI API使用Groovy修改节点标签

vic*_*rgp 9 java groovy hudson jenkins

有谁知道如何以非手动方式修改Jenkins/Hudson节点标签?我的意思是,通过这个工具提供的CLI API之类的API(当然不需要重新启动Jenkins/Hudson).

我的猜测是,最好的选择是使用Groovy脚本进入Jenkins/Hudson内核.执行类似的事情:

java -jar -s HUDSON_URL:8080 groovy /path/to/groovy.groovy

作为该脚本的内容类似于:

for (aSlave in hudson.model.Hudson.instance.slaves) {
   labels = aSlave.getAssignedLabels()
   println labels
   **aSlave.setLabel("blabla")** // this method doesn't exist, is there any other way???
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

胜利者

Pat*_* M. 8

注意:其他答案有点旧,所以可能是API从那时起出现了.

节点标签在API中作为单个字符串进行访问,就像在"配置"屏幕中一样.

读取和写入标签:Node.getLabelString()Node.setLabelString(String).

请注意,您还可以通过以下方式获取有效标签:Node.getAssignedLabels(),它返回LabelAtom的Collection,其中包含动态计算的标签,例如'self-label'(表示节点名称本身).

最后,Node类上的这些方法也可以从slave对象直接访问,例如作为System Groovy Script:

hudson = hudson.model.Hudson.instance
hudson.slaves.findAll { it.nodeName.equals("slave4") }.each { slave -> 
  print "Slave  $slave.nodeName : Labels: $slave.labelString"
  slave.labelString = slave.labelString + " " + "offline"
  println "   --> New labels: $slave.labelString"
}
hudson.save()
Run Code Online (Sandbox Code Playgroud)

  • `hudson.model.Hudson.instance.save()` (2认同)

小智 1

我还没有找到改变奴隶标签的方法。

我已经开始编辑主 config.xml 文件并从 CLI 发出重新加载。

但这有它自己的问题 - 当前运行的任何作业都会丢失,直到下一次 jenkins 重新启动 - 请参阅https://issues.jenkins-ci.org/browse/JENKINS-3265