我想从脚本控制台中删除保存在文件夹中的所有作业的旧版本,而不是从Jenkins单个作业配置中删除旧版本,以丢弃旧版本。我只想保留最近的10个版本,并删除较旧的版本。我要问的是删除特定文件夹的旧版本,而不是其他文件夹中的其他作业。
答案 0 :(得分:1)
以下groovy脚本将删除除Jenkins中配置的每个作业的最新10个构建之外的所有构建。
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项目并将其存储在job var下。如果作业不是Jenkins作业,则结果可以为null,因此进行if (job!=null)
检查以允许代码仅针对Jenkins作业进行。
int i = 1;
是每个作业的计数器的初始化,在找到内部版本时递增。据我所知,将保留构建顺序,并在循环中首先返回最新的构建。当计数器达到10或更多时,if..else
进入else
块并删除构建it.delete()