2014-01-13 3 views
1

У нас есть сборки, которые генерируют много журналов. Это занимает пространство, поэтому мы должны сказать дженкинсу удалить старые сборки. Это проблема, потому что мы теряем долгосрочную статистику.Jenkins: как удалить журнал, но сохранить сборку?

Я думаю об удалении или опорожнении файла журнала каждой сборки старше недели и сообщить дженкинсу не удалять старую сборку.

Есть ли чистый Способ достижения того же?

ответ

2

Я видел, что есть плагин для удаления журнала, но я лично его не использовал.

https://wiki.jenkins-ci.org/display/JENKINS/Delete+log+plugin

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

0

Не нашли действительно чистого способа, который существует, но использование groovy изнутри Jenkins возможно более чистое, чем удаление из файловой системы за пределами Jenkins.

В этом примере groovy-скрипт удалит все журналы из сборок задания test_dummy, которые старше 180 дней.

import jenkins.model.*; 
def days = 180 
def jobName = "test_dummy" 
def j = Jenkins.instance.getItemByFullName(jobName); 
j.getBuilds().byTimestamp(1, System.currentTimeMillis() - (1000L * 60 * 60 * 24 * days)).each { it.getLogFile().delete(); it.getLogFile().createNewFile() } 

Так получить работу, получить все строит для него в вашем диапазоне меток времени, а затем получить и удалить все файлы журналов. Я также собираюсь создать пустой файл на их месте, хотя я уверен, что если я углубился глубже, я мог бы найти способ просто обрезать до 0.

Использование Jenkins getJobNames(), вы можете получить все задания в Дженкинсе, а затем прокрутите их, если хотите. В зависимости от того, как вы делаете резервные копии, вы можете связать его, прежде чем делать резервные копии, чтобы сэкономить место.

Смежные вопросы