Jak mogę wyczyścić obszar roboczy w Jenkins? Używam AccuRev
jako narzędzia kontroli wersji.
Tworzyłem freestyle
projekty w Jenkins.
Odpowiedzi:
Istnieje sposób na wyczyszczenie obszaru roboczego w Jenkins. Możesz wyczyścić obszar roboczy przed lub po kompilacji.
Najpierw zainstaluj wtyczkę Workspace Cleanup .
Aby wyczyścić obszar roboczy przed budowaniem: W obszarze Środowisko kompilacji zaznacz pole o treści Usuń obszar roboczy przed rozpoczęciem kompilacji.
Aby wyczyścić obszar roboczy po kompilacji: W sekcji Akcje po kompilacji wybierz Usuń obszar roboczy po zakończeniu kompilacji z menu rozwijanego Dodaj działania po kompilacji .
Jeśli chcesz to ręcznie wyczyścić, dla mnie z moją wersją jenkins (nie wydawało się, że potrzebowałem zainstalowanej dodatkowej wtyczki, ale kto wie), w lewej kolumnie znajduje się link "obszar roboczy", kliknij swój projekt, następnie w „obszarze roboczym”, a następnie łącze „Wyczyść bieżący obszar roboczy” pojawi się pod nim w lewej kolumnie.
Oprócz powyższych rozwiązań istnieje bardziej „WSPÓLNY” sposób - bezpośrednie usunięcie największego konsumenta przestrzeni kosmicznej z komputera z systemem Linux. Możesz wykonać poniższe kroki:
Używając ls -lart, aby wyświetlić również ukryte foldery, zwykle instalacja jenkin jest umieszczana w folderze .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
aby pokazać miejsce na dysku na wysokim poziomie
du -sh ./*/
aby wyświetlić całkowitą pamięć dla każdego podfolderu w bieżącej ścieżce.
du -a /etc/ | sort -n -r | head -n 10
wyświetli listę 10 katalogów zajmujących najwięcej miejsca na dysku w / etc /
Zwykle folder ./job/ lub ./workspace/ może być największym folderem. Wejdź do środka i usuń bazę, jeśli potrzebujesz (NIE usuwaj całego folderu).
rm -rf theFolderToDelete
Wtyczka do czyszczenia obszaru roboczego
W pliku Jenkins dodaj
cleanWs()
Spowoduje to usunięcie obszaru roboczego po zakończeniu kompilacji
cleanWs()
nie było ich na stronie docelowej wtyczki jako składnia do dodania do mojego Jenkinsfile
.
WAŻNY: Bezpieczne jest usunięcie obszaru roboczego dla danego zadania Jenkins, o ile zadanie nie jest aktualnie uruchomione!
UWAGA: Zakładam, że twój $JENKINS_HOME
jest ustawiony na domyślny:/var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Ten używa grep do utworzenia białej listy:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Ten używa du i sort, aby wyświetlić obszary robocze w kolejności od największego do najmniejszego. Następnie używa głowy, aby złapać pierwsze 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Możesz uruchomić poniższy skrypt w Manage Jenkins → Scripts Console, aby usunąć obszary robocze wszystkich zadań za jednym razem. Zrobiliśmy to, aby wyczyścić miejsce w systemie plików.
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
nie wolno komentować, dlatego:
Odpowiedź z Upen działa dobrze, ale nie, jeśli masz Jenkins Pipeline Jobs i Freestyle Jobs. Nie ma takiej metody jak DoWipeWorkspace w Pipeline Jobs. Więc zmodyfikowałem skrypt, aby pominąć te:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding() && !(item instanceof WorkflowJob))
{
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
W razie potrzeby możesz również filtrować według nazw stanowisk:
item.getDisplayName().toLowerCase().contains("release")
Będziesz musiał zainstalować tę wtyczkę, zanim pojawią się wymienione powyżej opcje
Wtyczka do czyszczenia obszaru roboczego
Ta wtyczka dodaje pole wyboru do wszystkich konfiguracji zadań, aby umożliwić usunięcie całego obszaru roboczego przed uruchomieniem jakichkolwiek kroków (w tym kontroli źródła)
Jest to przydatne, aby upewnić się, że zawsze zaczynasz od znanego punktu, aby zagwarantować, jak będzie działać kompilacja
Jest taka możliwość. Konfiguruj -> Działania po kompilacji
Ta opcja jest dostępna domyślnie przynajmniej w wersji Jenkins 2.236
Jeśli chcesz po prostu usunąć jeden katalog (lub plik), możesz użyć Groovy i Manage Jenkins → Scripts Console, uruchom skrypt, który go usunie.
Na przykład możesz spojrzeć na pliki z:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
A potem, gdy masz folder, w którym chcesz usunąć dh
, możesz po prostu dołączyć następny kod:
dh.deleteDir()
I zostanie usunięty.
Uwaga: ścieżka pokazana w przykładzie dotyczy instalacji Bitnami Jenkins, Twoja może być inna.