我正在使用Jenkins来执行我的项目的日常任务,但是每次执行时,Jenkins都会在 PROJECT_HOME / builds 中存储一个20MB的目录,所以经过大量的执行后,磁盘中的空间每个项目都很庞大(一些Jenkins任务需要10GB)。
对我来说存储以前执行的结果并不是很重要,所以我想知道的是,如果存在一种说Jenkins no来存储该信息的方法。
有人知道如何避免Jenkins存储旧执行的结果吗?
答案 0 :(得分:47)
如果您进入项目的配置页面,您会找到一个标有“Discard Old Builds”的复选框。启用此选项后,您可以指定保留构建的天数和要保留的最大构建数。
答案 1 :(得分:24)
如果你想让Jenkins丢弃所有旧版本而不必重新运行所有版本,那么你可以运行从http://scriptlerweb.appspot.com/script/show/85001获取的这段脚本:
def jobs = Hudson.instance.items
jobs.findAll{it.logRotator}.each {
println("JOB : "+ it.name)
try {
println(it.logRotator.perform(it))
} catch (Exception e) {
println("It didn't work: "+ e)
}
}
注意:要在Jenkins上运行脚本,您可以转到脚本控制台http://<server>/jenkins/script
。
有关控制台的更多信息,请访问:https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console
答案 2 :(得分:5)
如果像我一样,你只是注意到当你的构建失败时你的空间已经用完了,那么你会想要清理一些旧版本以释放一些空间。首先更改配置以丢弃旧版本,如jwernerny所述,然后您需要启动构建以触发旧版本的清理。由于缺少可用空间,构建可能会再次失败,但现在应该运行构建后清理并丢弃旧版本。
答案 3 :(得分:2)
转到项目中的配置。
答案 4 :(得分:1)
从Jenkins Scriptler控制台运行以下groovy脚本以删除视图下列出的所有作业构建
import jenkins.model.Jenkins
hudson.model.Hudson.instance.getView('<ViewName>').items.each() {
println it.fullDisplayName
def jobname=it.fullDisplayName
def item = hudson.model.Hudson.instance.getItem(jobname)
def build = item.getLastBuild()
if (item.getLastBuild() !=null)
{
Jenkins.instance.getItemByFullName(jobname).builds.findAll { it.number <= build.getNumber() }.each { it.delete() }
}
}
答案 5 :(得分:-1)
实际上我认为自己删除文件夹并不是很好。
让专家来做。你有没有试过Discard Old Builds Plugin?
&#34;您可以更详细地配置如何丢弃构建 默认&#39;丢弃旧版本&#39;功能。除了构建和天数, 您可以指定构建状态以丢弃/保留。对于旧版本,您 可以配置间隔以保持构建(一个月一次,十分之一 建立...)。您还可以使用日志文件大小来决定是否删除旧的 建立&#34;