Идея: Билд приложения в облаке для ускорения разработки

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Что если бы существовал плагин, который мгновенно компилирует приложение в облаке, а затем скачивает сборку на ваше тестовое устройство?

Похоже на Google Cloud Build, но для ускорения разработки, а не для финальных релизов.

В целом, насколько большая проблема для вас время компиляции? Беспокоит ли когда-нибудь — отвлекаетесь, чувствуете, что теряете время, раздражает шум вентилятора ноутбука?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

суровые украинские программеры билдят все на своих ноутах... подожду может прийдут реальные программеры и отпишутся )))

Есть такая Израильская контора XOREAX с продуктом www.incredibuild.com. Хорошая штука, первый раз использовали еще в 2000-ных, компы тогда были слабенькие, а эта штука реально ускоряла билд. Помню что даже успешно ломал ее координатор в Soft ICE что бы можно было подключить побольше машин в сеть.

было бы актуально лет 25 назад

Мы привыкли называть эту штуку «процессор».
Задачи компиляции древние, как само программирование. И представь себе, реализовывались даже на компьютерах с дискетками, без жёсткого диска. Посему средства избегания перекомпиляции того, что уже скомпилено, существуют десятки лет. Равно как и без них не делается ни одной системы сбокри.

Вообще компилировать много исходников в 1 модуль — это моветон. Разве что ты пилишь ядро линукса и билдишь пакет. Но и тогда там львиная доля исходников в собранном состоянии к моменту выдачи сборок.

А вообще, открою секрет Полишинеля: не собирай приложение. Работай напрямую с собранными модулями, развёрнутыми в твою файловую систему. Если надо — напиши отдельную сборку или даже поставь отдельный сборщик, который будет собирать тестовую конфигурацию. Да, ты столкнёшься с необходимостью протестить потом и апликуху в целом, но типичные для этого подхода ошибки — не нахождение файлов по адресу, забытые файлы в сборке, отсутствие прав доступа — вообще типичны для инсталлируемых приложений, а следовательно уже должны быть покрыты существующими тестами.

Пример: пишешь на Java, и на продакшен даёшь уже полностью стабильный проверенный пакет или архив с модулем. Но на разработке у тебя JRebel, который подгружает свежие версии классов даже без остановки приложения. В прод ты скорее всего такого не дашь, хотя это тоже обсуждаемо.

для java-среды и gradle такое есть: github.com/...​uildfoundation/mainframer

Вроде бы как CI и инкрементальная компиляция уже есть и давно

Думал об этом 3 года назад, проект на .Net 4.5, билдился около 20 минут. Так ничего и не нашел:(

А что мешает сбилдить не в один модуль, а в несколько, исключительно для полигона? Соответственно, на ребилд отправится только то, с чем работаешь в данный момент. Иначе, если оно только билдится 20 минут, то сколько же занимает тестирование — тестить-то нужно всё, что потенциально могло поменяться? Дай угадаю, его просто не запускают, пока код не готов. И все сюрпризы выплывают уже на дедлайне.

Там было под 30 микросервисов, после каждого мерджа свежих ченджей в свою ветку из develop сложно понять где именно поменяли. Если сам поменял что-то, то конечно можно было перебилдить только нужный модуль и он в хост перезагрузится.

Вот! Я ж о том же. Если сам поменял, нахрена всё-то перекомпиливать, сиди себе работай, даже если у тебя в тесте слегка устаревшие версии чего-то там. Главное что API на месте.

Ааааа. Да. Мы тож столкнулись с .net микроскрвисами и монолитным репо под все.
В итоге разнесли все микроскрвисы по своим репо + nuget. И траблы большой пересборки отпали сами собой.
Теперь все красиво и изолировано.

У нас тоже было по отдельным репам=) Между микросервисами есть контракты которые меняются, и хрен его знает кто что поменял(в +50 коммитов в девелоп за пол дня это ок), команда 40+ девов и ~9 команд. А так как это был CQRS, а там еще и разные саги которые могли отвалиться, короче любой ребейс с дева в свою ветку (а это в течении дня надо делать) — неизбежный ребилд всего=)

У нас просто на пайплайне сборка всего из мастера каждого микосервиса. В latest + latest.sha
А потом для запуска просто дергаешь докер из репо.
Быстрее получается да и компы монструозные не нужны.

Работал в похожем проекте, деплоить и собирать локально было нереально, очень геморно и ппц как сложно, + комп сильно дорогой нужен был, + сам по себе пайпалйн сборки был очень не тривиален.
Сделали билд сервер+Git, плюс дев окружение в облаке(тогда еще просто сервак в каком-то датацентре) запушл ченьджи,пнул сборку проекта на сервере, задеплоил в облако, вот и проверяй свои костыли...
На другом проекте был эйжур и персональные дев окружения в облаке, присунул фикс, в пару кликов залил на окружение и скинул тестировщикам...
Вобщем, ничего нового много вариантов.

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

Раздражай в ответ. Что мешает показать менеджменту, сколько время-ДЕНЕГ просирается (читай можно сэкономить = заработать), если добыть требуемую железяку. Просранное время вернуть невозможно даже за большие деньги. А железяка имеет просто свою цену, зачастую небольшую.

А что мешает настроить это сейчас через тот-же Cloud Build?

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

В целом, насколько большая проблема для вас время компиляции?

Компилятор дарит оплачиваемый отдых посередине рабочего дня.

Хромиум компилился 40 мин.
WiFi роутер где-то так же.

Что-то сильно сомневаюсь, что его компилят без участия промежуточных файлов. А если они есть (а они есть), что мешает не перекомпиливать их заново?

Да, собрать Хромиум себе можешь и за 40 минут. Но когда что-то поправил, ты ж не полезешь заново перекомпиливать всё?

Тобто злити свій/контори код якомусь невідомому «облаку» ще й заплатити за то?)

і як його заюзати в типовому кейсі розробника в якого є ноут і все?)

Чувак попытался натравить на хромиум. Оно не завелось, а изменения еще пару дней откатывал и глюки ловил.

Проблемы с версиями компилятора значит

изменения еще пару дней откатывал

git reset —hard ?

нет, изменения в пакетах и скриптах
сорри, то кажется был не distcc, а какая-то кешировалка компиляции.

думаю, да.
надеялись, что он ускорит пересборки

Підписатись на коментарі