Jenkins clear build history

Fala pessoal, vamos mostrar de uma forma simples, como limprar históricos de builds antigos no Jenkins. 

Existem várias formas de fazer isso. Mas achei melhor usar o próprio jenkins para fazer isso. Para isso vamos criar um job para fazer esse trabalho definindo uma linha de corte pelo número da build.

Exemplo: vamos excluir todos os históricos de build menor que 50. Dessa forma, vamos mater somente o hitórico das 50 builds executadas recentemente. 

Para isso vamos definiar uma linha de corte. Pegando o id da última build executada com sucesso e diminuir 50.

O que for menor que a linha de corte vai ser excluído, ou seja, vamos manter somente o histórico de 50 builds mais recentes.

Como vamos usar groovy, precisamos instalar o Groovy primeiro em Gerenciar Jenins> Plugins:

Imagem

Em seguida vamos criar um job chamado Clear_jobs_logs (pode usar o nome que quiser...)

Em build, vamos criar um script groovy para testar se a instalação do groovy está ok

Imagem

Execeture o job e verifique se executou ok. Se der algum erro, provavelmente deu algum problema na instalação do Groovy, se executou sem erro, vamos para o próximo passo: Fazer o script para limpar os históricos antigos de um determinado job:

import jenkins.model.*
jenkins = Jenkins.instance
def int lastBuilId = 0
def linhaDeCorte = 0
def jobs_to_clear = ['Job 1', 'Job 2', 'Job 3']
def qtd_build_to_keep = 50
jobs_to_clear.each { jobName ->
  println "Limpando  ${jobName}..." 
  def clearJobsLogs = Jenkins.instance.getItemByFullName(jobName)
  lastBuilId = clearJobsLogs.getLastSuccessfulBuild().getId().toInteger()
  linhaDeCorte = (lastBuilId - qtd_build_to_keep)
  clearJobsLogs.getBuilds().each {
       if(it.getNumber() <linhaDeCorte ){
          it.delete()
       }
  } 
}

Se o histórico for muito grande, pode demorar para executar a primeira vez, mas depois vai ficar bem mais rápido e vai evitar futuras dores de cabeça com disco cheio acumulando lixo.

 

Comentários

 

Quem Sou

Graduado em ADS (Análise e desenvolvimento de sistemas).

Não sou "devoto" de nenhuma linguagem de programação. Procuro aproveitar o melhor de cada uma de acordo com a necessidade do projeto. Prezo por uma arquitetura bem feita, código limpo, puro e simples! 

anuncio atendente