Respuestas:
Hay una forma de limpiar el espacio de trabajo en Jenkins. Puede limpiar el espacio de trabajo antes o después de la construcción.
Primero, instale el complemento de limpieza del espacio de trabajo .
Para limpiar el espacio de trabajo antes de la compilación: en Entorno de compilación, marque la casilla que dice Eliminar espacio de trabajo antes de que comience la compilación.
Para limpiar el espacio de trabajo después de la compilación: Bajo el título Acciones posteriores a la compilación, seleccione Eliminar espacio de trabajo cuando se complete la compilación en el menú desplegable Agregar acciones posteriores a la compilación .
Si desea limpiarlo manualmente, para mí con mi versión de jenkins (no parecía necesitar un complemento adicional instalado, pero quién sabe), hay un enlace "espacio de trabajo" en la columna de la izquierda, haga clic en su proyecto, luego en "espacio de trabajo", luego aparece un enlace "Borrar espacio de trabajo actual" debajo de él en la columna del lado izquierdo.
Además de las soluciones anteriores, hay una forma más "COMÚN": eliminar directamente el mayor consumidor de espacio de la máquina Linux. Puede seguir los siguientes pasos:
Usando ls -lart para enumerar la carpeta oculta también, normalmente la instalación de jenkin se coloca en la carpeta .jenkins /
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
para mostrar el espacio en disco en alto nivel
du -sh ./*/
para enumerar la memoria total para cada subcarpeta en la ruta actual.
du -a /etc/ | sort -n -r | head -n 10
enumerará los 10 directorios principales que consumen espacio en disco en / etc /
Normalmente, la carpeta ./job/ o ./workspace/ puede ser la carpeta más grande. Ingrese y elimine la base que necesite (NO elimine la carpeta completa).
rm -rf theFolderToDelete
Complemento de limpieza del espacio de trabajo
En el archivo Jenkins, agregue
cleanWs()
Esto eliminará el espacio de trabajo después de que se complete la compilación
cleanWs()
no estaba presente en la página de destino del complemento como sintaxis para agregar a mi Jenkinsfile
.
IMPORTANTE: ¡ Es seguro eliminar el espacio de trabajo para un trabajo de Jenkins determinado siempre que el trabajo no se esté ejecutando actualmente!
NOTA: Estoy asumiendo que su $JENKINS_HOME
se establece en el valor por defecto: /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Este usa grep para crear una lista blanca:
ls /var/jenkins_home/workspace \
| grep -v -E '(job-to-skip|another-job-to-skip)$' \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Este usa du y sort para enumerar los espacios de trabajo en orden de mayor a menor. Luego, usa la cabeza para agarrar los primeros 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Puede ejecutar el siguiente script en Manage Jenkins → Scripts Console para eliminar los espacios de trabajo de todos los trabajos de una sola vez. Hicimos esto para limpiar espacio en el sistema de archivos.
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
no se permite comentar, por lo tanto:
La respuesta de Upen funciona bien, pero no si tiene Jenkins Pipeline Jobs mezclados con Freestyle Jobs. No existe un método como DoWipeWorkspace en los trabajos de canalización. Así que modifiqué el script para omitirlos:
import hudson.model.*
import org.jenkinsci.plugins.workflow.job.WorkflowJob
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding() && !(item instanceof WorkflowJob))
{
println("Wiping out workspace of job "+item.name)
item.doDoWipeOutWorkspace()
}
else {
println("Skipping job "+item.name+", currently building")
}
}
también puede filtrar por Nombres de trabajo si es necesario:
item.getDisplayName().toLowerCase().contains("release")
Deberá instalar este complemento antes de que aparezcan las opciones mencionadas anteriormente
Complemento de limpieza del espacio de trabajo
Este complemento agrega la casilla de verificación a todas las configuraciones de trabajo para permitirle eliminar todo el espacio de trabajo antes de ejecutar cualquier paso (incluido el control de fuente)
Esto es útil para asegurarse de que siempre comienza desde un punto conocido para garantizar cómo se ejecutará la compilación.
Si solo desea eliminar un directorio (o archivo), puede usar Groovy y Manage Jenkins → Scripts Console ejecutar un script que lo elimine.
Por ejemplo, puede mirar los archivos con:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
Y luego, cuando tenga la carpeta en la que desea eliminar dh
, simplemente podría agregar el siguiente código:
dh.deleteDir()
Y será eliminado.
Nota: La ruta que se muestra en el ejemplo es para una instalación de Bitnami Jenkins, la suya podría ser diferente.
Hay una opción para hacerlo. Configurar -> Acciones posteriores a la construcción
La opción viene de forma predeterminada al menos en la versión 2.236 de Jenkins