我想从脚本控制台删除我保留在文件夹中的所有作业的旧版本,而不是从Jenkins个人作业配置中删除旧版本,以丢弃旧版本。我只想保留最近的10个版本,并删除较旧的版本。我要问的是删除特定文件夹的旧版本,而不是其他文件夹中的其他作业。
以下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()
这个问题已经被问过无数次,例如Jenkins delete builds older than latest 20 builds for all jobs
除了该答案之外,您要做的就是根据要清除的目录按名称过滤作业