我不能编写脚本并更改已存在的节点(非主节点)上的执行程序数。最好是使用groovy但是如果有插件或CLI命令可以做的话也很有趣。
我要做的事情的片段:
jenkins.model.Jenkins.instance.nodes.each { node ->
println node.getNumExecutors()
//How do I set the number of executors for a node?
}
答案 0 :(得分:1)
目前还没有 - Jenkins节点的numExecutors
属性是只读的。
[
setNumExecutors
]故意private
,因为Jenkins没有提供更改SlaveComputer
或Slave
创建者执行者数量的方法。相反,您可以更改配置,这意味着替换现有的Slave
。
答案 1 :(得分:1)
您可以运行下面的脚本来修改Jenkins config.xml文件......然后只需#34;从磁盘重新加载配置"在管理詹金斯。
这适用于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()
答案 2 :(得分:0)
您无法通过Jenkins API更改从属服务器上的执行程序数量,这非常痛苦。您必须删除从站并重新创建它以更改执行程序的数量,因此您需要确保首先在从站上没有运行构建。
以自动方式执行此操作的另一个选项是在Jenkins CLI中使用create-slave和delete-slave命令(转到Jenkins实例中的/ cli链接以获取CLI文档)。
答案 3 :(得分:0)
我使用Slave(它是Node的子类)进行管理的
def nodes = nodesByLabel(target_label) // requires plugin "Pipeline Utility Steps"
def j = Jenkins.getInstanceOrNull();
for (int i = 0; i < nodes.size(); ++i) {
def aSlave = (Slave) j.getNode(nodes[i]) // here cast is needed
aSlave.setNumExecutors(target_executors.toInteger())
aSlave.save()
println aSlave.getDisplayName() + "-" + aSlave.getNumExecutors()
}
j.reload()