Дженкинс: удалите старые сборки с командной строкой
Я удаляю старые сборки jenkins с rm
, где размещено задание:
my_job/builds/$ rm -rf [1-9]*
Эти старые сборки все еще видны на странице задания.
Как удалить их с помощью командной строки?
(без кнопки удаления в каждом пользовательском интерфейсе сборки)
Ответы
Ответ 1
Похоже, что это было добавлено в 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
Ответ 2
Вот еще один вариант: удалять сборки удаленно с помощью 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-адресах выше, чтобы выполнить эту работу в зависимости от конфигурации.
Ответ 3
- Проверьте ваш домашний каталог Дженкинс:
- "Управление Jenkins" ==> "Настроить систему"
![enter image description here]()
- Проверьте поле "Домашний каталог" (обычно это /var/lib/jenkins)
Команда для удаления всех сборок заданий jenkins
/jenkins_home/jobs> rm -rf */builds/*
-
После удаления следует перезагрузить конфиг:
- "Управление Jenkins" ==> "Перезагрузить конфигурацию с диска"
![enter image description here]()
Ответ 4
Вы можете сделать это с помощью Groovy Scripts, используя Hudson API.. Доступ к установке jenkins
http://localhost:38080/script.
Например, для удаления всех старых сборников всех проектов с помощью script:
Примечание. Будьте внимательны, если вы используете Finger Prints, вы потеряете всю историю.
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")
}
}
Есть много примеров на Jenkins wiki
Ответ 5
Есть ли причина, по которой вам нужно сделать это вручную, вместо того, чтобы позволить Jenkins удалять старые сборки для вас?
Вы можете изменить конфигурацию своей работы, чтобы автоматически удалять старые сборки, основанные либо на количестве дней, либо на количестве сборок. Больше не беспокоиться об этом или не отслеживать, Дженкинс просто делает это за вас.
Ответ 6
Следующий script очищает старые сборки заданий. Вы должны перезагрузить конфигурацию с диска, если вы удалите сборку вручную:
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")
}
}
Ответ 7
В консоли Jenkins Scriptler запустите следующий Groovy script, чтобы удалить все сборки заданий, перечисленных в представлении:
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()
}
}
}
Ответ 8
Из консоли скрипта Запустите это, но вам нужно изменить имя задания:
def jobName = "name"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().each { it.delete() }
job.nextBuildNumber = 1
job.save()
Ответ 9
def jobName = "MY_JOB_NAME"
def job = Jenkins.instance.getItem(jobName)
job.getBuilds().findAll { it.number < 10 }.each { it.delete() }
если бы у вас было 12 сборок, это очистило бы сборки 0-9, и у вас осталось бы 12,11,10. Просто загляните в консоль скриптов
Ответ 10
Перейдите в панель настроек задания в Jenkins, найдите Source Code Management- > Additional Behaviors- > Нажмите "Добавить", выберите "Очистить" перед проверкой. Дженкинс очистит старые сборки на этой сборке