Недавно кто-то удалил папку из нашего экземпляра Jenkins. Мы смогли восстановить задания из недавней резервной копии и применить их обратно в папку jenkins_home на сервере. Единственный известный нам способ перезагрузить эти задания с диска — нажать кнопку «Обновить конфигурацию с диска» (Jenkins->Manage Jenkins). Поскольку на нашем сервере тысячи заданий, а производительность не... э... достаточна, потребовалось более 10 часов, чтобы перезагрузить всю папку и конфигурацию задания с диска.
Сегодня я нашел ответ в простом отличном скрипте из этот вопрос, в котором говорилось о загрузке одного задания см. ответ с диска. Спасибо Андреасу Панайотидису! С небольшой модификацией вы можете загрузить все задания, содержащие строку ("somestring"):
import java.io.InputStream;
import java.io.FileInputStream
import java.io.File;
import javax.xml.transform.stream.StreamSource
def hudson = hudson.model.Hudson.instance;
for(job in hudson.model.Hudson.instance.items) {
if (job.name.toLowerCase().contains("somestring")) {
def configXMLFile = job.getConfigFile();
def file = configXMLFile.getFile();
InputStream is = new FileInputStream(file);
job.updateByXml(new StreamSource(is));
job.save();
}
}
Это заняло всего несколько секунд, и все задания в этой папке были восстановлены.