2016-02-15 2 views
3

Я не смогу выполнить скрипт и изменить количество исполнителей на узле (а не ведущем), который уже существует. Предпочтительно использовать groovy, но если есть плагин или команда CLI, которая могла бы сделать трюк, который также интересен.Изменить количество исполнителей на существующем узле Дженкинса по сценарию

Отрывок из того, что я пытаюсь сделать:

jenkins.model.Jenkins.instance.nodes.each { node -> 
    println node.getNumExecutors() 

    //How do I set the number of executors for a node? 
} 

ответ

1

Это в настоящее время не возможно - numExecutors свойство узла Дженкинс только для чтения.

JENKINS-23534 От:

[setNumExecutors] намеренно private так Дженкинс не предлагает способ изменить количество исполнителей в SlaveComputer или Slave однажды созданного. Вместо этого вы меняете конфигурацию, то есть заменяете существующий Slave.

0

Весьма болезненно, что вы не можете изменить количество исполнителей на подчиненном устройстве через API Jenkins. Вам нужно будет удалить ведомое устройство и воссоздать его, чтобы изменить количество исполнителей, поэтому вам нужно убедиться, что в подчиненном устройстве сначала нет сборок.

Другой способ сделать это автоматическим способом - использовать команды create-slave и delete-slave в Jenkins CLI (перейдите по ссылке/cli в экземпляре Jenkins для документации CLI).

0

Вы можете запустить скрипт ниже, чтобы изменить файл config.xml Jenkins ... затем просто «Обновить конфигурацию с диска» в «Управление 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() 
Смежные вопросы