Recentemente, atualizei a configuração de uma das minhas compilações hudson. O histórico de construção está fora de sincronia. Existe uma maneira de limpar meu histórico de construção?
Por favor e obrigado
Recentemente, atualizei a configuração de uma das minhas compilações hudson. O histórico de construção está fora de sincronia. Existe uma maneira de limpar meu histórico de construção?
Por favor e obrigado
Respostas:
Se você clicar em Gerenciar Hudson / Recarregar configuração do disco, o Hudson recarregará todos os dados do histórico de construção.
Se os dados no disco estiverem confusos, você precisará ir para o diretório% HUDSON_HOME% \ jobs \ < projectname > e restaurar os diretórios de construção como deveriam estar. Em seguida, recarregue os dados de configuração.
Se você está simplesmente perguntando como remover todo o histórico de construção, você pode simplesmente excluir as compilações uma a uma por meio da IU, se houver apenas algumas, ou ir para o diretório% HUDSON_HOME% \ jobs \ < projectname > e excluir todas as subdiretórios lá - eles correspondem às compilações. Em seguida, reinicie o serviço para que as alterações tenham efeito.
Use o console de script (Gerenciar Jenkins> Console de Script) e algo parecido com este script para excluir em massa o histórico de criação de um trabalho https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
Esse script assume que você deseja excluir apenas uma série de compilações. Para excluir todas as compilações para um determinado trabalho, use isto (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 a página inicial do Jenkins → Gerenciar 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 compilações com cURL.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
O item acima exclui as versões 1 a 56 do job myJob.
Se a autenticação estiver ativada na instância 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 na /me/configure
página no Jenkins. Basta clicar no botão "Mostrar token de API ..." para exibir o nome de usuário e o token de API.
Editar: pode ser necessário substituir doDeleteAll
por doDelete
nas URLs acima para fazer isso funcionar, dependendo da configuração ou versão do Jenkins usada.
Você pode modificar a configuração do projeto temporariamente para salvar apenas a última 1 compilação, recarregar a configuração (o que deve destruir as compilações antigas) e, em seguida, alterar a definição de configuração novamente para o valor desejado.
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á todo o histórico de construção do Jenkins Job.
Se você quiser limpar o histórico de construção do MultiBranchProject (por exemplo, pipeline), vá para a página inicial do 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()
}
Usando o console de script.
No caso de as tarefas serem agrupadas, é possível dar a elas um nome completo com barras:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
ou atravesse a hierarquia assim:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Outra maneira fácil de limpar compilações é adicionando o plug-in Discard Old no final de seus trabalhos. Defina um número máximo de compilações para salvar e execute o trabalho novamente:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
Vá para a %HUDSON_HOME%\jobs\<projectname>
remoção builds
dir e remover lastStable, lastSuccessful
links, e remover nextBuildNumber
arquivos.
Depois de seguir as etapas acima, vá para o link abaixo de UI
Jenkins-> Gerenciar Jenkins -> Recarregar configuração do disco
Fará o que você precisa
Se estiver usando o método Script Console, tente usar o seguinte em vez de levar em consideração se os trabalhos estão sendo agrupados em contêineres de pasta.
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)
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)
}
}
}