Добрый день. Подскажите, а как правильно подкладывать в определенную стадию

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

32 ответов

22 просмотра

я подобное просто в слои кеширую

? import: - image: здесь_название_образа_собранного_ранее add: ... to: ... before: ... либо каждый новый образ строить на основе предыдущего: fromImage: ...

Alexey-Erisov Автор вопроса
Сергей Голод
? import: - image: здесь_название_образа_собранног...

А, точно. Забыл, что можно сослаться на предыдущие образы.

Alexey-Erisov Автор вопроса
Сергей Голод
? import: - image: здесь_название_образа_собранног...

А не подскажите, как сослаться на сбилженный ранее образ? название образа: backend В каждой сборке название не меняется. Есть какие-то werf.values, которые позволяют сослаться на backend, но из предыдущей сборки?

Alexey-Erisov Автор вопроса
Alexey Erisov
А не подскажите, как сослаться на сбилженный ранее...

Я почитал, для этих целей есть build_dir. Но ее не реккомендуется использовать, вот и думаю это сделать на уровне артефактов

Alexey Erisov
А не подскажите, как сослаться на сбилженный ранее...

Протегиройте его используя short sha commit, а потом просто используйте env которая содержит это значение в следующей джобе. Я по умолчанию все образы тегирую %image%-{{ env "CI_COMMIT_SHORT_SHA" }}

Alexey-Erisov Автор вопроса

Не совсем понял. Нужно ведь не захардкоженное значение, а ровно предыдущий билд. То бишь мне надо в wer.yaml, как-то при каждой сборке получать ссылку на ровно предыдущую сборку.

Alexey Erisov
Не совсем понял. Нужно ведь не захардкоженное знач...

Ну возьмите переменную номер билда минусуйте единицу и вот вам предыдущий билд. У вас это в одном пайплайне? В разных джобах?

Alexey Erisov
Не совсем понял. Нужно ведь не захардкоженное знач...

И какая цель конечная? Выдрать данные из образа для следующей джобы? Тогда только mount

Alexey-Erisov Автор вопроса
Abix
И какая цель конечная? Выдрать данные из образа дл...

Да, сборочный кеш между сборками подкладывать к каждой сборке, и после нее обновлять. Да, build_dir прям в точности решает этот вопрос, но он же не реккомендуется докой, вот и думал, как-то артефактами сделать

Владимир Муковоз
в слое докера)))

Ага и разориться на хранении папки node_modules )) для каждой сборки, сам же недавно писал и говорил что много образ весит.

Alexey-Erisov Автор вопроса
Владимир Муковоз
в слое докера)))

werf с докером послойно не кеширует же. Да и не особо поможет это. Спрашивал уже как-то. Потому переписал на stapel. Но вопрос все равно остался, как правильно подложить кше сборок от предыдущих сборок, чтобы ускорить текущую. КРоме build_dir получается никак?

Abix
Ага и разориться на хранении папки node_modules ))...

и там нет нодемодулес, ну там где у меня образ много весит

Abix
Ага и разориться на хранении папки node_modules ))...

зато быть уверенным что твой кеш не создаёт нигде конфликтов

Alexey Erisov
werf с докером послойно не кеширует же. Да и не ос...

в моём случае отлично помогает, поясните как это не помогает вам, не понимаю

Abix
Ага и разориться на хранении папки node_modules ))...

ну и опять же, большое занятое место будет только в случае если у тебя одновременно много разных вариаций по модулям. В реале врядли такое где-то случается, чаще всего билд изменили и продолжительное время на нём живут, имея может ещё несколько тестовых вариантов которые обкатываются. А в таком случае проблем с местом не будет. И не будет проблем с конфликтами.

Alexey-Erisov Автор вопроса
Abix
Ну возьмите переменную номер билда минусуйте едини...

Это внутри werf.yaml. Мне же в stapel надо сослаться на образ, из которого делать импорт. Вот как в werf.yaml задать imageFrom: backend - 1 я не знаю )

Abix
screenshot

к чему это?

Alexey Erisov
А не подскажите, как сослаться на сбилженный ранее...

Я не совсем понимаю что значит сбилженный ранее. Если образа(его слоев), указанного в import нет в репе - то верф увидит отсутствие и запустит сборку образа указанного в import. И выстроит последовательность запуска чтобы в импорт подложить собранный образ

Alexey-Erisov Автор вопроса

я так понимаю в рамках стапеля?

Alexey-Erisov Автор вопроса
Владимир Муковоз
я так понимаю в рамках стапеля?

Ну сейчас на стапель перешел да, он более гибкий. Но и с докером проблема не особо решилась бы. Вариант, 1 либо использовать монтирование ( build_dir). Но его прям нереккомендует сама дока верфа, и я вот хз. 2 либо на уровень выше пытаться это решить - в gitlab-ci.yml. То бишь оперировать сборками самого гитлаба. Но нужно будет тогда как-то связывать прокидывать в джобах номера сборок. Вероятно, так можно решить, но усложняет слишком всё.

Alexey-Erisov Автор вопроса
Владимир Муковоз
почему с докером не решилась бы?

Так суть останется таже. Нам нужно сослаться на предыдущий билд. Со стапелем просто это внутри werf.yml всё, а с докером в dockerfile ушло бы, и я даже хз, как это бы решилось внутри dockerfile

посмотрите на мой скрин, я ни на что не ссылаюсь и при этом слой используется из кеша

Alexey-Erisov Автор вопроса
Владимир Муковоз
посмотрите на мой скрин, я ни на что не ссылаюсь и...

Вы не о том. Пакеты и у меня кешируеются. До этого докером, сейчас стапелем. Вообще не важно. Слой уже поменялся. Он будет пересобираться, в него внесли изменения. Вопрос в том, чтобы ПЕРЕД его пересборкой, подложить к нему результат от предыдущей его сборки, чтобы ускорить нынешнюю сборку

Alexey Erisov
Вы не о том. Пакеты и у меня кешируеются. До этого...

или я вас не понимаю или вы всё ещё не понимаете что такое слои в докере

Похожие вопросы

Обсуждают сегодня

werf cleanup как-то старается не удалять промежуточные имаджи (ранее известные как артефакты)? Уже несколько раз из cache-repo улетал наш базовый node имадж. Что выглядит лог...
Vyacheslav
2
Здрасьти! Делаю Buildah+Docker-multistage. В первом имадже делаю COPY кода. Из них генерю файлы: 31229b03ef2ed26c5e02d0e8320f8a04 ./package.json a0b92a158d0bed9570350af0ed3e...
Vyacheslav
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
В английской версии документации к докер инструкциям я увидел этот пункт: > Tip: you can also export environment variables right to the user stage instructions. В русской ...
Alex
3
всем привет) подскажите, судя по поиску, пару лет назад возникал вопрос насчет преобразования секретов при шифровании к строковому типу. Что-то за это время менялось? Сейчас ...
Denis Yudin
9
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Вопрос. Имеем большие репозитории и медленные скорости. Из-за чего очень долго длятся пайплайны. Azure DevOps, PR пайплан, выкачиваем только эфимерный(виртуальный) комит, и з...
Alex Подрябинкин
11
Карта сайта