Wie setze ich die Build-Nummer in Jenkins zurück?


88

Ich benutze Jenkins und Gradle, um mein Java-Projekt zu erstellen.

Jedes Mal, wenn ich mein Projekt erstelle, wird auf dem Jenkins-Bildschirm eine neue Build-Nummer angezeigt.

Das Folgende sind meine Jenkins Build-Informationen:

Success > Console Output  #96   03-Jan-2014 15:35:08    
Success > Console Output  #95   03-Jan-2014 15:27:29     
Failed > Console Output  #94    03-Jan-2014 15:26:16     
Failed > Console Output  #93    03-Jan-2014 15:25:01     
Failed > Console Output  #92    03-Jan-2014 15:23:50     
Success > Console Output  #91   03-Jan-2014 12:42:32    
Success > Console Output  #90   03-Jan-2014 12:02:45

Ich möchte die Jenkins-Build-Nummer wie folgt zurücksetzen:

Success > Console Output  #1    03-Jan-2014 12:02:45

Wie kann ich die Build-Nummer in Jenkins zurücksetzen?

Antworten:


158

Kann einfacher über die groovige Skriptkonsole erledigt werden. Gehen Sie zu http: // your-jenkins-server / script. Geben Sie im Skriptfenster Folgendes ein:

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)

6
oder über clijava -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
ykhrustalev

3
Dies ist definitiv die beste Antwort. Sie brauchen nicht einmal die Löschschleife, wenn Sie nur die Nummer einstellen möchten.
Nick

Aus irgendeinem Grund führt dies nur das Löschen beim letzten Build durch, jedoch hat Folgendes für mich funktioniert: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

Eine Noob-Frage .. woher ich den genauen Jobnamen kenne.
Ammar Mujeeb

@AmmarMujeeb Gehen Sie zu Ihrem Jenkins-Dashboard und Sie sehen dort den Jobnamen. Sie können auch unter /var/lib/jenkins/jobs/Linux gehen und der Name des Verzeichnisses dort ist der genaue
Jobname

62

Von hier aus

Wenn Ihr Hudson-Job FooBar heißt,

  • Benennen Sie FooBar in FooBar-Copy um
  • Erstellen Sie einen neuen Job mit dem Namen FooBar mit der Option "Vorhandenen Job kopieren" in FooBar-Copy
  • FooBar-Copy löschen

35
  • Löschen Sie zuerst den Arbeitsbereich und entfernen Sie frühere Builds.
    • Navigieren Sie auf dem Server zum Jobverzeichnis, z. 'var / lib / jenkins / jobs / myJob' löscht den Arbeitsbereich und erstellt Verzeichnisse sowie alle Abfragedateien, lastSuccessful-, lastStable-Dateien usw. Sie sollten nur config.xml und lastBuildNumber haben.
    • Fahren Sie Jenkins mit so etwas wie Service Jenkins herunter
    • Bearbeiten Sie die Datei nextBuildNumber und fügen Sie 1 anstelle der aktuellen Build-Nummer ein
    • Starten Sie Jenkins erneut, Service Jenkins starten
    • Loggen Sie sich in Jenkins ein und gehen Sie zu Ihrem Job und klicken Sie auf Build. Sollte mit dem Bau von Job Nr. 1 beginnen

1
Das war sehr hilfreich. Vielen Dank.

22

Wenn Sie die nächste Build-Nummer festlegen möchten, gibt es dafür das Plugin "NextBuildNumber". Dies funktioniert in Ihrem Fall jedoch nicht, da die von Ihnen benötigte Build-Nummer (1) geringer ist als Ihre aktuelle Build-Nummer.

Hier müssen zuerst alle vorherigen Builds gelöscht werden. Sie können dies tun, indem Sie dieses einfache Skript ausführen. Gehen Sie zu -> Jenkins verwalten -> Skriptkonsole

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

Jetzt können Sie die nächste Build-Nummer auf 1 setzen und den Build ausführen. Es beginnt mit 1 . :) So einfach ist das.

Update - Jenkins verfügt jetzt über ein Plugin zum Löschen des Auftragsverlaufs, um dies auf einfachste Weise zu erledigen. Weitere Informationen finden Sie auf der Seite unter https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

Um Ihre Build-Nummer allgemeiner auf zurückzusetzen N(wobei Nnicht unbedingt 1 ist):

  • Löschen Sie alle vorhandenen Builds wo buildNumber >= N.
  • Bearbeiten Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Stellen Sie die darin enthaltene Nummer auf ein N.
  • Wählen Sie unter Jenkins die Option aus Manage Jenkins -> Reload Configuration from Disk.


6

Um die akzeptierte Antwort zu erweitern, gehen Sie wie folgt für alle Projekte gleichzeitig vor:

Jenkins.instance.allItems.each() { 
  item -> item.builds.each() { 
    build -> build.delete()
  }
  item.updateNextBuildNumber(1)
}  

4

Als Erweiterung der hervorragenden Antwort von @ antweiss können wir sogar noch weiter gehen ...

Es ist nicht erforderlich, den vollständigen Build-Verlauf zu löschen. Wenn Sie dies nicht möchten, können Sie die Zeit einfach auf einen früheren Punkt zurücksetzen:

resetNumberTarget = 14
item = Jenkins.instance.getItemByFullName("Project Name [from project Dashboard]")
//println(item)

item.builds.each() { build ->
  //println(build)
  //println(build.number)

  if(build.number >= resetNumberTarget)
  {
    //println("About to Delete '" + build + "'")    
    build.delete()  
  }
}

item.updateNextBuildNumber(resetNumberTarget)

Wenn Sie einen Dummy-Lauf wünschen, um zu überprüfen, was er tun soll, ohne es tatsächlich zu tun, kommentieren Sie einfach die Zeilen und aus build.delete()und kommentieren Sie item.updateNextBuildNumber(resetNumberTarget)die verschiedenen Druckbefehle aus.


Dokumentation: Details dieser Objekte waren schwer zu finden, aber ich habe Folgendes identifiziert:


1

Sie können entweder ein nexBuildNumberPlug-In verwenden oder einfach die nexBuildNumberDatei ändern , um die Build-Nummer zurückzusetzen. Im Folgenden sind die Schritte aufgeführt, die Sie ausführen müssen:

  • Gehen Sie zu .jenkins/Jobs/<YourJobName>/build/, sichern Sie diesen Ordner (falls Sie ihn für die zukünftige Verwendung benötigen) und löschen Sie den Build- Ordner.

Hinweis: Sobald Sie alte Builds bereinigen, verlieren Sie Build-Historien und diese sind im Jenkins-Dashboard nicht mehr verfügbar.

  • Laden Sie die Konfiguration neu (Jenkins -> Jenkins verwalten).
  • Setzen Sie die nächste Build-Version auf 1, indem Sie entweder das Plug-In "Nächste Build-Nummer" verwenden oder die nextBuildNumberDatei in Ihrem Job-Verzeichnis ändern.

0

Ich habe einen einfachen Weg gefunden, dies zu tun.

  1. Wischen Sie Ihren Arbeitsbereich aus.
  2. Gehen Sie zu jedem Build, der auf Jenkins gespeichert wurde, und löschen Sie ihn.
  3. Setzen Sie die Build-Nummer auf 1 und erstellen Sie dann.

Jenkins verwendet den vorherigen Build, um die nächste Build-Nummer zu bestimmen. Wenn die von Ihnen eingegebene Build-Nummer niedriger als die vorherige Build-Nummer ist, erhöht Jenkins Ihre Build-Nummer automatisch auf einen höheren Wert als den vorherigen Build. Also hier haben wir einfach


-1

So setzen Sie die Build-Nummern aller Jobs zurück:

Jenkins.instance.getAllItems(AbstractProject.class).each {
    item = Jenkins.instance.getItemByFullName(it.fullName)
    //THIS WILL REMOVE ALL BUILD HISTORY
    item.builds.each() { build ->
        build.delete()
    }
    item.updateNextBuildNumber(1)
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.