2010-08-04 13 views
55

Recientemente actualicé la configuración de una de mis compilaciones hudson. El historial de compilación no está sincronizado. ¿Hay alguna manera de borrar mi historial de compilación?¿Cómo borro mi historial de compilación de Jenkins/Hudson?

por favor y gracias

+0

¿Se puede elaborar en "totalmente en mal estado"? Tal vez alguien haya experimentado un problema similar anteriormente y pueda indicarle cómo solucionarlo. –

+0

disculpa la ambigüedad. fijo. – myusuf3

+0

Hay una pregunta más nueva y ligeramente más específica aquí: https://stackoverflow.com/questions/13052390/jenkins-remove-old-builds-with-command-line/22303284 –

Respuesta

40

Si hace clic en Gestionar configuración Hudson/Volver a cargar en el disco, Hudson volverá a cargar todos los datos de la historia de construcción.

Si los datos en el disco está en mal estado, tendrá que ir a sus HUDSON_HOME%% \ empleos \ < projectname> directorio y restaurar los directorios de construcción, ya que se supone que deben ser. A continuación, vuelva a cargar los datos de configuración.

Si sólo va a preguntar cómo eliminar toda la historia de la construcción, puede simplemente eliminar las compilaciones de uno en uno a través de la interfaz de usuario si hay sólo unos pocos, o ir a los HUDSON_HOME%% \ empleos \ < projectname > directorio y elimine todos los subdirectorios allí - corresponden a las compilaciones. Luego, reinicie el servicio para que los cambios surtan efecto.

+0

He eliminado todos los archivos y carpetas dentro de "/ var/lib/jenkins/jobs/Demo" pero cuando voy a Jenkins UI dentro de este TRABAJO Todavía veo el historial de construcciones. – paul

+1

Después de "mono" con la estructura del directorio, solo vaya a "Administrar Jenkins" y seleccione "Recargar configuración del disco" – DanBaker

+1

@paul, después de eliminar las carpetas, se necesita ** un reinicio ** de Jenkins para ver la compilación la historia desapareció de la interfaz de usuario. BTW, si usamos Jenkins, la ruta normalmente se encuentra en/var/jenkins_home/jobs/{project name}/builds/ – Bright

8

Puede modificar la configuración del proyecto temporalmente para guardar solo la última 1 compilación, volver a cargar la configuración (que debería arruinar las compilaciones anteriores) y luego volver a establecer la configuración en el valor deseado.

+0

¿Cómo se hace esto? –

+0

Disculpe, no he usado Hudson ahora durante un par de años, pero vea esto sobre volver a cargar la configuración: http://stackoverflow.com/questions/5216552/does-anyone-know-how-to-reload-hudson-configuration -sin reiniciar –

76

utilizar la consola guión (Gestión de Jenkins> Script consola) y algo parecido a este script para eliminar el historial de mayor acumulación de un trabajo https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy

Esa secuencia de comandos supone sólo desea eliminar una variedad de construcciones. Para eliminar todas las compilaciones para un trabajo determinado, use esto (probado):

// 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() } 
// uncomment these lines to reset the build number to 1: 
//job.nextBuildNumber = 1 
//job.save() 
+5

¡¡Genial !! definitivamente el mejor enfoque! :) – hek2mgl

+0

gran truco, pero ¿qué hay de restablecer el contador de construcción? cualquier guion para eso? –

+1

@JesChergui He actualizado para mostrar el restablecimiento del número de compilación. La consola de secuencias de comandos le permite controlar todo tipo de cosas, consulte http://javadoc.jenkins-ci.org/ (AbstractProject es un buen lugar para comenzar a jugar con trabajos) – rjohnston

13

Aquí hay otra opción: eliminar las compilaciones con cURL.

$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll 

Lo anterior elimina la compilación # 1 a # 56 para el trabajo myJob.

Si la autenticación está habilitada en la instancia Jenkins, un nombre de usuario y token de la API debe proporcionar la siguiente manera:

$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll 

El token de la API debe ser traidos desde la página/Me/configure en Jenkins. Simplemente haga clic en el botón "Mostrar API Token ..." para mostrar el nombre de usuario y el token API.

Editar: uno podría tener que reemplazar doDeleteAll por doDelete en las direcciones URL de arriba para que esto funcione, dependiendo de la configuración o la versión de Jenkins utilizada.

0

Vaya a: %JENKINS_HOME%\jobs\jobName

Abrir el archivo "nextBuildNumber" y cambiar el número. Después de eso, recarga la configuración de Jenkins. Nota: el archivo "nextBuildNumber" contiene el siguiente build no que será utilizado por Jenkins.

7

Aquí es cómo eliminar todas las versiones de todos los trabajos ......usando el Jenkins Scripting.

def jobs = Jenkins.instance.projects.collect { it } 
jobs.each { job -> job.getBuilds().each { it.delete() }} 
0

Ir a la %HUDSON_HOME%\jobs\<projectname> eliminar builds dir y eliminar lastStable, lastSuccessful enlaces, y eliminar nextBuildNumber archivo.

Después de hacer los pasos anteriores ir debajo de acoplamiento de la interfaz de usuario
Jenkins-> Administrar Jenkins -> Configuración Volver a cargar en el disco

Se hará lo que se necesita

37

Esta respuesta es para Jenkins

  1. Ir a la página de inicio de Jenkins → Gestionar JenkinsScript Cons ole

    Enter image description here

  2. Ejecutar la siguiente secuencia de comandos allí. Cambiar copy_folder a your project name

Código:

def jobName = "copy_folder" 
def job = Jenkins.instance.getItem(jobName) 
job.getBuilds().each { it.delete() } 
job.nextBuildNumber = 1 
job.save() 

My post

+3

La mejor respuesta hasta el momento –

+0

Esta es la solución más rápida. –

+0

Sí, pero para este, NO reinicie Jenkins o no parece actualizar el nextbuildnumber a 1 cuando realiza una compilación después del reinicio. El mío comenzó a los 39, así que tuve que volver a hacer esto. – Will

0

Si se utiliza el método de escritura de la consola a continuación, intente utilizar el siguiente en lugar de tener en cuenta si los trabajos se están agrupadas en contenedores de carpetas.

def jobName = "Your Job Name" 
def job = Jenkins.instance.getItemByFullName(jobName) 

o

def jobName = "My Folder/Your Job Name 
def job = Jenkins.instance.getItemByFullName(jobName) 
Cuestiones relacionadas