Jenkins为所有作业删除比最新20版本更早的版本

Fad*_*adi 6 bash groovy jobs jenkins

我正在清理Jenkins(它设置不正确),我需要删除比每个作业最新的20个版本更旧的版本.

有没有办法使用脚本或其他东西自动化?

我找到了许多解决方案来删除特定作业的某些构建,但我似乎无法一次找到所有作业的任何内容.

任何帮助深表感谢.

Dav*_*her 15

您可以使用Jenkins脚本控制台迭代所有作业,获取最近N个列表并对其他作业执行某些操作.

import jenkins.model.Jenkins
import hudson.model.Job

MAX_BUILDS = 20

for (job in Jenkins.instance.items) {
  println job.name

  def recent = job.builds.limit(MAX_BUILDS)

  for (build in job.builds) {
    if (!recent.contains(build)) {
      println "Preparing to delete: " + build
      // build.delete()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Jenkins脚本控制台是一个很好的管理维护工具,并且通常有一个现有的脚本可以执行类似于您想要的操作.

  • 以下是 samrocketman 的一些示例脚本:https://github.com/samrocketman/jenkins-script-console-scripts (2认同)

Joh*_*Doe 8

No such property: builds for class: com.cloudbees.hudson.plugins.folder.Folder在运行 @Dave Bacher 的脚本时遇到了 Folders Plugin 6.6的问题

改变它以使用功能性api

import jenkins.model.Jenkins
import hudson.model.Job

MAX_BUILDS = 5
Jenkins.instance.getAllItems(Job.class).each { job ->
  println job.name
  def recent = job.builds.limit(MAX_BUILDS)
  for (build in job.builds) {
    if (!recent.contains(build)) {
      println "Preparing to delete: " + build
      build.delete()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)