从脚本控制台删除文件夹中所有作业的旧版本

问题描述 投票:0回答:1

我想从脚本控制台删除我保留在文件夹中的所有作业的旧版本,而不是从Jenkins个人作业配置中删除旧版本,以丢弃旧版本。我只想保留最近的10个版本,并删除较旧的版本。我要问的是删除特定文件夹的旧版本,而不是其他文件夹中的其他作业。

jenkins jenkins-pipeline jenkins-plugins jenkins-groovy jenkins-cli
1个回答
0
投票

以下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()


0
投票

这个问题已经被问过无数次,例如Jenkins delete builds older than latest 20 builds for all jobs

除了该答案之外,您要做的就是根据要清除的目录按名称过滤作业

© www.soinside.com 2019 - 2024. All rights reserved.