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