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

时间:2019-10-25 09:55:13

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy jenkins-cli

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

1 个答案:

答案 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()