我不能编写脚本并更改已存在的节点(非主节点)上的执行程序数。最好通过使用groovy,但如果有插件或CLI命令可以做的也很有趣。
我想要做的片段:
jenkins.model.Jenkins.instance.nodes.each { node ->
println node.getNumExecutors()
//How do I set the number of executors for a node?
}
目前这不可能 - Jenkins节点的numExecutors
属性是只读的。
[
setNumExecutors
]故意是private
,因为Jenkins没有提供改变SlaveComputer
或Slave
一旦创建的执行者数量的方法。相反,您更改配置,意味着替换现有的Slave
。
您可以运行下面的脚本来修改Jenkins config.xml文件...然后只需在Manage Jenkins中“从磁盘重新加载配置”。
这适用于http://jenkins:8080/script控制台。
import groovy.xml.XmlUtil
// the path to your jenkins config.xml
filePath = '/opt/sites/.jenkins/config.xml'
fileContents = new File(filePath).text
def config = new XmlSlurper().parseText(fileContents)
config.slaves[0].slave.each {
it.numExecutors = 5
}
def writer = new FileWriter(filePath)
XmlUtil.serialize(config, writer)
如果要自动重新加载配置,可以添加:
Jenkins.instance.reload()
您无法通过Jenkins API更改从属服务器上的执行程序数量,这非常痛苦。您必须删除从站并重新创建它以更改执行程序的数量,因此您需要确保首先在从站上没有运行构建。
以自动方式执行此操作的另一个选项是在Jenkins CLI中使用create-slave和delete-slave命令(转到Jenkins实例中的/ cli链接以获取CLI文档)。