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?

Sivakumar M.
quelle

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)
Antweiss
quelle
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
MokaT
quelle
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
jasonoriordan
quelle
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

Amol Manthalkar
quelle
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.
c32hedge
quelle
Stellen
Issues.jenkins-ci.org/browse/JENKINS-32984
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)
}  
zb226
quelle
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:

Brondahl
quelle
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.
Anni S.
quelle
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

Mai Quân Nguyễn
quelle
-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)
}
GRK
quelle