it-swarm.com.de

Gibt es eine Möglichkeit, den Arbeitsbereich von Jenkins zu bereinigen?

Wie kann ich den Arbeitsbereich in Jenkins bereinigen? Ich benutze AccuRev als Versionskontrolle.

Ich habe freestyle Projekte in Jenkins erstellt.

55
Karthik

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 .

77
Nagendra Singh

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" .  screenshot

36
rogerdpack

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:

  1. Melden Sie sich bei Jenkins an (PuTTY)  enter image description here
  2. cd zum Installationspfad von Jenkins

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/
  1. listen Sie die Ordnerbereiche auf

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

  1. Löschen Sie alte Build- oder andere große Ordner

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

 enter image description here

19
Kevin Li

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")
  }
}
9
Upen

Arbeitsbereich-Bereinigungs-Plugin

In Jenkins-Datei hinzufügen

cleanWs()

Dadurch wird der Arbeitsbereich gelöscht, nachdem der Build abgeschlossen ist

2
waranlogesh

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 

1
Keir

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")

1
achschneid

Antworten

rm -rf /var/jenkins_home/workspaces/*

Erläuterung

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.

0

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/*
0
aleb