Estamos ejecutando Jenkins 2.xy amamos el nuevo plugin Pipeline. Sin embargo, con tantas ramas en un repositorio, el espacio en disco se llena rápidamente.
¿Hay algún complemento que sea compatible con Pipeline que pueda borrar el espacio de trabajo en una compilación exitosa?
checkout scm
.Como @gotgenes señaló con la versión Jenkins. 2.74 , funciona a continuación, no estoy seguro desde cuándo, tal vez si alguien puede editar y agregar la versión anterior
Con Jenkins Versión 2.16 y el Plugin de limpieza del espacio de trabajo que tengo, uso
para eliminar el espacio de trabajo.
Puedes verlo yendo a
Luego, seleccione "paso: paso de compilación general" en el paso de muestra y luego seleccione "Eliminar espacio de trabajo cuando finalice la compilación" del paso de compilación
fuente
cleanWs
.Las soluciones mencionadas
deleteDir()
ycleanWs()
(si se usa el complemento de limpieza del espacio de trabajo ) funcionan, pero la recomendación de usarlo en un paso de compilación adicional generalmente no es la solución deseada . Si la compilación falla y se cancela la canalización, esta etapa de limpieza nunca se alcanza y, por lo tanto, el espacio de trabajo no se limpia en compilaciones fallidas.=> En la mayoría de los casos, probablemente debería ponerlo en una condición de paso posterior a la construcción como
always
:fuente
cleanWs()
como un paso los elimina antes de que se ejecute el comando post build archive.cleanWs()
debe más probable es que siempre se ejecute como un comando de generación de postpost
sección,cleanWs()
se puede poner de forma segura en laalways
condición, pero el lugar más seguro está dentro de lacleanup
condición:post { cleanup { cleanWs() } }
De hecho, la función deleteDir elimina recursivamente el directorio actual y su contenido. Los enlaces simbólicos y las uniones no se seguirán, pero se eliminarán.
Para eliminar un directorio específico de un espacio de trabajo, ajuste el paso deleteDir en un paso dir.
fuente
Usé deleteDir () de la siguiente manera:
Sin embargo, también tuve que ejecutar un Éxito o Fracaso DESPUÉS siempre, pero no puede solicitar las condiciones de publicación. El orden actual es siempre, modificado, abortado, fallido, exitoso y luego inestable.
Sin embargo, hay una condición de publicación muy útil, la limpieza que siempre se ejecuta al final, consulte https://jenkins.io/doc/book/pipeline/syntax/
Así que al final mi publicación fue la siguiente:
Esperemos que esto pueda ser útil para algunos casos de esquina
fuente
Usando el siguiente script de canalización:
Sigue estos pasos:
fuente
options { skipDefaultCheckout() }
para una ejecución un poco más rápida.Si ha utilizado un espacio de trabajo personalizado en Jenkins, deleteDir () no eliminará la carpeta @tmp.
Entonces, para eliminar @tmp junto con el espacio de trabajo, use el siguiente
Este fragmento también funcionará para el espacio de trabajo predeterminado.
fuente
Nos aseguramos de trabajar con un espacio de trabajo limpio mediante el uso de una característica del complemento git. Puede agregar comportamientos adicionales como 'Limpiar antes de pagar'. Usamos esto también para 'Podar ramas de seguimiento remoto obsoletas'.
fuente
El uso de la extensión 'WipeWorkspace' parece funcionar también. Requiere la forma más larga:
Más detalles aquí: https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch-
Extensiones de GitSCM disponibles aquí: https://github.com/jenkinsci/git-plugin/tree/master/src/main/java/hudson/plugins/git/extensions/impl
fuente
Para Jenkins 2.190.1 esto funciona con seguridad:
fuente
Limpieza : dado que la sección de publicación de una tubería está garantizada para ejecutarse al final de la ejecución de una tubería, podemos agregar alguna notificación u otros pasos para realizar la finalización, notificación u otras tareas de finalización de la tubería.
fuente
En mi caso, quiero borrar los archivos antiguos al principio de la compilación, pero esto es problemático ya que el código fuente ha sido desprotegido.
Mi solución es pedirle a git que limpie cualquier archivo (de la última compilación) que no conozca:
De esa manera, puedo comenzar la compilación limpia y, si falla, el espacio de trabajo no se limpia y, por lo tanto, se puede depurar fácilmente.
fuente
Actualmente, deleteir () y cleanWs () no funcionan correctamente cuando se usa el complemento Jenkins kubernetes, el espacio de trabajo del pod se elimina pero el espacio de trabajo maestro persiste
No debería ser un problema para las ramas persistentes, cuando tiene un paso para limpiar el espacio de trabajo antes de la estafa de pago. Básicamente, reutilizará el mismo espacio de trabajo una y otra vez: pero cuando se usan tuberías de múltiples ramas, el maestro mantiene todo el espacio de trabajo y el directorio git
Creo que esto debería ser un problema con Jenkins, ¿alguna iluminación aquí?
fuente