Недавно я обновил конфигурацию одной из моих hudson-сборок. История сборки не синхронизирована. Есть ли способ очистить историю сборки?
Пожалуйста, спасибо вам
Недавно я обновил конфигурацию одной из моих hudson-сборок. История сборки не синхронизирована. Есть ли способ очистить историю сборки?
Пожалуйста, спасибо вам
Если вы нажмете "Управление хадсон/перезагрузка конфигурации с диска", Хадсон перезагрузит все данные истории сборки.
Если данные на диске испорчены, вам нужно перейти в каталог% HUDSON_HOME%\jobs\<projectname> и восстановить каталоги сборки, как они должны быть. Затем перезагрузите данные конфигурации.
Если вы просто спрашиваете, как удалить всю историю сборки, вы можете просто удалить сборки по одному с помощью пользовательского интерфейса, если их всего несколько, или перейти в каталог% HUDSON_HOME%\jobs\<projectname> и удалите все подкаталоги там - они соответствуют строкам. Затем перезапустите службу, чтобы изменения вступили в силу.
Используйте консоль script (Управление консоли Jenkins > script) и что-то вроде этого script для массового удаления истории создания задания https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy
То, что script предполагает, что вы хотите удалить только ряд построений. Чтобы удалить все сборки для заданного задания, используйте это (проверено):
// 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()
Этот ответ для Дженкинса
Перейдите на домашнюю страницу Jenkins → Управление Jenkins → Script Консоль
Запустите здесь Script. Измените copy_folder
на your project name
код:
def jobName = "copy_folder"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Вот еще один вариант: удалить сборки с помощью cURL.
$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Вышеуказанное удаляет сборку с № 1 по № 56 для задания myJob.
Если для экземпляра Jenkins включена аутентификация, необходимо указать имя пользователя и токен API следующим образом:
$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Токен API должен быть получен со страницы /me/configure
в Jenkins. Просто нажмите кнопку "Показать API-токен...", чтобы отобразить как имя пользователя, так и API-токен.
Редактировать: возможно, придется заменить doDeleteAll
на doDelete
в приведенных выше URL-адресах, чтобы это работало, в зависимости от конфигурации или используемой версии Jenkins.
Вы можете временно изменить конфигурацию проекта, чтобы сохранить только последнюю сборку, перезагрузить конфигурацию (которая должна уничтожить старые сборки), а затем снова изменить настройку конфигурации на нужное значение.
Вот как удалить ВСЕ ПОСТРОЙКИ ДЛЯ ВСЕХ РАБОТ...... используя скрипт Jenkins.
def jobs = Jenkins.instance.projects.collect { it }
jobs.each { job -> job.getBuilds().each { it.delete() }}
Это лучший вариант из доступных.
Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }
Этот код удалит всю историю сборки Jenkins Job.
Если вы хотите очистить историю сборки MultiBranchProject (например, конвейер), перейдите на домашнюю страницу Jenkins → Управление Jenkins → Консоль скрипта и запустите следующий скрипт:
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()
}
Еще один простой способ очистить сборки - это добавить старый плагин Discard в конце ваших заданий. Установите максимальное количество сборок для сохранения и затем запустите задание еще раз:
https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
Перейдите в каталог %HUDSON_HOME%\jobs\<projectname>
remove builds
и удалите ссылки lastStable, lastSuccessful
и удалите файл nextBuildNumber
.
После выполнения вышеуказанных шагов перейдите по ссылке ниже от UI
Jenkins- > Управление Jenkins → Перезагрузка конфигурации с диска
Он будет делать то, что вам нужно
Если вы используете метод Script Console, попробуйте использовать следующее вместо этого, чтобы учесть, если задания сгруппированы в контейнеры папок.
def jobName = "Your Job Name"
def job = Jenkins.instance.getItemByFullName(jobName)
или
def jobName = "My Folder/Your Job Name
def job = Jenkins.instance.getItemByFullName(jobName)
Использование Script Console.
В случае, если задания сгруппированы, можно либо дать ему полное имя с косой чертой:
getItemByFullName("folder_name/job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
или пересечь иерархию следующим образом:
def folder = Jenkins.instance.getItem("folder_name")
def job = folder.getItem("job_name")
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Удаление непосредственно из файловой системы небезопасно. Вы можете запустить приведенный ниже скрипт, чтобы удалить все сборки из всех заданий (рекурсивно).
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)
}
}
}'''
Перейдите к: %JENKINS_HOME%\jobs\jobName
Откройте файл "nextBuildNumber" и измените номер. После этого перезагрузите конфигурацию Дженкинса. Примечание: файл nextBuildNumber содержит следующую сборку, которая не будет использоваться Дженкинсом.