Recientemente actualicé la configuración de una de mis compilaciones de hudson. El historial de compilación no está sincronizado. ¿Hay alguna forma de borrar mi historial de compilación?
Por favor y gracias
Recientemente actualicé la configuración de una de mis compilaciones de hudson. El historial de compilación no está sincronizado. ¿Hay alguna forma de borrar mi historial de compilación?
Por favor y gracias
Respuestas:
Si hace clic en Manage Hudson / Reload Configuration From Disk, Hudson recargará todos los datos del historial de compilación.
Si los datos en el disco están desordenados, deberá ir a su directorio% HUDSON_HOME% \ jobs \ <nombre de proyecto > y restaurar los directorios de compilación como se supone que deben estar. Luego recargue los datos de configuración.
Si simplemente está preguntando cómo eliminar todo el historial de compilación, puede eliminar las compilaciones una por una a través de la interfaz de usuario si hay pocas, o ir al directorio% HUDSON_HOME% \ jobs \ <nombre del proyecto > y eliminar subdirectorios allí: corresponden a las compilaciones. Luego reinicie el servicio para que los cambios surtan efecto.
Use la consola de secuencias de comandos (Administrar Jenkins> Consola de secuencias de comandos) y algo como esta secuencia de comandos para eliminar de forma masiva el historial de compilación de un trabajo https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
Ese script asume que solo desea eliminar un rango de compilaciones. 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()
Esta respuesta es para Jenkins
Vaya a su página de inicio de Jenkins → Administrar Jenkins → Consola de script
Ejecute el siguiente script allí. Cambiar copy_folder
ayour project name
Código:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Aquí hay otra opción: elimine 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 de Jenkins, se debe proporcionar un nombre de usuario y un token de API como este:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
El token de API debe obtenerse de la /me/configure
página en Jenkins. Simplemente haga clic en el botón "Mostrar token API ..." para mostrar tanto el nombre de usuario como el token API.
Editar: es posible que tenga que reemplazar doDeleteAll
por doDelete
en las URL anteriores para que esto funcione, según la configuración o la versión de Jenkins utilizada.
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 eliminar las compilaciones antiguas) y luego cambiar la configuración de nuevo al valor deseado.
Si desea borrar el historial de compilación de MultiBranchProject (por ejemplo, canalización), vaya a la página de inicio de Jenkins → Administrar Jenkins → Consola de secuencias de comandos y ejecute la siguiente secuencia de comandos:
def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
def job = it
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
}
Ésta es la mejor opción disponible.
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
Este código eliminará todo el historial de compilación de trabajos de Jenkins.
Utilizando Script Console.
En caso de que los trabajos estén agrupados, es posible darle un nombre completo con barras diagonales:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
o atraviesa la jerarquía así:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Eliminar directamente del sistema de archivos no es seguro. Puede ejecutar el siguiente script para eliminar todas las compilaciones de todos los trabajos (de forma recursiva).
def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
println it.name
builds = it.getBuilds()
for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
builds.get(i).delete()
println "Deleted" + builds.get(i)
}
}
}
Otra forma fácil de limpiar compilaciones es agregando el complemento Discard Old al final de sus trabajos. Establezca un número máximo de compilaciones para guardar y luego ejecute el trabajo nuevamente:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
Vaya al directorio %HUDSON_HOME%\jobs\<projectname>
eliminar builds
y elimine lastStable, lastSuccessful
enlaces, y elimine el nextBuildNumber
archivo.
Después de realizar los pasos anteriores, vaya al enlace de abajo desde UI
Jenkins-> Administrar Jenkins -> Recargar configuración desde el disco
Hará lo que necesites
Si usa el método Script Console, intente usar lo siguiente en su lugar para tener en cuenta si los trabajos se agrupan 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)