Как удалить сборки с 11 по 1717 в Jenkins?

Из-за неправильной конфигурации у меня более 1700 неудачных сборок в задании Дженкинса.

Как я могу эффективно их очищать?

42 голоса | спросил Aaron Digulla 30 AMpTue, 30 Apr 2013 11:48:32 +040048Tuesday 2013, 11:48:32

5 ответов


59

У вас есть несколько вариантов:

  • Временно установите количество построений для сохранения в конфигурации задания ( Discard Old Builds ), чтобы эти сборки были удалены при завершении следующей сборки. Если следующая сборка - 1800, установите ее, чтобы сохранить самые последние 85 или около того. Отметьте все старые сборки (например, от 1 до 10) как Keep This Build Forever перед началом следующей сборки. Эта опция не сможет удалить некоторые сборки, если у вас есть работа по нисходящему потоку, которая предотвращает удаление восходящих сборников (не проблема в вашей ситуации, если все из них не удалось).

  • Используйте Консоль сценариев в Управление Jenkins . Если это задание на верхнем уровне (не в папке), следующее будет делать трюк:

      

    Jenkins.instance.getItemByFullName('JobName').builds.findAll { it.number > 10 && it.number < 1717 }.each { it.delete() }

    Конечно, этот подход обычно требует хороших резервных копий. Существует много возможностей, которые можно разбить с помощью консоли сценария.

  • Удаление папок сборки с диска (по умолчанию в $JENKINS_HOME/jobs/JobName/builds/, используя отметку времени начала в качестве имени папки) и перезапустите Jenkins или Перезагрузить конфигурацию с диска . Этот параметр не позволит плагинам, например, сохраняйте историю SVN в порядке, перемещая любые изменения в последующую сборку, чтобы выполнять свою работу.

ответил Daniel Beck 30 AMpTue, 30 Apr 2013 11:56:31 +040056Tuesday 2013, 11:56:31
16

Как Aaron правильно, вы также можете использовать Jenkins CLI для этой цели:

java -jar jenkins-cli.jar -s http://yourserver.com delete-builds <JobName> 11-1717
ответил jaltek 10 +04002014-10-10T19:40:45+04:00312014bEurope/MoscowFri, 10 Oct 2014 19:40:45 +0400 2014, 19:40:45
12

Просто выполните вызов API:

curl -X POST http://jenkinUser:[email protected]/job/theJob/[11-1717]/doDelete

Чтобы получить APIToken: войдите в Jenkins> Конфигурация> Показать токен API.

ответил hello_harry 24 J000000Friday15 2015, 18:19:17
3

Шаблон сценария для запуска в Jenkins Script-Console. Используйте флажок reallyDelete, чтобы проверить его до фактического удаления:

// Jenkins job
def jobName = 'foo'
// Range of builds to delete
def rs = Fingerprint.RangeSet.fromString("11-1717", false);
// Set to true to actually delete. Use false to test the script.
def reallyDelete = false;

// ----------------------------------
def job = Jenkins.instance.getItemByFullName(jobName);
println("Job: ${job.fullName}");

def builds = Jenkins.instance.getItemByFullName(jobName).getBuilds(rs);
println("Found ${builds.size()} builds");
builds.each{ b-> 
  if (reallyDelete) {
    println("Deleting ${b}");
    b.delete();
  } else {
    println("Found match ${b}");
  }
}
ответил Aaron Digulla 7 ThuEurope/Moscow2017-12-07T16:14:47+03:00Europe/Moscow12bEurope/MoscowThu, 07 Dec 2017 16:14:47 +0300 2017, 16:14:47
0

Я создал небольшой скрипт python, который будет служить этой цели. Ниже приведен скрипт:

delete_jenkins_builds.py

from os import listdir, path
import shutil


job_build_fullpath = '/var/lib/jenkins/jobs/My-Jenkins-Project/builds'
print listdir(job_build_fullpath)

for build_dir in listdir(job_build_fullpath):
        if build_dir.isdigit() and int(build_dir) in range(11, 1718):
                build_dir_fullpath = path.join(job_build_fullpath, build_dir)
                print "Deleting: " + build_dir_fullpath
                shutil.rmtree(build_dir_fullpath)
  • job_build_fullpath - путь к каталогу сборки Job

  • range (start_build_no, end_build_no) - range (11, 1718) ищет все сборки, начиная с build no. 11 построить нет. 1717. Пожалуйста, установите его соответствующим образом.

  • shutil.rmtree (build_dir_fullpath) - удаляет каждый каталог сборки, находящийся в диапазоне.

Версия Python: 2.7

ответил Shubham Soin 22 MarpmWed, 22 Mar 2017 16:08:14 +03002017-03-22T16:08:14+03:0004 2017, 16:08:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132