Через ран я же могу запустить только один образ и

запаралелить не могу?

10 ответов

29 просмотров

Да, но можно распараллелить на уровне CI. В рамках сборки это прям не тру. Если вы уж хотите с этим велосипедом жить, то заверните образы в if eq .Env tests (https://werf.io/docs/v2/reference/werf_yaml_template_engine.html#env) и запускайте отдельно с --repo="". Если есть общие слои с остальными образами, то можно ещё --secondary-repo=$REPO прикрутить.

Alex-Подрябинкин Автор вопроса
Aleksei Igrychev
Да, но можно распараллелить на уровне CI. В рамках...

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

Alex Подрябинкин
такой вариант типо работает как надо/ но по факту ...

+ можете подробнее рассказать про промежуточные образы и ожидаемое поведение. Из вашего сообщения не понятно.

Alex Подрябинкин
такой вариант типо работает как надо/ но по факту ...

Если я правильно понял, то вы тесты можете переложить из image в artifact. Они не должны в final-repo отправляться (если ничего не путаю).

Alex-Подрябинкин Автор вопроса
Aleksei Igrychev
+ можете подробнее рассказать про промежуточные об...

Ситуация. Есть много репозиториев 50+. В каждый репозиторий подключен сабмодуль, который содержит в себе универсальный хелм с базовыми знаниями, инструкция stapel для сборки базовых имеджей, набор темплейтов для стапела, а также единый werf yaml в котором собираются все необходимые кусочки. В каждом репозитории есть несколько директорий. src для исходного кода, values где лежит структура файлов для helm, build_vars где лежат файлы с параметрами сборки. Смысл заключается в том что разработчики могут положить в директорию build_vars файл с именем {service_name}.yaml где будут перечислены минимальные наборы параметров. Такие как на чем написан сервис dotnet(90%)/node/python и так далее, укажат путь к корню исходного кода в папке src (в этой папке код может быть сразу в корне для одного сервиса, может много директорий для разных сервисов), и указывают необходимо ли делать юнит тесты, проводить сканирование на уязвимости, сонар сканирование исходного кода и другие параметры. Исходя из этих параметров и логики заложенной в werf.yaml и stapel шаблоны система автоматически рендерит все необходимые шаги для выполнения. Так как большая часть кода это дотнет и все виды проверок чаще всего надо запускать после рестора пакетов, или вместе с Билдом(сонар) все эти шаги делаются внутри сборочного процесса. А так как сервисов иногда много (есть монорепы с 10+ сервисами) и они дробятся внутри одного репозитория, тратится много времени на отправку не нужных слоев в регистри(сонар, тесты, уязвимости). Раньше я тягал все это добро по всем регистри, потом использовал final-repo и теперь на прод не тянуться слои внутренних стейджов всех образов. Сейчас. Подключил параметр final: true final:false и теперь эти образа где проходят сканирования, не попадают в финальный регистри. Однако осталось проблема на pr пайпланах, мне надо запустить все (тесты, сонар, уязвимости) на кодовой базе которая мне достается из предыдущих слоев. Плюс надо запустить в правильном порядке и в правильной параллельности и передавать данные (файлы) между этим проверками. Например кое-где сонар должен запускаться после тестов чтобы забрать через импорт файл с покрытием, кое где сканирование на уязвимости должно запускаться после сонара, чтобы имело ссылку на сонар сканирование, чтобы передать эту информацию вместе со своими результатами на сервер. В итоге все работает и выполняется как надо, в правильном порядке и где необходимо, разработчики сами подкидывают файл для нового сервиса, и сразу же получают все необходимое. Но засчёт того что образов получается много, а некоторые вообще никак не нужны (только прогнать тесты) хотелось бы их скипнуть от загрузки в регистри, чтобы не тратить время на это. Надеюсь хоть что-то с моей писанины станет понятно))))

Alex Подрябинкин
Ситуация. Есть много репозиториев 50+. В каждый ре...

В werf version v2.9.1есть - If you simply need to limit the scope of image use, use the 'final' directive: ''' image: builder from: alpine:3.10 final: false ''' Вам подойдёт?

Alex Подрябинкин
Ситуация. Есть много репозиториев 50+. В каждый ре...

Добро. Тогда не понятно, почему вам не подходит один из предложенных мной вариантов (https://t.me/werf_ru/40539).

Alex-Подрябинкин Автор вопроса
Aleksei Igrychev
Да, но можно распараллелить на уровне CI. В рамках...

Про вот такой вариант, всё делается как надо, но все базовые образы не проверяются по хэшу в регистри, а начинают скачиватся. По итогу хотел избавиться от выгрузки образов, а получил загрузку

Alex Подрябинкин
Про вот такой вариант, всё делается как надо, но в...

Если вы хотите базовые образы (или ещё какие-то слои) хранить в registry, то вы можете создать отдельные образы, на которых базировать свои тестовые (fromImage).

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

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

Всем привет. Понимаю, что, наверное, сто раз поднимали эту тему, но по ключевым словам не смог найти. Как передать в values.yaml зависимого хелм-чарта теги образов, собираемых...
Vitalik Petrov
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Блин а мне как поумнеть ?
Toxin
191
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Карта сайта