Respostas:
Existe uma maneira de limpar o espaço de trabalho no Jenkins. Você pode limpar o espaço de trabalho antes ou depois da construção.
Primeiro, instale o plug-in de limpeza do espaço de trabalho .
Para limpar o espaço de trabalho antes da construção: Em Ambiente de construção, marque a caixa que diz Excluir espaço de trabalho antes do início da construção.
Para limpar a área de trabalho após a compilação: Sob o título Ações pós-compilação seleccionar espaço de trabalho Excluir quando construção é feito a partir do adicionar ações pós-compilação no menu suspenso.
Se você quiser limpá-lo manualmente, para mim com minha versão do jenkins (não parecia precisar de um plugin extra instalado, mas quem sabe), há um link "espaço de trabalho" na coluna à esquerda, clique no seu projeto, em "área de trabalho", um link "Limpar área de trabalho atual" aparece abaixo dele na coluna do lado esquerdo.
Ao lado das soluções acima, existe uma maneira mais "COMUM" - exclua diretamente o maior consumidor de espaço da máquina Linux. Você pode seguir as etapas abaixo:
Usando ls -lart para listar a pasta oculta também, normalmente a instalação do jenkin é colocada em .jenkins / pasta
[xxxxx ~]$ ls -lart drwxrwxr-x 12 xxxx 4096 Feb 8 02:08 .jenkins/
Use df -h
para mostrar o espaço em disco em alto nível
du -sh ./*/
para listar a memória total para cada subpasta no caminho atual.
du -a /etc/ | sort -n -r | head -n 10
irá listar os 10 principais diretórios que ocupam espaço em disco em / etc /
Normalmente ./job/ pasta ou ./workspace/ pasta pode ser a maior pasta. Por favor, entre e exclua com base no que você precisa (NÃO exclua a pasta inteira).
rm -rf theFolderToDelete
Plug-in de limpeza do espaço de trabalho
No arquivo Jenkins, adicione
cleanWs()
Isso excluirá o espaço de trabalho após a conclusão da construção
cleanWs()
não estava presente na página de destino do plugin como sintaxe para adicionar ao meu Jenkinsfile
.
IMPORTANTE: É seguro remover o espaço de trabalho de um determinado trabalho do Jenkins, desde que o trabalho não esteja em execução no momento!
NOTA: Estou assumindo que o seu $JENKINS_HOME
está definido para o padrão: /var/jenkins_home
.
rm -rf /var/jenkins_home/workspaces/<workspace>
rm -rf /var/jenkins_home/workspaces/*
Este usa grep para criar uma lista de permissões:
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 e sort para listar os espaços de trabalho da maior para a menor. Em seguida, ele usa a cabeça para pegar os primeiros 10:
du -d 1 /var/jenkins_home/workspace \
| sort -n -r \
| head -n 10 \
| xargs -I {} rm -rf /var/jenkins_home/workspace/{}
Você pode executar o script abaixo em Gerenciar Jenkins → Console de Scripts para deletar as áreas de trabalho de todos os trabalhos de uma vez. Fizemos isso para limpar espaço no sistema de arquivos.
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")
}
}
não tem permissão para comentar, portanto:
A resposta do Upen funciona muito bem, mas não se você tiver Jenkins Pipeline Jobs misturado com Freestyle Jobs. Não existe um método como DoWipeWorkspace em trabalhos de pipeline. Portanto, modifiquei o Script para pular aqueles:
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")
}
}
você também pode filtrar por nomes de trabalho, se necessário:
item.getDisplayName().toLowerCase().contains("release")
Você precisará instalar este plugin antes que as opções mencionadas acima apareçam
Plug-in de limpeza do espaço de trabalho
Este plug-in adiciona a caixa de seleção a todas as configurações de trabalho para permitir que você exclua todo o espaço de trabalho antes que qualquer etapa (controle de origem inc) seja executada
Isso é útil para garantir que você sempre comece a partir de um ponto conhecido para garantir como sua construção será executada
Se você deseja remover apenas um diretório (ou arquivo), você pode usar Groovy e Gerenciar Jenkins → Console de Scripts para executar um script que o remove.
Por exemplo, você pode ver os arquivos com:
dh = new File('./bitnami/jenkins/jenkins_home/workspace/jobname/folder')
dh.eachFile {
println(it)
}
E então, quando você tiver a pasta que deseja excluir dh
, pode simplesmente anexar o próximo código:
dh.deleteDir()
E será excluído.
Observação: o caminho mostrado no exemplo é para uma instalação do Bitnami Jenkins, o seu pode ser diferente.
Existe uma opção para fazer isso. Configurar -> Ações de pós-construção
A opção vem por padrão pelo menos no Jenkins versão 2.236