Comments 7
«Жаль, что нам так и не удалось послушать начальника транспортного цеха...»
Демо работы инструмента - удален
Ну то есть мало CI на 20 минут на серваке, тащим CI на 20 минут на локалку
В целом, контейнеризация сборки приносит два заметных торможения в сборку:
Запуск контейнера на каждый шаг - дополнительные
+-500m
в зависимости от системыКак будто, процессы местами медленнее работают внутри докер-конейтнеров, которые запускает Buildkit(там он немного лайфхачит с монтированием файловой системы) - примерно на 10% работает медленнее
Это не такие драматичные тормоза, которые сильно затормозят локальную сборку.
Как будто, в случае 20 мин CI - возможно стоит оптимизировать этот процесс или локально не гонять все этапы, требуются в CI/CD, т.к. это не всегда необходимо
Идея разбивается о скалы, когда у тебя Мак на arm, а собирать надо под Интел и у тебя есть сишные зависимости.
В то время, как nix shell, все ещё работает в таком случае.
Brewkit без проблем собирает на маке на arm под интел: под капотом у Docker Buidlkit используется qemu, который запустит x86 образы докера с встроеной эмуляцией.
Будет медленно, да.
Но только в случае отсуствия нативного образа под ARM.
Если есть или пересобрать образ под arm, указать его platform-у, докер будет автоматом скачивать образ под нужную платформу и обходится без той же виртуализации. Даже в Dockerfile или brewit.jsonnet ничего указывать не нужно.
Так что Brewkit/Docker Buidlkit прекрасно собирают проекты на разных системах (из ARM под x86, из x86 под ARM) - просто есть свои нюансы и особенности :)
Докеризация сборки проекта на всех уровнях