2011-11-03 31 views
29

我使用Jenkins来执行我的项目的日常任务,但是每次执行Jenkins都会在PROJECT_HOME/builds中存储20MB目录,所以经过很多处理后,空间在每个项目的磁盘是巨大的(一些詹金斯任务10GB)。Jenkins中的可用空间删除'builds'目录

对我来说,存储先前执行的结果并不是非常重要,所以我想知道的是,如果存在一种方法来说詹金斯不存储这些信息。

有谁知道如何避免詹金斯存储旧执行结果?

+0

http://stackoverflow.com/a/42220002/6549532 –

回答

39

如果您进入项目的配置页面,您会发现一个标记为“放弃旧版本”的复选框。启用此功能可以指定保留构建的天数以及要保留的构建的最大数量。

+0

在我的情况下,上市工作,由于缺乏可用空间,我实际上无法更改配置,因此我必须启动系统并手动删除旧版本。 – ThomasW

+0

顺便说一句,我还没有使用过,但我刚刚发现了配置切片插件,可以让您从一个位置 https:// wiki指定在整个Jenkins机器上保留(等)的构建数量。詹金斯慈。org/display/JENKINS/Configuration + Slicing + Plugin –

+1

@jwernerny一旦你勾选了,你如何强制它做丢弃操作? – Carlos

5

如果像我一样,你只注意到当你的构建失败时你已经用完了空间,那么你将需要清除一些较旧的版本来释放一些空间。首先按照jwernerny的说法改变配置以废弃旧版本,然后您需要开始构建以触发清理旧版本。由于缺乏可用空间,构建可能会再次失败,但现在应该运行后构建清理并丢弃较旧的构建。

20

如果你想詹金斯丢弃所有旧的构建,而无需重新运行所有作品,那么你可以运行该位脚本从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) 
    } 
} 

注:对詹金斯运行脚本可以去脚本控制台http://<server>/jenkins/script。 有关在这里的控制台更多信息:https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console

-1

其实我认为这并不是真的很好删除自己的文件夹。

让专家来做。你试过Discard Old Builds Plugin了吗?

“您可以配置丢弃建立更详细比 默认‘丢弃旧的构建’功能。除了排名,构建和天, 你可以指定构建状态丢弃/保持。对于年龄较大的构建,你 可以配置时间间隔来保持构建(每月一次,每十次构建一次...)。还可以使用日志文件大小来决定是否删除旧的 构建。“

1

转到您的项目配置。

1

从詹金斯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() } 

} 
}