删除 Jenkins 中的构建历史记录

opi*_*ike 1 groovy jenkins

我正在尝试使用此答案中的说明从 Jenkins 删除构建历史记录:

如何清除我的 Jenkins/Hudson 构建历史记录?

但是,我收到以下错误消息:

groovy.lang.MissingMethodException:没有方法签名:jenkins.branch.OrganizationFolder.getBuilds() 适用于参数类型:() 值:[] 可能的解决方案:getViews()、doBuild(jenkins.util.TimeDuration)、getUrl( ), getClass(), getActions(), getApi() 在 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58) 在 org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java :49)在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)在org.codehaus。 groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)

如果我运行这个脚本:

def jobName = "github-test"
def job = Jenkins.instance.getItem(jobName)
println(job)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

jenkins.branch.OrganizationFolder@134f3a3c[github-test]

我使用的是2.32.2版本。

这是我运行的确切脚本:

def jobName = "github-test"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Run Code Online (Sandbox Code Playgroud)

Jon*_*n S 5

您尝试删除的作业github-test是一个组织文件夹,例如您得到jenkins.branch.OrganizationFolder。这意味着它不是具有实际构建的实际作业,而是包含其他作业的文件夹。值得注意的是,OrganizationFolder它的类型ComputedFolder意味着当 Jenkins 发现新的存储库和分支(在 github 上)时,它会自动填充。

所以我猜测您不想从作业/文件夹中的子作业中删除所有构建github-test。我修改了链接的答案,以便它考虑文件夹:

import com.cloudbees.hudson.plugins.folder.AbstractFolder
import hudson.model.AbstractItem

// change this variable to match the name of the job whose builds you want to delete
def jobName = "test"
// Set to true in order to reset build number to 1
def resetBuildNumber = false

def removeBuilds(job, resetBuildNumber) {
  if (job instanceof AbstractFolder) {
    for (subJob in job.getItems()) {
      removeBuilds(subJob, resetBuildNumber)
    }
  } else if (job instanceof AbstractItem) {
    job.getBuilds().each { it.delete() }
    if (resetBuildNumber) {
      job.nextBuildNumber = 1
      job.save()
    }
  } else {
    throw new RuntimeException("Unsupported job type ${job.getClass().getName()}!")
  }
}
removeBuilds(Jenkins.instance.getItem(jobName), resetBuildNumber)
Run Code Online (Sandbox Code Playgroud)