¿Cómo restablecer el número de compilación en jenkins?

90

Estoy usando Jenkins y Gradle para construir mi proyecto java.

Cada vez que construyo mi proyecto, obtengo un nuevo número de construcción en la pantalla de Jenkins.

La siguiente es mi información de compilación de 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

Quiero restablecer el número de compilación de Jenkins como:

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

¿Cómo puedo restablecer el número de compilación en Jenkins?

Sivakumar M
fuente

Respuestas:

161

Se puede hacer más fácilmente desde la maravillosa consola de scripts. Vaya a http: // your-jenkins-server / script En la ventana de script ingrese:

item = Jenkins.instance.getItemByFullName("your-job-name-here")
//THIS WILL REMOVE ALL BUILD HISTORY
item.builds.each() { build ->
  build.delete()
}
item.updateNextBuildNumber(1)
Antweiss
fuente
6
o vía clijava -jar jenkins-cli.jar -s https://jenkins.example.com groovysh \ 'jenkins.instance.getItemByFullName("job-name").updateNextBuildNumber(1021)'
ykhrustalev
3
Esta es definitivamente la mejor respuesta. Ni siquiera necesita el bucle de eliminación si solo desea establecer el número.
Nick
Por alguna razón, esto solo realiza la eliminación en la última compilación, sin embargo, lo siguiente funcionó para mí: echo "deleting all builds of ${jobName}" item = Jenkins.instance.getItemByFullName("${jobName}") for (build in item.builds){ build.delete(); } item.updateNextBuildNumber(1)
BRNTZN
Una pregunta de novato ... ¿Cómo sé el nombre exacto del trabajo?
Ammar Mujeeb
@AmmarMujeeb vaya a su panel de Jenkins y verá el nombre del trabajo allí. También puede ir a /var/lib/jenkins/jobs/en Linux y el nombre del directorio es el nombre exacto del trabajo
rickrizzo
62

Desde aqui

Dado que su trabajo en Hudson se llama FooBar,

  • cambiar el nombre de FooBar a FooBar-Copy
  • cree un nuevo trabajo llamado FooBar, usando la opción 'Copiar trabajo existente', desde FooBar-Copy
  • eliminar FooBar-Copy
MokaT
fuente
35
  • Primero borre el espacio de trabajo y elimine las compilaciones anteriores.
    • En el servidor, vaya al directorio de trabajos, por ejemplo. 'var / lib / jenkins / jobs / myJob' borra el espacio de trabajo y crea directorios, así como cualquier archivo de sondeo, lastSuccessful, lastStable, etc. Solo debe tener config.xml y lastBuildNumber.
    • Apague jenkins usando algo como service jenkins stop
    • Edite el archivo llamado nextBuildNumber , insertando 1 en lugar del número de compilación actual
    • Inicie jenkins de nuevo, comience el servicio jenkins
    • Inicie sesión en jenkins, vaya a su trabajo y presione construir. Debería comenzar a construir el trabajo # 1
Jasonoriordan
fuente
1
Esto fue muy útil. Gracias.
23

Si desea establecer el siguiente número de compilación, hay un complemento "NextBuildNumber" para eso. Pero esto no funcionará en su caso porque el número de compilación que necesita, que es 1, es menor que su número de compilación actual.

Aquí es necesario eliminar primero todas las versiones anteriores. Puede hacer esto ejecutando este sencillo script Vaya a -> Administrar Jenkins -> Consola 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() }

Ahora puede establecer el siguiente número de compilación en 1 y ejecutar la compilación. Comenzará con 1 . :) Es así de simple.

Actualización: Jenkins ahora tiene un complemento Purgar historial de trabajos para hacer esto de la manera más fácil. Consulte la página para obtener más detalles: https://wiki.jenkins.io/display/JENKINS/Purge+Job+History+Plugin

Amol Manthalkar
fuente
6

Para restablecer de manera más general su número de compilación a N(donde Nno es necesariamente 1):

  • Elimine las compilaciones existentes donde buildNumber >= N.
  • Editar Program Files (x86)/Jenkins/jobs/yourjob/nextBuildNumber. Establezca el número que contiene N.
  • De Jenkins, seleccione Manage Jenkins -> Reload Configuration from Disk.
c32hedge
fuente
Asegúrese de leer este defecto antes de seleccionar "Recargar configuración desde disco" - issues.jenkins-ci.org/browse/JENKINS-32984
user3181500
6

Ampliando la respuesta aceptada, aquí se explica cómo hacerlo para todos los proyectos a la vez:

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

Como extensión de la excelente respuesta de @ antweiss, podemos ir más allá ...

No es necesario eliminar el historial de compilación completo; si no lo desea, simplemente puede retroceder el tiempo hasta un punto anterior:

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 quieres un funcionamiento simulado, para comprobar de qué va a hacer, sin llegar a hacerlo, simplemente comentar las build.delete()y item.updateNextBuildNumber(resetNumberTarget)líneas y elimine los distintos comandos de impresión.


Documentación: Los detalles de estos objetos fueron difíciles de encontrar, pero identifiqué lo siguiente:

Brondahl
fuente
1

Puede usar un nexBuildNumbercomplemento o simplemente modificar el nexBuildNumberarchivo para restablecer el número de compilación. Los siguientes son los pasos que debe realizar:

  • Vaya a .jenkins/Jobs/<YourJobName>/build/, haga una copia de seguridad de esta carpeta (si la necesita para un uso futuro) y elimine la carpeta de compilación .

Nota: Una vez que limpia las compilaciones antiguas, pierde los historiales de compilación y ya no están disponibles en el panel de Jenkins.

  • Vuelva a cargar la configuración (Jenkins -> Administrar Jenkins).
  • Establezca la siguiente versión de compilación en 1 utilizando el complemento Next Build Number o modificando el nextBuildNumberarchivo en el directorio de su trabajo.
Anni S
fuente
0

Encontré una manera fácil de hacer esto.

  1. Limpia tu espacio de trabajo.
  2. Vaya a cada compilación que se guardó en Jenkins y elimínela.
  3. Establezca el número de compilación en 1 y luego compile.

Jenkins usa la compilación anterior para determinar el siguiente número de compilación, si el número de compilación que ingresa es menor que el número de compilación anterior, Jenkins aumentará automáticamente su número de compilación a más alto que la compilación anterior. Así que aquí solo

Mai Quân Nguyễn
fuente
-1

Para restablecer los números de compilación de todos los trabajos:

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
fuente