
При использовании слейвов в дженкинсе, всегда есть вероятность что какая-то из нод, — отпадет из-за какой-то из причин (Например: проблемы с сетью; закрылся порт). А если это ПРОД сервер и там должны собираться проекты. То за некоторый промежуток времени у вас может собраться большое количество выключенных машин.
Полезное чтиво:
Установка Jenkins и Jenkins-slave в Unix/Linux
Автосборка Java проектов через Jenkins в Unix/Linux
Разграничение прав доступа в Jenkins
Мониторинг места на сервере через Jenkins
Изменить/Поменять пароль для пользователя Jenkins
Создание Jenkins backup/restore в Unix/Linux
Автосборка Java проектов через Jenkins в Unix/Linux
Я нашел пару решений как это можно сделать. Покажу на наглядных примера как мне удалось убить больше 1.5к зомби-нод.
Удалить все Jenkins offline nodes
Так, одним из способов удалить все офлайн-хосты — это выполнить груви-скрипт через дженкинс консоль. Для этого, нужно зологиниться в сам дженкинс, затем кликнуть по «Manage Jenkins» и перейти в «script Console»:

В само поле со скриптом, вставить:
Closure query = { it.name ==~ /^.*$/ }
Closure action = {
println('====================')
println("Name: ${it.name}")
println("LabelString: ${it.labelString}")
println("NumExectutors: ${it.numExecutors}")
println("RemoteFS: ${it.remoteFS}")
println("Mode: ${it.mode}")
println("RootPath: ${it.rootPath}")
println("Offline: ${it.computer.offline}")
if (it.computer.offline) {
println("Deleting node: ${it.name}")
it.computer.doDoDelete()
}
}
Jenkins.instance.slaves.findAll(query).each(action)
return
Нажимаем на «RUN» и если много хостов, — это занимает некоторое время. Данный пример — полностью использовался на ПРОД серверах компании где работаю.
Удалить все Jenkins offline slaves
Проверил другой подход скрипта на груви. Полностью рабочий вариант. Чтобы удалить все офлайн-слейвы, нужно зологиниться в сам дженкинс, затем кликнуть по «Manage Jenkins» и перейти в «script Console»:

В само поле со скриптом, вставить:
for (aSlave in hudson.model.Hudson.instance.slaves) {
if (aSlave.getComputer().isOffline()) {
aSlave.getComputer().setTemporarilyOffline(true,null);
aSlave.getComputer().doDoDelete();
}
}
Нажимаем на «RUN» и если много хостов, — это занимает некоторое время. Данный пример — полностью использовался на ПРОД серверах компании где работаю.
Мне данные решения помогли и они полностью рабочие. Еси будут еще идеи чем можно дополнить — обязательно дополню данную тему.
Вот и все, статья «Удалить все Jenkins offline nodes/slaves в Unix/Linux» завершена.