Existe alguma maneira de limpar o espaço de trabalho do Jenkins?


100

Como posso limpar o espaço de trabalho no Jenkins? Estou usando AccuRevcomo ferramenta de controle de versão.

Criei freestyleprojetos no Jenkins.

Respostas:


91

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.


Muito obrigado Nagendra. Consigo corrigir esse problema usando o plug-in de limpeza do espaço de trabalho.
— Karthik

o que acontecerá se eu não limpar o espaço de trabalho? é buscar as alterações do url remoto ou apenas construir sobre a mesma coisa repetidamente?
— alphaguy

@alphaguy Jenkins cria um novo espaço de trabalho para cada construção que você executa, portanto, se você não excluir os espaços de trabalho, eventualmente seu nó ficará sem espaço.
— Miles Winther de

Podemos reutilizar o espaço de trabalho ... atualmente, quando empurro o código, ele clona do servidor git e inicio a compilação. Isso leva um longo processo adicionando extras ao processo de construção! podemos escolher o commit mais recente? @MilesWinther
— alphaguy

@alphaguy Você pode usar um repo de referência, veja a resposta aqui: stackoverflow.com/a/9932036/6221831
— Miles Winther

53

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. captura de tela


4
Não vejo isso, infelizmente. Tem certeza que não é um plugin?
— Joachim Breitner

2
Hmm, parece que o "Plug-in de limpeza do espaço de trabalho" é de fato um dos plug-ins que é instalado "por padrão". No entanto, depois de removê-lo, ainda tenho esse link e parece ainda funcionar. Então ... não tenho certeza de onde vem. V2.121.3
— rogerdpack

2
Isso funcionou, mas eu tive que clicar no link do espaço de trabalho duas vezes: o primeiro para ir para a página "espaço de trabalho", a segunda vez para realmente mostrar o link "Apagar o espaço de trabalho atual". Acho que é uma informação que você pode incluir na resposta.
— Gnafu

Que versão do Jenkins é essa? Porque o meu não mostra essa opção (provavelmente o meu é muito antigo).
— Pedro Trujillo

V2.121.3 não tem certeza em outras versões
— rogerdpack

31

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:

  1. Faça login na máquina Jenkins (Putty) insira a descrição da imagem aqui
  2. cd para o caminho de instalação do Jenkins

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/
  1. liste os espaços das pastas

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 /

  1. Exclua construção antiga ou outra pasta de tamanho grande

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

insira a descrição da imagem aqui


3
Não sei por que votou contra. Esta parece uma boa opção para administradores do Jenkins. Concorde não para usuários "somente leitura".
— Saikat de

1. Isso realmente não responde à pergunta feita e 2. meu servidor Jenkins está sendo executado no Windows.
— mjaggard

10
@mjaggard A pergunta foi feita por outra pessoa e ele não mencionou se é apenas para Windows. Ele também perguntou como limpar o espaço de trabalho (não se limitando ao frontend / cliente). Estou perdendo algo óbvio aqui?
— Saikat

4
Eu concordo totalmente com @takias, parece uma resposta válida para a pergunta. E um bom, se você tiver permissão suficiente para fazê-lo.
— PhoneixS de

1
Esta é uma resposta para "como faço para recuperar espaço em uma máquina GNU / Linux" não específico de jenkins.
— Felipe Alvarez

20

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


3
Eu realmente aprecio essa resposta porque eu tinha o plugin instalado a partir das outras respostas, mas foi isso que o fez funcionar na minha configuração. Somando-se a isso, segui os links para o mesmo plugin nas outras respostas, mas cleanWs()não estava presente na página de destino do plugin como sintaxe para adicionar ao meu Jenkinsfile.
— Arthur Weborg

19

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_HOMEestá definido para o padrão: /var/jenkins_home.

Limpe um espaço de trabalho

rm -rf /var/jenkins_home/workspaces/<workspace>

Limpe todos os espaços de trabalho

rm -rf /var/jenkins_home/workspaces/*

Limpe todos os espaços de trabalho com algumas exceções

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/{}

Limpe os 10 maiores espaços de trabalho

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/{}

2
Isso é perigoso, pois os trabalhos podem estar usando esses espaços de trabalho.
— aleb

13

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")
  }
}

isso não funciona para mim, ele mostra java.lang.NullPointerException: Não é possível obter a propriedade 'itens' no objeto nulo.
— Vincent Gerris

3

Supondo que a questão seja sobre como limpar o espaço de trabalho do trabalho atual, você pode executar:

test -n "$WORKSPACE" && rm -rf "$WORKSPACE"/*

2

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")


1

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


3
Adicione algumas informações que seu link contém. Resposta apenas com link não é o que procuramos na SO! :)
— Chilion

2
Este acréscimo não contém mais informações que esta resposta já não tenha abordado. Na verdade, é muito menos
— Liam

0

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.


0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.