2010-08-04 5 views
55

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

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

+0

Вы можете уточнить "полностью перепутались"? Возможно, кто-то испытает подобную проблему раньше и может направить вас на то, как ее исправить. –

+0

сожалеет о двусмысленности. исправлено. – myusuf3

+0

Здесь есть более новый и немного более конкретный вопрос: https://stackoverflow.com/questions/13052390/jenkins-remove-old-builds-with-command-line/22303284 –

ответ

40

Если вы выберите Управление Hudson/Конфигурация Reload с диска, Hudson перезагрузит все исторические данные сборки.

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

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

+0

Я удалил все файлы и папки внутри «/ var/lib/jenkins/jobs/Demo», но я, когда отправляюсь в Дженкинс UI внутри этой РАБОТЫ Я все еще вижу историю сборки. – paul

+1

После того, как вы «обезьяна» со структурой каталогов, просто перейдите в «Управление дженкинсами» и выберите «Обновить конфигурацию с диска» – DanBaker

+1

@paul, после удаления там папок, ** restart ** Jenkins необходим для просмотра сборки история исчезла из пользовательского интерфейса. BTW, если мы используем Jenkins, путь обычно находится в/var/jenkins_home/jobs/{project name}/builds/ – Bright

8

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

+0

Как вы это делаете? –

+0

Извините, не использовали Хадсон сейчас пару лет, но посмотрите на это, перезагрузив конфигурацию: http://stackoverflow.com/questions/5216552/does-anyone-know-how-to-reload-hudson-configuration -without-restarting –

76

С помощью консоли сценария (Управление Jenkins> Консоль Script) и что-то вроде этого сценария для основной массы удалить историю построить задания, 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() 
+5

Отлично! определенно лучший подход! :) – hek2mgl

+0

отличный трюк, но как насчет сброса счетчика сборки? любые сценарии для этого? –

+1

@JesChergui Я обновил, чтобы показать сброс номера сборки. Консоль скрипта позволяет вам контролировать всевозможные вещи, см. Http://javadoc.jenkins-ci.org/ (AbstractProject - хорошее место для начала работы с заданиями) – rjohnston

13

Вот еще один вариант: удалить сборки с завитком.

$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll 

Вышеупомянутые удаляет сборку № 1 до № 56 для работы myJob.

Если включена проверка подлинности на экземпляре Дженкинс, имя пользователя и маркер API должны быть предоставлены следующим образом:

$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll 

Этот API маркер должен быть извлечена из страницы/меня/настроить в Дженкинс. Просто нажмите кнопку «Показать API-маркер ...», чтобы отобразить как имя пользователя, так и маркер API.

Редактирование: возможно, придется заменить doDeleteAll на указанные выше URL-адреса, чтобы сделать эту работу в зависимости от конфигурации или версии используемого Дженкинса.

0

Перейдите: %JENKINS_HOME%\jobs\jobName

Откройте файл "nextBuildNumber" и изменить номер. После этого перезагрузите конфигурацию Дженкинса. Примечание: файл nextBuildNumber содержит следующую сборку, которая не будет использоваться Дженкинсом.

1

Еще один простой способ очистить сборки - это добавить старый плагин Discard в конце ваших заданий. Установить максимальное количество сборок, чтобы сохранить и затем снова запустить задание:

https://wiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin

7

Вот как удалить ВСЕ СТРОИТ ДЛЯ ВСЕХ РАБОЧИХ МЕСТ ......используя Jenkins Scripting.

def jobs = Jenkins.instance.projects.collect { it } 
jobs.each { job -> job.getBuilds().each { it.delete() }} 
0

Перейти к %HUDSON_HOME%\jobs\<projectname> удалить builds реж и удалить lastStable, lastSuccessful ссылки и удалить nextBuildNumber файл.

После выполнения выше шагов перейти по ссылке ниже от UI
Jenkins-> Управление Дженкинс -> Конфигурация Перезагрузка с диска

Он будет делать то, что вам нужно

37

Этот ответ для Jenkins

  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() 

My post

+3

Лучший ответ до сих пор –

+0

Это самое быстрое решение. –

+0

Да, но для этого НЕ перезапускайте Jenkins или, похоже, не обновляете nextbuildnumber до 1, когда вы делаете сборку после перезапуска. Моя работа началась в 39 лет, поэтому мне пришлось переделать это. – Will

0

При использовании метода консоли Script затем попробуйте использовать следующие вместо того, чтобы принять во внимание, если задания сгруппированы в контейнеры папки.

def jobName = "Your Job Name" 
def job = Jenkins.instance.getItemByFullName(jobName) 

или

def jobName = "My Folder/Your Job Name 
def job = Jenkins.instance.getItemByFullName(jobName) 
Смежные вопросы