Есть ли известное решение для разделения процесса сборки на сетевые машины?
Вариант использования:
Мы обычная компания по разработке программного обеспечения. У нас около 50 рабочих станций для разработки (Quad Core 2,66 ГГц, 4 ГБ оперативной памяти, 200 ГБ оперативной памяти). Не нужно говорить, что в любой момент не каждая машина загружена до максимума.
В любой момент одновременно выполняется от 5 до 15 проектов. Очевидно, что все они постоянно строятся на сервере, а не развертываются в соответствующей среде. Сборка одного проекта занимает от 3 до 15 минут.
Проблема : Всякий раз, когда мы строим 5 проектов подряд, последний проект будет готов через 25-50 минут. Параллельное построение не решает проблему (сборка - это только часть игры, которую нужно развернуть, запустить тесты и т. Д.)
ДА, правильное решение - добавить еще один сервер сборки, но «это предполагает покупку нового дорогостоящего оборудования, и мы уже потратили много!». Да, верно (черт их побери)!
Во всяком случае. Как насчет разбиения сборки среди рабочих станций разработчиков? Допустим, всякий раз, когда нам нужно построить проект «А», мы проверяем 5 рабочих станций и начинаем сборку на всех, которые не перегружены. Сборка может быть отменена разработчиком, если он действительно нуждается во всей мощности своей машины, если есть хотя бы одна машина, которая все еще строит. После завершения сборки можно выполнить развертывание в подходящей среде (размещенной на каком-либо сервере, а не на рабочей станции :)). Чем больше компания, тем больше это имеет для меня смысл.
Кто-нибудь пробовал что-то подобное? Есть ли хорошие практики? Любое полезное программное обеспечение?
(90% проектов .net C # , платформа - Windows )