Обзор
Очистка хоста удаляет неактуальных данные и сокращает размер кеша автоматически в рамках вызова основных команд werf и сразу для всех проектов. При необходимости очистку можно выполнять в ручном режиме с помощью команды werf host cleanup.
Уведомление о недавней автоматической очистке
Автоматическая очистка выполняется в фоновом режиме, поэтому её вывод пользователю не виден. Если последняя фоновая очистка освободила место, следующая подходящая команда werf сообщает об этом: как давно выполнялась очистка, сколько локальных образов werf удалил явно и сколько места освобождено всего. Команды с машиночитаемым выводом сохраняют сообщение для следующей команды, которая может его показать. Сообщение показывается только один раз для каждого запуска очистки.
Если очистка не смогла снизить занимаемое место на томе до разрешённого уровня, сообщение показывается как предупреждение: недавно собранные образы могут продолжить удаляться при следующих запусках, пока на хосте не будет освобождено место или не будет повышен разрешённый порог.
Переопределение директории хранилища бэкенда (Docker или Buildah)
Параметр --backend-storage-path (или переменная окружения WERF_BACKEND_STORAGE_PATH) позволяет явно задать директорию хранилища бэкенда в случае, если werf не может правильно определить её автоматически.
Изменение порога занимаемого места и глубины очистки хранилища бэкенда (Docker или Buildah)
Параметр --allowed-backend-storage-volume-usage (WERF_ALLOWED_BACKEND_STORAGE_VOLUME_USAGE) позволяет изменить порог занимаемого места на томе, при достижении которого выполняется очистка хранилища бэкенда (по умолчанию 70%). Значение можно указать в процентах (например, 70) или в абсолютных единицах (например, 50GB, 100GiB).
Параметр --allowed-backend-storage-volume-usage-margin (WERF_ALLOWED_BACKEND_STORAGE_VOLUME_USAGE_MARGIN) позволяет установить глубину очистки относительно установленного порога занимаемого места хранилища бэкенда (по умолчанию 5%).
Примечание: Опции внутри одной группы (например, порог и глубина очистки для бэкенда) должны использовать одни и те же единицы измерения. Смешивание процентов и абсолютных единиц (например,
--allowed-backend-storage-volume-usage=100GB --allowed-backend-storage-volume-usage-margin=5) не допускается.
Очистка сборочного кеша сборочного бэкенда (Docker или Buildah)
При очистке хоста werf удаляет контейнеры, образы и неиспользуемые тома, однако стратегия очистки сборочного кэша сборочного бэкенда остаётся на усмотрение пользователя.
К примеру, для бэкенда Docker доступны следующие подходы к очистке:
- Установить порог хранимого кеша в конфигурации сборщика.
- Настроить регулярную очистку с помощью
cronи командыdocker buildx prune --max-used-space=bytes.
По аналогии пользователь может настроить очистку и для Buildah.
Изменение порога занимаемого места и глубины очистки локального кэша
Параметр --allowed-local-cache-volume-usage (WERF_ALLOWED_LOCAL_CACHE_VOLUME_USAGE) позволяет изменить порог занимаемого места на томе, при достижении которого выполняется очистка локального кэша (по умолчанию 70%). Значение можно указать в процентах (например, 70) или в абсолютных единицах (например, 10GB, 500MiB).
Параметр --allowed-local-cache-volume-usage-margin (WERF_ALLOWED_LOCAL_CACHE_VOLUME_USAGE_MARGIN) позволяет установить глубину очистки относительно установленного порога занимаемого места локального кэша (по умолчанию 5%).
Примечание: Опции внутри одной группы (например, порог и глубина очистки для локального кэша) должны использовать одни и те же единицы измерения. Смешивание процентов и абсолютных единиц (например,
--allowed-local-cache-volume-usage=10GB --allowed-local-cache-volume-usage-margin=5) не допускается.
Выключение автоматической очистки
Пользователь может выключить автоматическую очистку неактуальных данных хоста с помощью параметра --disable-auto-host-cleanup (WERF_DISABLE_AUTO_HOST_CLEANUP). В этом случае рекомендуется добавить команду werf host cleanup в cron, например, следующим образом:
# /etc/cron.d/werf-host-cleanup
SHELL=/bin/bash
*/30 * * * * gitlab-runner source ~/.profile ; source $(trdl use werf 2 stable) ; werf host cleanup