Wie kann ich den Arbeitsbereich in Jenkins bereinigen? Ich benutze AccuRev
als Versionskontrolle.
Ich habe freestyle
Projekte in Jenkins erstellt.
Es gibt eine Möglichkeit, den Arbeitsbereich in Jenkins zu bereinigen. Sie können den Arbeitsbereich vor oder nach dem Erstellen bereinigen.
Installieren Sie zuerst Workspace Cleanup Plugin .
So bereinigen Sie den Arbeitsbereich vor dem Erstellen: Aktivieren Sie unter Build Environment das Kontrollkästchen Delete workspace before build starts.
So bereinigen Sie den Arbeitsbereich nach dem Build: Wählen Sie unter der Überschrift Aktionen nach dem Build Arbeitsbereich löschen, wenn der Build abgeschlossen ist aus dem Dropdown-Menü Postbuild-Aktionen hinzufügen .
Wenn Sie es manuell bereinigen möchten, ist für mich mit meiner Version von Jenkins (ich habe anscheinend kein zusätzliches Plugin installiert, aber wer weiß) einen Link "Arbeitsbereich" in der linken Spalte. Klicken Sie auf Ihr Projekt. dann auf "workspace", dann erscheint in der linken Spalte unter dem Link "Wischen Sie den aktuellen Workspace aus" .
Neben den oben genannten Lösungen gibt es einen "gemeinsamen" Weg: Direktes Löschen des größten Speicherplatzverbrauchers von der Linux-Maschine Sie können den folgenden Schritten folgen:
Mit ls -lart auch versteckte Ordner auflisten, normalerweise jenkin Die Installation befindet sich im Ordner .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
, um Speicherplatz auf hoher Ebene anzuzeigen
du -sh ./*/
, um den Gesamtspeicher für jeden Unterordner im aktuellen .__ aufzulisten. Pfad.
du -a /etc/ | sort -n -r | head -n 10
listet die Top 10 Verzeichnisse auf Speicherplatz in/etc/essen
Normalerweise kann der Ordner ./job/ oder ./workspace/ der größte Ordner sein Mappe. Bitte gehen Sie rein und löschen Sie die Basis nach Bedarf (NICHT den gesamten Ordner löschen).
rm -rf theFolderToDelete
Sie können das folgende Skript in der Manage Jenkins → Scripts Console ausführen, um die Arbeitsbereiche aller Jobs auf einmal zu löschen. Wir haben dies getan, um Speicherplatz im Dateisystem zu bereinigen.
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")
}
}
Arbeitsbereich-Bereinigungs-Plugin
In Jenkins-Datei hinzufügen
cleanWs()
Dadurch wird der Arbeitsbereich gelöscht, nachdem der Build abgeschlossen ist
Sie müssen dieses Plugin installieren, bevor die oben genannten Optionen angezeigt werden
Arbeitsbereich-Bereinigungs-Plugin
Dieses Plugin fügt das Kontrollkästchen allen Jobkonfigurationen hinzu, damit Sie den gesamten Arbeitsbereich löschen können, bevor Schritte (einschließlich Quellcodeverwaltung) ausgeführt werden
Dies ist nützlich, um sicherzustellen, dass Sie immer von einem bekannten Punkt aus starten, um sicherzustellen, dass Ihr Build ausgeführt wird
darf nicht kommentieren, deshalb:
Die Antwort von Upen funktioniert gut, aber nicht, wenn Sie Pipeline-Jobs von Jenkins mit Freestyle-Jobs gemischt haben. Es gibt keine Methode wie DoWipeWorkspace für Pipeline-Jobs. Also habe ich das Skript geändert, um diese zu überspringen:
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")
}
}
sie können bei Bedarf auch nach Jobnamen filtern: item.getDisplayName().toLowerCase().contains("release")
rm -rf /var/jenkins_home/workspaces/*
Sie können das Verzeichnis /var/jenkins_home/workspace
bereinigen, indem Sie einzelne Arbeitsbereiche darin entfernen. Es ist sicher, den Arbeitsbereich für einen bestimmten Jenkins-Job zu entfernen, solange der Job derzeit nicht ausgeführt wird. Sie können alle Arbeitsbereiche mit entfernen:
rm -rf /var/jenkins_home/workspaces/*
Wenn Sie alle Arbeitsbereiche außer einem oder zwei entfernen müssen, können Sie mit grep eine Whitelist erstellen:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Wenn Sie einen gezielteren Ansatz bevorzugen, können Sie Arbeitsbereiche in absteigender Reihenfolge nach Größe auflisten:
du -d 1 /var/jenkins_home/workspace | sort -n -r | head -n 10
Und lösche sie einzeln.
Hinweis: Ich gehe davon aus, dass $JENKINS_HOME
auf den Standardwert gesetzt ist: /var/jenkins_home
.
Angenommen, die Frage bezieht sich auf die Bereinigung des Arbeitsbereichs des aktuellen Jobs. Sie können Folgendes ausführen:
test -n "$WORKSPACE" && rm -rf $WORKSPACE/*