Come resettare il numero di build in jenkins?


90

Sto usando Jenkins e Gradle per costruire il mio progetto Java.

Ogni volta che costruisco il mio progetto, ottengo un nuovo numero di build sullo schermo di Jenkins.

Di seguito sono riportate le informazioni sulla build di Jenkins:

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

Voglio reimpostare il numero di build di Jenkins come:

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

Come posso reimpostare il numero di build in Jenkins?

Risposte:


161

Può essere fatto più facilmente dalla console di script groovy. Vai a http: // your-jenkins-server / script Nella finestra dello script inserisci:

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

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

3
Questa è sicuramente la risposta migliore. Non hai nemmeno bisogno del ciclo di cancellazione se vuoi solo impostare il numero.
Nick

Per qualche motivo questo esegue l'eliminazione solo sull'ultima build, tuttavia per me ha funzionato quanto segue: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN

Una domanda da noob ... come faccio a sapere il nome esatto del lavoro.
Ammar Mujeeb

@AmmarMujeeb vai alla tua dashboard Jenkins e vedrai il nome del lavoro lì. Puoi anche andare /var/lib/jenkins/jobs/su Linux e il nome della directory è il nome esatto del lavoro
rickrizzo

62

Da qui

Dato che il tuo lavoro in Hudson si chiama FooBar,

  • rinominare FooBar in FooBar-Copy
  • creare un nuovo lavoro denominato FooBar, utilizzando l'opzione "Copia lavoro esistente", da FooBar-Copia
  • eliminare FooBar-Copy

35
  • Primo spazio di lavoro cancellabile e sbarazzarsi delle build precedenti.
    • Sul server, vai alla directory del lavoro es. 'var / lib / jenkins / jobs / myJob' elimina lo spazio di lavoro e le directory di compilazione così come tutti i file di polling, lastSuccessful, lastStable ecc. Dovresti avere solo config.xml e lastBuildNumber.
    • Spegni jenkins usando qualcosa come il servizio jenkins stop
    • Modifica il file denominato nextBuildNumber , inserendo 1 al posto del numero di build corrente
    • Avvia di nuovo jenkins, inizia il servizio jenkins
    • Accedi a jenkins e vai al tuo lavoro e premi build. Dovrebbe iniziare a costruire il lavoro n. 1

1
Questo è stato molto utile. Grazie.

23

Se vuoi impostare il numero di build successivo, c'è il plugin "NextBuildNumber" per quello. Ma questo non funzionerà nel tuo caso perché il numero di build di cui hai bisogno, che è 1, è inferiore al tuo numero di build corrente.

Qui è necessario prima eliminare tutte le build precedenti. Puoi farlo eseguendo questo semplice script Vai a -> Gestisci Jenkins -> Console di script

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

Ora puoi impostare il numero di build successivo su 1 ed eseguire la build. Inizierà con 1 . :) È così semplice.

Aggiornamento: Jenkins ora ha un plug-in Purge Job History per farlo nel modo più semplice. Controlla la pagina per maggiori dettagli: https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin


6

Per reimpostare più in generale il numero di build su N(dove Nnon è necessariamente 1):

  • Elimina tutte le build esistenti dove buildNumber >= N.
  • Modifica Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Imposta il numero che contiene N.
  • Da Jenkins, seleziona Manage Jenkins -> Reload Configuration from Disk.

Assicurati di leggere questo difetto prima di selezionare "Ricarica configurazione da disco" - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500

6

Espandendo la risposta accettata, ecco come farlo per tutti i progetti contemporaneamente:

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

4

Come estensione dell'eccellente risposta di @ antweiss, possiamo effettivamente andare oltre ...

Non è necessario eliminare l'intera cronologia build, se non lo desideri, puoi semplicemente tornare indietro nel tempo, a un punto precedente:

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)

Se si desidera una dummy run, per controllare quello che sta per fare, senza in realtà farlo, semplicemente commentare le build.delete()e item.updateNextBuildNumber(resetNumberTarget)linee e rimuovere i vari comandi di stampa.


Documentazione: i dettagli di questi oggetti erano difficili da trovare, ma ho identificato quanto segue:


1

È possibile utilizzare il nexBuildNumberplug-in o semplicemente modificare il nexBuildNumberfile per ripristinare il numero di build. Di seguito sono riportati i passaggi da eseguire:

  • Vai a .jenkins/Jobs/<YourJobName>/build/, esegui il backup di questa cartella (se necessario per un utilizzo futuro) ed elimina la cartella build .

Nota: una volta ripulite le vecchie build, perdi le cronologie delle build e non sono più disponibili sul dashboard di Jenkins.

  • Ricarica la configurazione (Jenkins -> Gestisci Jenkins).
  • Imposta la versione build successiva su 1 utilizzando il plug-in Next Build Number o modificando il nextBuildNumberfile nella directory del lavoro.

0

Ho trovato un modo semplice per farlo.

  1. Elimina il tuo spazio di lavoro.
  2. Vai a ciascuna build salvata su Jenkins ed eliminala.
  3. Imposta il numero di build su 1 quindi build.

Jenkins utilizza la build precedente per determinare il numero di build successivo, se il numero di build inserito è inferiore al numero di build precedente, Jenkins aumenterà automaticamente il numero di build a un valore superiore a quello della build precedente. Quindi eccoci qui



-1

Per ripristinare i numeri di build di tutti i lavori:

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)
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.