Я развернул Jenkins на своем компьютере с CentOS, Jenkins работал хорошо в течение 3 дней, но вчера возникла Disk space is too low. Only 1.019GB left.
проблема.
Как я могу решить эту проблему, когда мой мастер отключается на несколько часов?
Я развернул Jenkins на своем компьютере с CentOS, Jenkins работал хорошо в течение 3 дней, но вчера возникла Disk space is too low. Only 1.019GB left.
проблема.
Как я могу решить эту проблему, когда мой мастер отключается на несколько часов?
Вы можете легко изменить порог из пользовательского интерфейса jenkins (моя версия 1.651.3):
[]
Эта функция предназначена для предотвращения работы на ведомых устройствах с небольшим количеством свободного места на диске. Снижение порога не решит тот факт, что некоторые задания не очищаются должным образом после завершения.
В зависимости от того, что вы строите:
Альтернатива 1 – предоставление нового ведомого устройства для каждого задания (используйте точечные ведомые устройства — существует множество подключаемых модулей, которые интегрируются с различными облачными провайдерами для предоставления на лету компьютеров по запросу).
Альтернатива 2 – запустить сборку внутри контейнера. Все будет удалено после завершения сборки
Помимо вышеперечисленных решений, есть более «ОБЩИЙ» способ — напрямую удалить самого большого потребителя пространства с машины Linux. Вы можете выполнить следующие шаги:
Используя
ls -lart
также для отображения скрытой папки, обычно установка jenkin помещается в папку .jenkins/[xxxxx ~]$ ls -lart
drwxrwxr-x 12 xxxx 4096 8 февраля 02:08 .jenkins/
Используйте
df -h
, чтобы отобразить дисковое пространство на высоком уровне.
du -sh ./*/
для вывода общего объема памяти для каждой подпапки в текущем пути.
du -a /etc/ | sort -n -r | head -n 10
перечислит 10 самых популярных каталогов, занимающих место на диске в /etc/
Обычно папка
./job/
или папка./workspace/
может быть самой большой папкой. Пожалуйста, войдите внутрь и удалите базу по мере необходимости (НЕ удаляйте всю папку).
rm -rf theFolderToDelete
Вы можете ограничить уменьшение дискового пространства, отказавшись от старых сборок. Для этого есть флажок в конфигурации проекта.
На самом деле это законный вопрос, поэтому я не понимаю отрицательных голосов, возможно, он относится к Superuser или Serverfault. Это мягкий порог предупреждения, а не жесткий предел, когда на диске не хватает места.
Дженкинс такой же. Вывод таков: для многих небольших проектов системное свойство с именем hudson.diagnosis.HudsonHomeDiskUsageChecker.freeSpaceThreshold
можно было бы уменьшить.
Говоря, что я не проверял это, и есть отказ от ответственности
Нет гарантии совместимости
Как правило, эти переключатели часто носят экспериментальный характер и могут быть изменены без предварительного уведомления. Если вы найдете некоторые из них полезными, отправьте заявку, чтобы сделать их официальной функцией.
У меня есть задание по очистке со следующими этапами сборки. Вы можете запланировать это @daily или @weekly.
Execute system groovy script
шаг сборки для очистки старых заданий: import jenkins.model.Jenkins
import hudson.model.Job
BUILDS_TO_KEEP = 5
for (job in Jenkins.instance.items) {
println job.name
def recent = job.builds.limit(BUILDS_TO_KEEP)
for (build in job.builds) {
if (!recent.contains(build)) {
println "Preparing to delete: " + build
build.delete()
}
}
}
Вам потребуется установить подключаемый модуль Groovy.
Execute shell
шаг сборки для очистки каталогов кешаrm -r ~/.gradle/
rm -r ~/.m2/
echo "Disk space"
du -h -s /
Чтобы проверить свободное место в качестве Jenkins Job:
FREE_SPACE
: требуется свободное место в ГБ.#!/usr/bin/env bash
free_space="$(df -Ph . | awk 'NR==2 {print $4}')"
if [[ "${free_space}" = *G* ]]; then
free_space_gb=${x/[^0-9]*/}
if [[ ${free_space_gb} -lt ${FREE_SPACE} ]]; then
echo "Warning! Low space: ${free_space}"
exit 2
fi
else
echo "Warning! Unknown: ${free_space}"
exit 1
fi
echo "Free space: ${free_space}"
Free space: (.*)
Описание: Free space: \1
Регулярное выражение для неудачных сборок: Warning! (.*)
\1
Для тех, кто не знает, где лежат конфиги, скачайте tmpcleaner с https://updates.jenkins-ci.org/download/plugins/tmpcleaner/
Здесь вы получите файл hpi. Перейдите в раздел «Управление Jenkins» -> «Управление плагинами» -> «Дополнительно», а затем загрузите сюда файл hpi и перезапустите jenkins.
Вы можете сразу увидеть разницу, если перейдете в «Управление узлами».
Поскольку мой jenkins был установлен на сервере Debian, я не понял большинство ответов, связанных с этим, поскольку не могу найти папку /etc/default или файл jenkins. Если кто-то знает, где находится папка /tmp или как ее настроить для debian, дайте мне знать в комментариях.