2011-11-03 10 views
29

Używam Jenkinsa do wykonywania codziennych zadań z moimi projektami, ale każda egzekucja, Jenkins przechowuje katalog 20MB w PROJECT_HOME/builds, więc po wielu egzekucjach przestrzeń na dysku każdego projektu jest ogromny (10 GB dla niektórych zadań Jenkins).Wolne miejsce w Jenkinsie usuwając katalog 'buildów'

Nie jest dla mnie ważne przechowywanie wyniku poprzednich wykonań, więc chcę wiedzieć, że jeśli istnieje sposób, aby powiedzieć Jenkins nie, aby przechowywać te informacje.

Czy ktoś wie, jak uniknąć Jenkinsa, aby zapisać wyniki starych egzekucji?

+0

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

Odpowiedz

39

Jeśli przejdziesz do strony konfiguracji projektu, znajdziesz pole wyboru "Odrzuć stare budowle". Włączenie tej opcji pozwala określić zarówno liczbę dni przechowywania kompilacji, jak i maksymalną liczbę buildów do zachowania.

+0

W moim przypadku, Nie mogłem zmienić konfiguracji z powodu braku wolnego miejsca, więc musiałem wejść do systemu i ręcznie usunąć stare kompilacje. – ThomasW

+0

BTW, jeszcze tego nie używałem, ale znalazłem wtyczkę umożliwiającą konfigurację, która pozwala określić # kompilacji, aby zachować (itp) we wszystkich kompilacjach na maszynie Jenkins, z jednej lokalizacji https: // wiki. jenkins-ci.org/display/JENKINS/Configuration + Slicing + Plugin –

+1

@jwernerny Po zaznaczeniu tego, jak zmusić go do wykonania operacji odrzutów? – Carlos

5

Jeśli chodzi o mnie, zauważyłeś, że skończyło Ci się miejsce, gdy wystąpił błąd kompilacji, a następnie chcesz wyczyścić niektóre starsze wersje, aby zwolnić trochę miejsca. Najpierw zmień konfigurację tak, aby odrzuciła stare kompilacje, o czym wspomniał jwernerny. Będziesz wtedy musiał uruchomić kompilację, aby uruchomić oczyszczanie starszych wersji. Kompilacja może się nie powieść z powodu braku wolnego miejsca, ale teraz należy przeprowadzić czyszczenie poinstalacyjne i odrzucić starsze wersje.

20

Jeśli chcesz, aby Jenkins odrzucić wszystkie stare buduje bez konieczności ponownego uruchamiania wszystkie wersje następnie można uruchomić ten kawałek skryptu pochodzący z 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) 
    } 
} 

Uwaga: aby uruchomić skrypt na Jenkins ciebie można przejść do konsoli skryptów http://<server>/jenkins/script. Więcej informacji na temat konsoli tutaj: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Script+Console

-1

Uważam, że to naprawdę nie jest dobre, aby usunąć foldery samemu.

Pozwolić specjalistom. Czy próbowałeś już Discard Old Builds Plugin?

„można skonfigurować tak, jak wyrzucić buduje bardziej szczegółowo niż domyślnie«Odrzuć Starego Budowanie»funkcji. Inne niż # z buduje i dzień, można określić budować statusu do odrzucenia/zachować. Dla starszych buduje , możesz można skonfigurować interwał do utrzymania kompilacji (raz na miesiąc, raz na dziesięć kompilacji ...). Możesz także użyć rozmiaru pliku logu, aby zdecydować, czy usunąć starą kompilację . "

1

Go skonfigurować w projekcie.

1

Od Jenkins Scriptler konsoli uruchomić poniżej groovy skrypt, aby usunąć wszystkie kompilacje zadań wymienionych w widoku

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

} 
} 
Powiązane problemy