Как очистить историю сборки Дженкинс / Хадсон? - PullRequest
77 голосов
/ 05 августа 2010

Я недавно обновил конфигурацию одной из моих сборок Hudson.История сборки не синхронизирована.Есть ли способ очистить мою историю сборки?

Пожалуйста и спасибо

Ответы [ 13 ]

95 голосов
/ 31 июля 2013

Используйте консоль сценария (Управление Jenkins> Консоль сценария) и что-то вроде этого сценария для массового удаления истории построения задания https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/bulkDeleteBuilds.groovy

Этот сценарий предполагает, что вы хотите удалить только ряд сборок. Чтобы удалить все сборки для данного задания, используйте это (проверено):

// 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()
64 голосов
/ 28 июня 2016

Этот ответ для Дженкинса

  1. Перейти на домашнюю страницу Jenkins → Управление Jenkins Консоль сценариев

    Enter image description here

  2. Запустите следующий скрипт там. Измените 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()

Мое сообщение

45 голосов
/ 05 августа 2010

Если вы нажмете Управление конфигурацией Hudson / Обновить с диска, Hudson перезагрузит все данные истории сборки.

Если данные на диске испорчены, вам нужно перейти в каталог% HUDSON_HOME% \ jobs \ <<em> projectname > и восстановить каталоги сборки, как они должны быть. Затем перезагрузите данные конфигурации.

Если вы просто спрашиваете, как удалить всю историю сборок, вы можете просто удалить сборки по одному через пользовательский интерфейс, если их несколько, или перейти к% HUDSON_HOME% \ jobs \ <<em> имя проекта > и удалите все подкаталоги там - они соответствуют сборкам. После этого перезапустите службу, чтобы изменения вступили в силу.

20 голосов
/ 10 марта 2014

Вот еще один вариант: удалить сборки с помощью 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.

9 голосов
/ 05 мая 2015

Вот как удалить ВСЕ СТРОКИ ДЛЯ ВСЕХ РАБОТ ...... с помощью сценариев Jenkins.

9 голосов
/ 05 августа 2010

Вы можете временно изменить конфигурацию проекта, чтобы сохранить только последнюю 1 сборку, перезагрузить конфигурацию (которая должна уничтожить старые сборки), а затем снова изменить настройку конфигурации на желаемое значение.

4 голосов
/ 03 сентября 2018

Это лучший вариант из доступных.

Jenkins.instance.getAllItems(AbstractProject.class).each {it -> Jenkins.instance.getItemByFullName(it.fullName).builds.findAll { it.number > 0 }.each { it.delete() } }

Этот код удалит всю историю построения задания Jenkins.

2 голосов
/ 15 августа 2018

Если вы хотите очистить историю сборки 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()
}
1 голос
/ 08 июня 2018

Использование консоли сценариев.

В случае группировки заданий можно либо дать ему полное имя с косой чертой:

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()
1 голос
/ 24 апреля 2017

Если вы используете метод 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...