Частичная перезагрузка задания с диска без перезагрузки всего сервера

Недавно кто-то удалил папку из нашего экземпляра 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();         
    }      
} 

Это заняло всего несколько секунд, и все задания в этой папке были восстановлены.


person g_m_o_n_e_y    schedule 03.10.2018    source источник