cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies
Подскажите, пожалуйста, с чем может быть связано, были ли какието серьезные изменения в работе клинера между этими версиями?
Были изменения в 2.10 cleanup: change default from unlimited to one image per reference Но они никак не должны влиять на поведение дефолтных политик. Давайте разбирать ваш кейс.
хм, спс, поизучаю еще у себя и вернусь
а что именно значит imagesPerReference? если в werf.yaml у нас собирается 4 имаджа, то сколько будет хранится, всего 1 или по одному для каждого из 4?
Для каждого reference будет искаться указанное количество образов для каждого образа в werf.yaml.
в общем кейс такой: перешли с v1.2.233 на v2.10.5 есть джоба в гитлабе в мастер ветке с билдом, следом за ней идет джоба с клинапом, которая теперь начала удалять большинство stages tags созданные в билде более двух часов назад (временно их сохраняет дефолтный keepImagesBuiltWithinLastNHours). keepPolicies не задано, то есть используются дефолтные. в werf.yaml собирается 4 имаджа, в каждом много слоев (больше 10) Возможно у меня какое-то неверное понимание imagesPerReference, по дефолту оно сохраняет последние 10 имаджей для каждого слоя или вообще для всех слоев? или может для слоев(stages) вообще другая логика?
При очистке политики применяются к образам. Для всех оставшихся образов сохраняются связанные слои (в том числе и промежуточные образов (multistage)).
Если cleanup запустить с verbose, то там появится чуть больше информации для отладки. Можем вместе глянуть на вывод.
попробую, спасибо
запустил через werf cleanup --log-verbose=true, единственное что появилось дополнительное по интересующим тегам это:
Запустил через werf cleanup --log-verbose=true, единственное что появилось новое по интересующим тегам это image info in the manifest cache (CACHE MISS)
- А вы случаем не собираете с --dev? - Очистка по истории Git хоть что-нибудь кипает?
собирается просто через werf build, да, в Saved tags 20 тагов
попробовал полностью удалить все имаджи из реджистри, запустить свежий билд снуля, после чего сразу же клинап, из 12 стейджей удалились 11, не удалился только самый последний в докерфайле слой
Выглядит стремно. Нужно больше деталей — пока больше никто с подобным не обращался и тесты все проходят.
В общем поэкспериментировал и понял что поведение клинапа зависит от того, какой я базовый имадж указываю в докерфайле, то есть, например, есть образ А и образ Б (оба собраны у нас же и хранятся в нашем же реджестри), с первым клинер говорит что удалит все кроме последнего стейджа, со вторым сохраняет все стейджи, все остальные строки докерфайла и настройки верфа идентичны
примеры с общедоступными образами: тут удаляются стейджи FROM ubuntu ENV USER=app WORKDIR /app RUN echo "TEST" а тут нет: FROM composer ENV USER=app WORKDIR /app RUN echo "TEST"
А что в werf.yaml?
project: test-ms configVersion: 1 deploy: helmRelease: "[[ project ]]" --- image: app dockerfile: Dockerfile.php args: COMPOSER_NO_DEV: 1 staged: true contextAddFiles: [".netrc"]
Понял. Надо смотреть buildah, staged сборку. 🫡
спасибо!
История воспроизведена. Решение пока в процессе.
супер, главное что это не наша локальная история оказалась=)
Добрый день. А есть какойто МР или issue по этому поводу, за которым можно следить?
Issue на днях создам и дам знать. Если в двух словах, то там есть существенные ограничения Buildah, которые требуют от нас серьёзно поменять логику и сделать масштабный рефакторинг. БольшАя часть сделана, но на этой неделе не факт, что получится вернуться и доделать эту задачу.
Понял, спасибо, буду ждать
Добрый день, а нет какого-то воркэраунда, через флаги например, только через обновление на будущий релиз?
Не, там прям фундаментальная история.
Пока не успели добраться, но в долгий ящик откладывать не планируем. https://github.com/werf/werf/issues/6373
Обсуждают сегодня