Como faço para limpar minha história de construção de Jenkins/Hudson?
-
25-09-2019 - |
Pergunta
Atualizei recentemente a configuração de uma das minhas construções de Hudson. A história da construção está fora de sincronia. Existe uma maneira de limpar minha história de construção?
Por favor e obrigado
Solução
Se você clicar em Gerenciar a configuração do Hudson / Recarregar a partir do disco, o Hudson recarregará todos os dados do histórico de compilação.
Se os dados no disco estiverem confusos, você precisará ir para o seu %hudson_home % jobsNome do Projeto> Diretório e restaure os diretórios de construção como deveriam ser. Em seguida, recarregue os dados da configuração.
Se você está simplesmente perguntando como remover todo o histórico de construção, basta excluir as compilações uma a uma através da interface do usuário se houver apenas alguns ou ir para o %hudson_home % jobsNome do Projeto> Diretório e exclua todos os subdiretos lá - eles correspondem às construções. Posteriormente, reinicie o serviço para que as alterações entrem em vigor.
Outras dicas
Use o console do script (gerencie jenkins> console de script) e algo como este script para excluir a granel excluir o histórico de construção de um trabalho https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkdeletebuilds.groovy
Esse script pressupõe que você deseja excluir apenas uma variedade de compilações. Para excluir todas as compilações para um determinado trabalho, use isso (testado):
// change this variable to match the name of the job whose builds you want to delete
def jobName = "Your Job Name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
// uncomment these lines to reset the build number to 1:
//job.nextBuildNumber = 1
//job.save()
Esta resposta é para Jenkins
Vá para sua página inicial de Jenkins → Gerencie Jenkins → Console de script
Execute o seguinte script lá. Mudar
copy_folder
parayour project name
Código:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Aqui está outra opção: Exclua as construções com o CRO.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Os exclui os exclusão acima compram #1 a #56 para Job MyJob.
Se a autenticação estiver ativada na instância de Jenkins, um nome de usuário e um token de API devem ser fornecidos assim:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
O token da API deve ser buscado do /me/configure
Página em Jenkins. Basta clicar no botão "Mostrar token ..." para exibir o nome do usuário e o token da API.
Editar: alguém pode ter que substituir doDeleteAll
por doDelete
Nos URLs acima para fazer isso funcionar, dependendo da configuração ou da versão de Jenkins usada.
Você pode modificar a configuração do projeto temporariamente para salvar apenas a última compilação, recarregue a configuração (que deve destruir as construções antigas) e alterar a configuração da configuração novamente para o valor desejado.
Aqui está como excluir todas as compilações para todos os trabalhos ...... usando o Script Jenkins.
def jobs = Jenkins.instance.projects.collect { it }
jobs.each { job -> job.getBuilds().each { it.delete() }}
Esta é a melhor opção disponível.
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
Este código excluirá todos os trabalhos Jenkins.
Se você deseja limpar o histórico de compilação do MultibranchProject (por exemplo, pipeline), vá para a sua página inicial de Jenkins → Gerenciar Jenkins → Console de script e execute o seguinte script:
def projectName = "ProjectName"
def project = Jenkins.instance.getItem(projectName)
def jobs = project.getItems().each {
def job = it
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
}
Outra maneira fácil de limpar as construções é adicionando o plug -in antigo de descarte no final de seus empregos. Defina um número máximo de compilações para salvar e depois execute o trabalho novamente:
https://wiki.jenkins-ci.org/display/jenkins/discard+old+build+plugin
Vou ao %HUDSON_HOME%\jobs\<projectname>
remover builds
diretor e remova lastStable, lastSuccessful
links e remova nextBuildNumber
Arquivo.
Depois de fazer as etapas acima, vá para o link abaixo da interface do usuário
Jenkins-> Gerenciar Jenkins -> Recarregar a configuração do disco
Fará o que você precisa
Se estiver usando o método do console do script, tente usar o seguinte para levar em consideração se os trabalhos estiverem sendo agrupados em contêineres de pastas.
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
ou
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
Usando console de script.
Caso os trabalhos estejam agrupados, é possível dar um nome completo com barras para a frente:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
ou atravessar a hierarquia como esta:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Excluir diretamente do sistema de arquivos não é seguro. Você pode executar o script abaixo para excluir todas as compilações de todos os trabalhos (recursivamente).
def numberOfBuildsToKeep = 10
Jenkins.instance.getAllItems(AbstractItem.class).each {
if( it.class.toString() != "class com.cloudbees.hudson.plugins.folder.Folder" && it.class.toString() != "class org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject") {
println it.name
builds = it.getBuilds()
for(int i = numberOfBuildsToKeep; i < builds.size(); i++) {
builds.get(i).delete()
println "Deleted" + builds.get(i)
}
}
}```
Navegar para: %JENKINS_HOME%\jobs\jobName
Abra o arquivo "NextBuildNumber" e altere o número. Depois disso, recarregue a configuração de Jenkins. Nota: O arquivo "NextBuildNumber" contém o próximo compilação não que será usado por Jenkins.