Comment réinitialiser le numéro de build dans jenkins?

J’utilise Jenkins et Gradle pour construire mon projet java.

Chaque fois que je construis mon projet, je reçois un nouveau numéro de build sur l’écran de Jenkins.

Ce qui suit est mon info de compilation 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 

Je veux réinitialiser le numéro de build Jenkins comme:

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

Comment puis-je réinitialiser le numéro de build dans Jenkins?

Merci d’avance.

Peut être plus facile à faire depuis la console de script groovy. Accédez à http: // your-jenkins-server / script Dans la fenêtre de script, entrez:

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

D’ ici

Étant donné que votre travail Hudson s’appelle FooBar,

  • renommer FooBar en FooBar-Copy
  • créer un nouveau travail nommé FooBar, en utilisant l’option “Copier le travail existant”, à partir de FooBar-Copy
  • supprimer FooBar-Copy
  • Premier espace de travail wipeout et se débarrasser des versions précédentes.
    • Sur le serveur, naviguez dans le répertoire de travail, par exemple. ‘var / lib / jenkins / jobs / myJob’ supprime l’espace de travail et les répertoires de compilation, ainsi que tous les fichiers d’interrogation, les fichiers lastSuccessful, lastStable, etc. Vous ne devriez avoir que config.xml et lastBuildNumber.
    • Arrêtez les jenkins en utilisant quelque chose comme le service jenkins stop
    • Editez le fichier appelé nextBuildNumber , en insérant 1 au lieu du numéro de build actuel
    • Redémarrez jenkins, service jenkins commence
    • Connectez-vous à jenkins et allez à votre travail et appuyez sur construire. Devrait commencer à construire le travail n ° 1

Si vous voulez définir le numéro de build suivant, il existe un plugin “NextBuildNumber” pour cela. Mais cela ne fonctionnera pas dans votre cas car le numéro de build dont vous avez besoin, qui est 1, est inférieur à votre numéro de build actuel.

Ici, vous devez d’abord supprimer toutes les versions précédentes. Vous pouvez le faire en exécutant ce script simple Allez dans -> Manage Jenkins -> Console de 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() } 

Vous pouvez maintenant définir le numéro de build suivant à 1 et exécuter la génération. Il commencera par 1 . 🙂 C’est si simple.

Mise à jour – Jenkins a maintenant un plugin Purge Job History pour que cela soit fait de la manière la plus simple. Consultez la page pour plus de détails – https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin

Pour plus généralement réinitialiser votre numéro de build à N (où N n’est pas nécessairement 1):

  • Supprimez toutes les versions existantes où buildNumber >= N
  • Editez les Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber . Définissez le nombre qu’il contient sur N
  • Depuis Jenkins, sélectionnez Manage Jenkins -> Reload Configuration from Disk .

En développant la réponse acceptée, voici comment procéder pour tous les projets en même temps:

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

Vous pouvez utiliser le plug-in nexBuildNumber ou simplement modifier le fichier nexBuildNumber pour réinitialiser le numéro de construction. Voici les étapes à effectuer:

  • Accédez à .jenkins/Jobs//build/ , sauvegardez ce dossier (si vous en avez besoin ultérieurement) et supprimez le dossier de compilation .

Remarque: Une fois les anciennes versions nettoyées, vous perdez les historiques de génération et elles ne sont plus disponibles sur le tableau de bord Jenkins.

  • Recharger la configuration (Jenkins -> Manage Jenkins).
  • Définissez la prochaine version de build sur 1 en utilisant le plug-in Next Build Number ou en modifiant le fichier nextBuildNumber dans le répertoire de votre job.

En prolongement de l’excellente réponse de @ antweiss, nous pouvons réellement aller plus loin …

Il n’est pas nécessaire de supprimer l’historique complet de la construction, si vous ne le souhaitez pas, vous pouvez simplement revenir en arrière, jusqu’à un point antérieur:

 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) 

Si vous voulez une exécution factice, pour vérifier ce que cela va faire, sans le faire, il vous suffit de commenter les build.delete() et item.updateNextBuildNumber(resetNumberTarget) et de décommenter les différentes commandes d’impression.


Documentation: Les détails de ces objects étaient difficiles à trouver, mais j’ai identifié les éléments suivants:

  • item est un FreeStyleProject (ou éventuellement tout type de projet abstrait ?)
  • build semble être un Run , exposant ainsi une propriété number et héritant d’une méthode delete () de Job

Pour réinitialiser les numéros de construction de tous les travaux:

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