Estamos executando o Jenkins 2.xe adoramos o novo plug-in Pipeline. No entanto, com tantas ramificações em um repositório, o espaço em disco é preenchido rapidamente.
Existe algum plug-in compatível com o Pipeline que eu possa eliminar o espaço de trabalho em uma compilação bem-sucedida?
checkout scm
.Como @gotgenes apontou com a versão Jenkins. 2.74 , o abaixo funciona, não tenho certeza desde quando, talvez se alguém puder editar e adicionar a versão acima
No Jenkins Versão 2.16 e no Plugin de Limpeza da Área de Trabalho , que eu tenho, eu uso
para excluir a área de trabalho.
Você pode visualizá-lo acessando
Em seguida, selecione "etapa: Etapa Geral de Construção" na etapa Amostra e, em seguida, selecione "Excluir área de trabalho quando a construção terminar" na etapa Construção
fonte
cleanWs
.As soluções mencionadas
deleteDir()
ecleanWs()
(se estiver usando o plug-in de limpeza da área de trabalho ) funcionam, mas a recomendação para usá-la em uma etapa de construção extra geralmente não é a solução desejada . Se a construção falhar e o pipeline for abortado, esse estágio de limpeza nunca será atingido e, portanto, o espaço de trabalho não será limpo em construções com falha.=> Na maioria dos casos, você provavelmente deve colocá-lo em uma condição pós-compilação, como
always
:fonte
cleanWs()
como uma etapa os exclui antes que o comando pós-compilação seja executado.cleanWs()
provavelmente deve sempre ser executado como um comando de compilação póspost
seção,cleanWs()
pode seguramente ser colocado naalways
condição, mas o local mais seguro é dentro dacleanup
condição:post { cleanup { cleanWs() } }
De fato, a função deleteDir exclui recursivamente o diretório atual e seu conteúdo. Links e junções simbólicas não serão seguidos, mas serão removidos.
Para excluir um diretório específico de uma área de trabalho, envolva a etapa deleteDir em uma etapa dir.
fonte
Eu usei deleteDir () da seguinte maneira:
No entanto, tive que executar também um Sucesso ou Falha APÓS sempre, mas você não pode solicitar as condições de postagem. A ordem atual é sempre, alterada, abortada, falha, sucesso e, em seguida, instável.
No entanto, existe uma condição pós muito útil, a limpeza que sempre é executada por último, consulte https://jenkins.io/doc/book/pipeline/syntax/
Então, no final, meu post foi o seguinte:
Espero que isso possa ser útil para alguns casos de canto
fonte
Usando o seguinte script de pipeline:
Siga esses passos:
fonte
options { skipDefaultCheckout() }
uma execução um pouco mais rápida.Se você usou o espaço de trabalho personalizado no Jenkins, o deleteDir () não excluirá a pasta @tmp.
Para excluir @tmp junto com a área de trabalho, use o seguinte
Esse trecho também funcionará no espaço de trabalho padrão.
fonte
Garantimos que estamos trabalhando com um espaço de trabalho limpo usando um recurso do plugin git. Você pode adicionar comportamentos adicionais como 'Limpar antes do checkout'. Usamos isso também para 'Remover ramificações antigas de rastreamento remoto'.
fonte
O uso da extensão 'WipeWorkspace' também parece funcionar. Requer o formato mais longo:
Mais detalhes aqui: https://support.cloudbees.com/hc/pt-br/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch-
Extensões GitSCM disponíveis aqui: https://github.com/jenkinsci/git-plugin/tree/master/src/main/java/hudson/plugins/git/extensions/impl
fonte
Para o Jenkins 2.190.1, isso funciona com certeza:
fonte
Limpeza : Como a seção de postagem de um pipeline é garantida para ser executada no final da execução de um pipeline, podemos adicionar algumas notificações ou outras etapas para executar a finalização, notificação ou outras tarefas de final de pipeline.
fonte
No meu caso, quero limpar os arquivos antigos no início da compilação, mas isso é problemático, pois o código-fonte foi retirado.
Minha solução é pedir ao git para limpar todos os arquivos (desde a última compilação) que ele não conhece:
Dessa forma, eu posso iniciar a construção limpa e, se falhar, o espaço de trabalho não será limpo e, portanto, facilmente depurável.
fonte
Atualmente, deleteir () e cleanWs () não funcionam corretamente ao usar o plug-in Jenkins kubernetes, o espaço de trabalho do pod é excluído, mas o espaço de trabalho principal persiste
não deve ser um problema para ramificações persistentes, quando você tem uma etapa para limpar a área de trabalho antes da farsa do checkout. Basicamente, reutilizará o mesmo espaço de trabalho repetidamente: mas, ao usar pipelines com várias filiais, o mestre mantém todo o espaço de trabalho e o diretório git
Eu acredito que isso deve ser um problema para Jenkins, alguma iluminação aqui?
fonte