Jenkins: your Jenkins data directory is almost full и автоматическая очистка диска

Автор: | 27/03/2019

Есть Jenkins, на котором имеется пачка билдов проекта.

Спустя какое-то время – появилось сообщение вида:

Jenkins: your Jenkins data directory /var/lib/jenkins (aka JENKINS_HOME) is almost full

Проверяем диск с помощью ncdu, и находим несколько джоб, которые отжирают много места, например:

[simterm]

root@jenkins-production:/data/jenkins# du -h --max-depth 1 jobs/
..
25G     jobs/APITests
...

[/simterm]

Кучу места занимают логи:

[simterm]

root@jenkins-production:/data/jenkins# ls -lh /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log
-rw-r--r-- 1 root root 77M Mar  1 12:49 /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log

[/simterm]

И билдов много, и в каждой хранится такой лог.

Самый простой вариант – включить Discard Old Builds в настройке джобы:

Появилась она в 2.х, видимо, потому что когда-то, помнится, приходилось в Jenkins-файлах отдельно описывать очистку workdir.

Проверяем место сейчас:

[simterm]

root@jenkins-production:/data/jenkins# du -h --max-depth 1 jobs/APITests/jobs/Projectname/
23G     jobs/APITests/jobs/Projectname/jobs
23G     jobs/APITests/jobs/Projectname/

[/simterm]

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

[simterm]

root@jenkins-production:/data/jenkins# du -h --max-depth 1 jobs/APITests/jobs/Projectname/
7.0G    jobs/APITests/jobs/Projectname/jobs
7.0G    jobs/APITests/jobs/Projectname/

[/simterm]

Кроме того – существует плагин Discard Old Build, который позволяет использовать более тонкие настройки удаления старых данных.