2011-11-03 41 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() } 

} 
}