Привет, может сможет кто то дать совет, есть maven проект

который собирается через werf из докерфайла на гитлабе, сборка через werf build --repo, и вот сама сборка в докерфайле через mvn clean package, и каждый раз при отработке пайплайна оно заново переустаналивливает все зависимости, есть ли варик как то закэшировать результат установки зависимостей и не повторять его из раза в раз?

8 ответов

13 просмотров

Переписать на стейджи?)

Ivan-Chaikin Автор вопроса
Gennady [sga] Shelapugin
Переписать на стейджи?)

я дико извиняюсь, но как ето граммотно сделать в рамках мавена? Бо сейчас оно на выходе дает jarник, и этот джарник уже копируется в финальный образ, надо разделить установку зависимостей и компиляцию?

Ivan Chaikin
я дико извиняюсь, но как ето граммотно сделать в р...

Можно использовать stapel для этих целей. (1) Переиспользовать кэш сборки x при последующих сборках, сбрасывать кэш раз в месяц: image: maven-build ... git: - add: / to: /app stageDependencies: setup: "**/*" shell: installCacheVersion: {{ div .Commit.Date.Unix (mul 60 60 24 30) }} install: cd /app && mvn -B -s settings.xml clean package -T 1C -DskipTests setup: cd /app && mvn -B -s settings.xml clean package -T 1C -DskipTests --- image: final ... import: - image: maven-build add: <path>/target/<jar-name>-*.jar to: /app/bin/<jar-name>.jar before: setup (2) или использовать монтирование. p.s. пока так, но уже скоро мы планируем реализовать распределённый кэш (хранится, версионируется подобно стадиям), который будет работать для пользователя подобно монтированию.

Ivan-Chaikin Автор вопроса

Второй способ рабочий, но не рекомендуемый и со своими очевидными недостатками. То, что в p.s., это уже третий способ, эффективный и правильный по всем признакам. А что надо учитывать для multi-stage?

n
Да, я хотел про третий способ поговорить

Насколько я помню, в верфи buildkit отключён, а без него в простом докере были ложные пересборки (играл роль порядок объявления стейджа)

n
Насколько я помню, в верфи buildkit отключён, а б...

Buildkit по умолчанию включён, но можно выключить. Известных проблем по этой теме не имеем.

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

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

Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
А как подмаунтить каталог если я не буду стапель юзать, а просто Докерфайл?
yoshi kakbudto
3
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, подскажите пожалуйста, а как поле project (в werf.yaml) параметризовать ? werf converge —project <APP_NAME> в одном общем репо держим 1 хельм чарт и деплоим с ...
Sulaymon
5
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Здрасьти! Делаю Buildah+Docker-multistage. В первом имадже делаю COPY кода. Из них генерю файлы: 31229b03ef2ed26c5e02d0e8320f8a04 ./package.json a0b92a158d0bed9570350af0ed3e...
Vyacheslav
4
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Карта сайта