Дженкинс: удалить старые сборки с помощью командной строки

Я удаляю старые сборки Дженкинса сrm где работа размещена:

my_job/builds/$ rm -rf [1-9]*

Эти старые сборки все еще видны на странице вакансий. Как убрать их с помощью командной строки?
(без кнопки удаления в каждом пользовательском интерфейсе сборки)

 Jayan22 мар. 2016 г., 15:05
Не ответ, но полезно, если у вас есть заводнойgithub.com/jenkinsci/jenkins-scripts/blob/master/scriptler/...

Ответы на вопрос(7)

Проверьте ваш домашний каталог Дженкинс:"Управление Jenkins" ==> "Настроить систему" Проверьте поле «Домашний каталог» (обычно это/ VAR / Lib / Jenkins)

Команда для удаления всех сборок заданий jenkins

/jenkins_home/jobs> rm -rf */builds/*

После удаления следует перезагрузить конфиг:

"Управление Jenkins" ==> "Перезагрузить конфигурацию с диска"

 killthrush20 окт. 2015 г., 19:59
Я не смог заставить работать решения cURL или jar, и это казалось хорошим решением для простого удаления журналов сборки. Короче говоря, некоторые пароли просочились в мои журналы, и мне просто нужно было кое-что почистить. Однако этот метод не затрагивает другие записи сборки, например, на самом экране работы. В моем случае мне было все равно.
Решение Вопроса

что это было добавлено в CLI, или, по крайней мере, над ним работают:http://jenkins.361315.n4.nabble.com/How-to-purge-old-builds-td385290.html

Синтаксис будет примерно таким:java -jar jenkins-cli.jar -s http://my.jenkins.host delete-builds myproject '1-7499' --username $user --password $password

 mors06 сент. 2013 г., 17:26
Это творит чудеса, спасибо большое!
 Clerenz08 июн. 2015 г., 17:35
Баночка не должна быть установлена. Просто поместите его где-нибудь в вашей файловой системе и введите команду с полным путем (или введите команду в этом каталоге).
 user350278618 сент. 2014 г., 18:46
Где я должен установить файл JAR?
 Ben20 дек. 2013 г., 21:57
Вы не упомянули, где взятьjenkins-cli.jar: Ваша установка Jenkins скажет вам, где на этой странице:http://localhost:8080/cli/.

удалить сборки удаленно с помощью cURL. (Замените начало URL-адресов тем, что вы используете для доступа к Jenkins через браузер.)

$ 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-токен.

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

 yegeniy04 авг. 2014 г., 17:38
Я должен был использоватьdoDelete вместоdoDeleteAll, Может быть, не в правильной версии Дженкинс.
 Paul Croarkin06 июн. 2014 г., 14:25
Этот ответ заслуживает большего количества голосов. Спасибо!
 Erwan Legrand11 мар. 2015 г., 17:26
@greggles Это странно, это все еще здесь в версии 1.580.1. Возможно, вы включили аутентификацию на вашем экземпляре Jenkins. Я обновлю свой ответ, чтобы объяснить, как бороться с аутентификацией.
 greggles06 мар. 2015 г., 17:18
Это старая функция или новая? Это не доступно в 1.556.
 Erwan Legrand15 янв. 2016 г., 16:59
@AmosBordowitz Вероятно, Дженкинс не доступен как / Дженкинс в вашем случае. Какой URL вы используете для доступа к Jenkins через браузер?

ить конфигурацию с диска, если вы удалили сборку вручную:

import hudson.model.*

for(item in Hudson.instance.items) {
    if (!item.isBuilding()) {
        println("Deleting old builds of job " + item.name)
        for (build in item.getBuilds()) {
            //delete all except the last
            if (build.getNumber() < item.getLastBuild().getNumber()) {
                println "delete " + build
                try {
                    build.delete()
                } catch (Exception e) {
                    println e
                }
            }
        }
    } else {
        println("Skipping job " + item.name + ", currently building")
    }
}
 jack jay05 февр. 2017 г., 11:53
добавить объяснение к вашему ответу.

чтобы удалить все сборки заданий, перечисленных в представлении:

import jenkins.model.Jenkins

hudson.model.Hudson.instance.getView('<ViewName>').items.each() {
    println it.fullDisplayName


    def jobname = it.fullDisplayName
    def item = hudson.model.Hudson.instance.getItem(jobname)
    def build = item.getLastBuild()
    if (item.getLastBuild() != null) {
        Jenkins.instance.getItemByFullName(jobname).builds.findAll {
            it.number <= build.getNumber()
        }.each {
            it.delete()
        }

    }
}

по которой вам нужно делать это вручную, а не позволять Jenkins удалять старые сборки за вас?

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

 Dennis S.04 апр. 2014 г., 21:34
Это в конфигурации для каждой работы. Установите флажок «Отменить старые сборки», и станут доступны опции для контроля того, как старые сборки удаляются.
 ziggy04 апр. 2014 г., 21:01
Где этот вариант? Я не могу найти его в моей версии Jenkins - 1.5.
 Bruno Lopes01 февр. 2013 г., 17:04
Я обнаружил, что это полезно, когда вы создаете проект и получаете несколько сбоев, прежде чем он будет правильно настроен. После того, как это сделано, я хотел очистить старые неправильные сборки, потому что они в конечном итоге просто шум
 Anentropic09 февр. 2016 г., 12:21
@ziggy вы не можете найти его, потому что это плагин, который нужно установить в первую очередьwiki.jenkins-ci.org/display/JENKINS/Discard+Old+Build+plugin
 Russell Lego24 авг. 2018 г., 21:31
Я хотел использовать эту функцию "" ", чтобы изменить конфигурацию задания для автоматического удаления старых сборок" "". Но это не работает. Я установил его и сохранил тысячи старых сборок.

используя Hudson API. Получите доступ к вашей установке jenkins

http://localhost:38080/script.

Например, для удаления всех старых сборок всех проектов с использованием следующего сценария: Примечание: будьте осторожны, если вы используете отпечатки пальцев, вы потеряете всю историю.

import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
  // check that job is not building
  if(!item.isBuilding()) {
    System.out.println("Deleting all builds of job "+item.name)
    for(build in item.getBuilds()){
      build.delete()
    }  
  }
  else {
    System.out.println("Skipping job "+item.name+", currently building")
  }
}

Или для очистки всех рабочих мест:

import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
  // check that job is not building
  if(!item.isBuilding()) {
    println("Wiping out workspace of job "+item.name)
    item.doDoWipeOutWorkspace()
  }
  else {
    println("Skipping job "+item.name+", currently building")
  }
}

Есть много примеров наДженкинс вики

 user350278618 сент. 2014 г., 19:05
Как я могу удалить несколько сборок, скажем, 1-10 в конкретной сборке, и где я могу найти документацию по использованию пакета hudson
 Eduardo Fabricio21 авг. 2014 г., 15:38
ах хорошо .. спасибо :)
 Steve26 сент. 2014 г., 20:56
Текущая реализация не будет работать в папках. Вам нужно сделать Hudson.instance.getAllItems (AbstractProject.class), чтобы получить все проекты.
 Slav19 авг. 2014 г., 15:23
он включил подсветку кода на Groovy.

Ваш ответ на вопрос