最近有人从我们的Jenkins实例中删除了一个文件夹。我们能够从最近的备份中恢复作业,并将其应用回服务器上的jenkins_home文件夹中。我们知道从磁盘重新加载这些作业的唯一方法是单击“从磁盘重新加载配置”按钮(Jenkins-> Manage Jenkins)。由于我们的服务器有成千上万的作业,而且性能还不如...足够花了10个小时以上才能从磁盘重新加载整个文件夹和作业配置。
今天,我在this question的一个简单的常规脚本中找到了一个答案,该脚本讨论了从磁盘加载单个作业see answer。谢谢Andreas Panagiotidis!稍作修改,您就可以加载所有包含字符串(“ 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();
}
}
仅需几秒钟即可运行,该文件夹中的所有作业都已恢复。