webentwicklung-frage-antwort-db.com.de

Wie lösche ich meine Jenkins/Hudson-Build-Historie?

Ich habe kürzlich die Konfiguration eines meiner Hudson-Builds aktualisiert. Der Buildverlauf ist nicht synchron. Gibt es eine Möglichkeit, meine Build-Historie zu löschen?

Bitte und Danke

71
myusuf3

Wenn Sie auf Hudson verwalten/Konfiguration von Datenträger neu laden klicken, lädt Hudson alle Daten des Erstellungsprotokolls neu.

Wenn die Daten auf der Festplatte fehlerhaft sind, müssen Sie in das Verzeichnis% HUDSON_HOME%\jobs\< projectname > wechseln und die Build-Verzeichnisse wie erwartet wiederherstellen. Laden Sie dann die Konfigurationsdaten erneut.

Wenn Sie lediglich fragen, wie Sie den gesamten Build-Verlauf entfernen können, können Sie die Builds einfach über die Benutzeroberfläche löschen, wenn nur wenige vorhanden sind, oder das Verzeichnis% HUDSON_HOME%\jobs\< projectname > aufrufen und löschen Sie alle Unterverzeichnisse dort - sie entsprechen den Builds . Starten Sie anschließend den Dienst neu, damit die Änderungen wirksam werden.

44
William Leara

Verwenden Sie die Skriptkonsole (Manage Jenkins> Script Console) und so etwas wie dieses Skript, um den Build-Verlauf eines Jobs massenweise zu löschen. Https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy

Bei diesem Skript wird davon ausgegangen, dass Sie nur eine Reihe von Builds löschen möchten. Um alle Builds für einen bestimmten Job zu löschen, verwenden Sie diese (getestet):

// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)

job.getBuilds().each { it.delete() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
91
rjohnston

Diese Antwort gilt für Jenkins

  1. Gehen Sie zu Ihrer Jenkins-Startseite → Jenkins verwaltenSkriptkonsole

     Enter image description here

  2. Führen Sie dort das folgende Skript aus. copy_folder in your project name ändern

Code:

def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()

Mein Post

57

Hier ist eine weitere Option: Löschen Sie die Builds mit cURL.

$ curl -X POST http://jenkins-Host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll

Das obige löscht Build # 1 bis # 56 für den Job myJob.

Wenn die Authentifizierung für die Jenkins-Instanz aktiviert ist, müssen ein Benutzername und ein API-Token folgendermaßen bereitgestellt werden:

$ curl -u userName:apiToken -X POST http://jenkins-Host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll

Das API-Token muss von der Seite /me/configure in Jenkins abgerufen werden. Klicken Sie einfach auf die Schaltfläche "API-Token anzeigen", um sowohl den Benutzernamen als auch das API-Token anzuzeigen.

Edit: Man muss möglicherweise doDeleteAll durch doDelete in den obigen URLs ersetzen, damit dies funktioniert, je nach Konfiguration oder verwendeter Version von Jenkins.

18
Erwan Legrand

Sie können die Projektkonfiguration vorübergehend ändern, um nur den letzten Build zu speichern, die Konfiguration neu zu laden (dies sollte die alten Builds verwerfen), und dann die Konfigurationseinstellung erneut auf den gewünschten Wert ändern.

9
the_mandrill

So löschen Sie ALLE ERSTELLUNGEN FÜR ALLE JOBS ...... mit dem Jenkins-Scripting.

def jobs = Jenkins.instance.projects.collect { it } 
jobs.each { job -> job.getBuilds().each { it.delete() }} 
8
ort11

Wenn Sie die Script Console-Methode verwenden, verwenden Sie stattdessen die folgenden, um zu berücksichtigen, ob Jobs in Ordnercontainern gruppiert werden. 

def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)

oder

def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
1
RampantBadger

Das Löschen direkt aus dem Dateisystem ist nicht sicher. Sie können das folgende Skript ausführen, um alle Builds aus allen Jobs (rekursiv) zu löschen.

def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
  if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
    println it.name
    builds = it.getBuilds()
    for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
        builds.get(i).delete()
      println "Deleted" + builds.get(i)
    }
  }
}```
1
Aytunc Beken

Gehen Sie zum %HUDSON_HOME%\jobs\<projectname> remove builds-Verzeichnis, entfernen Sie lastStable, lastSuccessful-Links und entfernen Sie die nextBuildNumber-Datei.

Gehen Sie nach den oben genannten Schritten von der Benutzeroberfläche zu dem folgenden Link
Jenkins-> Jenkins verwalten -> Konfiguration neu laden 

Es wird tun, was Sie brauchen

1
Manish Agrawal

Eine weitere einfache Methode zum Bereinigen von Builds ist das Hinzufügen des alten Plugins nach Beendigung Ihrer Jobs. Legen Sie eine maximale Anzahl von Builds zum Speichern fest und führen Sie den Job dann erneut aus: 

https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin

1

Wenn Sie den Build-Verlauf von MultiBranchProject (z. B. Pipeline) löschen möchten, gehen Sie auf der Jenkins-Startseite → Jenkins verwalten → Skriptkonsole und führen Sie das folgende Skript aus:

def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
  def job = it
  job.getBuilds().each { it.delete() }
  job.nextBuildNumber = 1
  job.save()
}
0
Marin Ivanov

Skriptkonsole verwenden.

Wenn die Jobs gruppiert sind, können Sie entweder einen vollständigen Namen mit Schrägstrich angeben: 

getItemByFullName("folder_name/job_name") 
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()

oder durchlaufen Sie die Hierarchie wie folgt:

def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
0
ATrubka

Navigieren Sie zu: %JENKINS_HOME%\jobs\jobName

Öffnen Sie die Datei "nextBuildNumber" und ändern Sie die Nummer. Laden Sie anschließend die Jenkins-Konfiguration neu. Hinweis: Die Datei "nextBuildNumber" enthält die nächste Build-Nr., Die von Jenkins verwendet wird.

0
Nitish

Dies ist die beste verfügbare Option.

Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }

Dieser Code löscht den gesamten Jenkins Job-Build-Verlauf.

0
Rahul khanvani