2011-11-03 24 views
29

Uso Jenkins per eseguire attività quotidiane con i miei progetti, ma ogni esecuzione, Jenkins memorizza una dir di 20 MB in PROJECT_HOME/build, quindi dopo un sacco di esecuzioni, lo spazio nel disco di ogni progetto è enorme (10 GB per alcune attività di Jenkins).Spazio libero in Jenkins Eliminazione directory 'build'

Non è molto importante per me memorizzare il risultato delle precedenti esecuzioni, quindi quello che voglio sapere è che se esiste un modo per dire a Jenkins no di memorizzare quell'informazione.

Qualcuno sa come evitare a Jenkins di archiviare il risultato di vecchie esecuzioni?

+0

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

risposta

39

Se si accede alla pagina di configurazione del progetto, viene visualizzata una casella denominata "Elimina vecchie build". L'attivazione di questa opzione ti consente di specificare sia il numero di giorni di conservazione delle build che il numero massimo di build da conservare.

+0

Nel mio caso, Non è stato possibile modificare la configurazione a causa della mancanza di spazio libero, quindi ho dovuto installare il sistema e cancellare manualmente le vecchie build. – ThomasW

+0

BTW, non l'ho ancora usato, ma ho appena trovato il plug-in Slicing di configurazione che consente di specificare il numero di build da conservare (etc) su tutti i build sulla macchina Jenkins, da una posizione https: // wiki. Jenkins-ci.org/display/JENKINS/Configuration + Slicing + Plugin –

+1

@jwernerny Dopo averlo spuntato, come si impone di eseguire l'operazione di eliminazione? – Carlos

5

Se come me, si è notato solo che si era a corto di spazio quando si è verificato un errore di compilazione, quindi si desidera eliminare alcune delle versioni precedenti per liberare spazio. Per prima cosa cambia la configurazione per scartare le vecchie build come menzionato da jwernerny, dovrai quindi iniziare una build per attivare la pulizia delle versioni precedenti. La creazione potrebbe fallire nuovamente a causa della mancanza di spazio libero, ma la pulizia post-build dovrebbe ora essere eseguita e scartare le versioni precedenti.

20

Se si vuole fare Jenkins scartare tutti i vecchi costruisce senza dover ri-eseguire tutti costruisce quindi è possibile eseguire questo pezzo di sceneggiatura tratta dal 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) 
    } 
} 

Nota: per eseguire lo script su Jenkins voi può andare alla console di script http://<server>/jenkins/script. Ulteriori informazioni sulla console qui: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console

-1

In realtà penso che non sia veramente buono eliminare le cartelle da solo.

Lascia fare agli specialisti. Hai provato ancora Discard Old Builds Plugin?

"È possibile configurare come scartare costruisce in modo più dettagliato rispetto alla funzione default 'Scarta Vecchio costruire'. Oltre ° costruisce e giorni, è possibile specificare costruire lo stato di scartare/mantenere. Per le versioni precedenti build , è possibile configurare l'intervallo per mantenere le build (una volta al mese, una volta su dieci build.) È anche possibile utilizzare la dimensione del file di registro per decidere se eliminare una vecchia build . "

1

andare a Configura nel progetto.

1

Da Jenkins Scriptler console eseguire lo script di seguito Groovy per eliminare tutte le generazioni di posti di lavoro di cui alla vista

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() } 

} 
}