Следующий скрипт groovy удалит все сборки, кроме 10 самых последних сборок каждого задания, настроенного в Jenkins.
import jenkins.model.*
import hudson.model.*
Jenkins.instance.getAllItems(AbstractItem.class).each {
def job = jenkins.model.Jenkins.instance.getItem(it.fullName)
if (job!=null){
println "job: " + job;
int i = 1;
job.builds.each {
def build = it;
if (i<=10){
println "build: " + build.displayName + " will NOT BE DELETED";
}else{
println "build: " + build.displayName + " will BE DELETED";
it.delete();
}
i = ++i
}
}
};
Первый цикл будет перебирать все элементы Jenkins и будет сохранять его в задании var,Если задание не является заданием Jenkins, результат может быть нулевым, поэтому проверка if (job!=null)
позволяет выполнить код только для заданий Jenkins.
int i = 1;
- это инициализация счетчика длякаждое задание, которое увеличивается при обнаружении сборки. Насколько я знаю, порядок сборки сохраняется, и самая последняя сборка возвращается первой в цикле. Когда счетчик достигает 10 или более, if..else
входит в блок else
и удаляет сборку it.delete()