Компиляция на нескольких хостах - PullRequest
1 голос
/ 18 сентября 2008

Предположим, что вы разрабатываете код, который нужно компилировать и запускать на нескольких хостах (скажем, в Linux и Windows), как бы вы сделали это наиболее эффективным способом, учитывая:

  • У вас есть полный доступ к оборудованию для каждого хоста, для которого вы компилируете (в моем случае хост Linux и хост Windows, стоящий на моем столе)
  • Создание сетевого диска слишком дорого
  • Не требуется фиксация в центральном репозитории - предположим, что есть CI-движок, который пытается собрать, как только что-нибудь проверяется в

«Эффективный» означает, что цикл компиляции-редактирования-запуска должен быть максимально коротким и простым.

Ответы [ 9 ]

3 голосов
/ 18 сентября 2008

Лучшее, что я могу порекомендовать, - это потрясающий кроссплатформенный проект под названием «BuildBot».

BuildBot может автоматически вызывать сборку на каждой платформе, которую вы поддерживаете, каждый раз, когда вы проверяете новую версию в вашей системе контроля версий. Сделайте так, чтобы он строился на OSX, Linux (Ubuntu), Linux (Debian), Linux (Redhat), Vista, Windows XP и т. Д., И отправлял электронные письма или что угодно, когда вы отказываете в сборке.

В рамках процесса сборки вы можете опубликовать двоичные файлы, если тесты пройдут. Полезно для «ночных» или «кровоточащих» сборок.

Вот несколько URL:

1 голос
/ 19 сентября 2008

Большинство серверов сборки, упомянутых в других ответах, проверяют ваши изменения в системе контроля версий. Учитывая ваше «Не требуется никаких фиксаций в центральном репозитории» , я рекомендую вам попробовать Jetbrains TeamCity CI сервер.

Он имеет плагины для Visual Studio и Eclipse и позволяет запрашивать « приватную сборку », отправляя ваши изменения прямо на сервер сборки. Для каждого проекта вы можете определить ряд конфигураций сборки с различными требованиями (ОС является одним из возможных требований). Если сборки пройдут успешно, плагин предложит вам зафиксировать ваши изменения.

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

Похоже, что Pulse также имеет такую ​​же функцию , но у меня нет опыта из первых рук.

1 голос
/ 18 сентября 2008

Мы находим, что Hudson - отличный CI-сервер, который может выполнять сборки из системы контроля версий по мере необходимости. Поскольку он написан на Java, он может работать на выбранной вами целевой платформе, а интерфейс является веб-интерфейсом, которым вы можете управлять из любого места. Есть плагины для большинства вещей, которые вы хотите сделать, и, что самое главное, это бесплатно!

0 голосов
/ 19 сентября 2008

Одно слово: Круиз (не круиз-контроль) очень приятно.

Вы можете получить двух агентов бесплатно и одного агента на платформу. Установка на Mac и PC занимает буквально минуты, и, как я слышал, на Linux не так уж и плохо.

0 голосов
/ 19 сентября 2008

Один из вариантов будет Cascade , который позволяет вам тестировать свои изменения на всех ваших платформах до, а не после фиксации, путем "проверки" их на сервере.

0 голосов
/ 18 сентября 2008

Поскольку вы используете CI, я предполагаю, что вы уже правильно настроили процесс сборки. Что мы делаем, так это то, что мы используем Windows-боксы в качестве машин разработчика, а CI работает на Solaris. Это гарантирует, что код хорошо компилируется на нескольких платформах. Код написан на Java, и мы не используем нативные библиотеки, поэтому вполне гарантированно, что код будет работать. Мы используем Bamboo на работе - это здорово, но не бесплатно :-)

Для своих частных проектов я использовал Continuum, но Husdon выглядит аккуратно (попробую) - спасибо Питер.

0 голосов
/ 18 сентября 2008

Используйте http://ccache.samba.org для ускорения компиляции, когда только несколько файлов изменились в более крупном проекте,

и когда были внесены большие изменения, одновременно используйте http://en.opensuse.org/Icecream для совместной распределенной компиляции.

Это, вероятно, должно значительно ускорить ваш цикл компиляции-редактирования-запуска.

0 голосов
/ 18 сентября 2008

Создать простую настройку для такой задачи очень просто.
Я предложу Cygwin для использования на платформе Windows. Таким образом, вы можете написать полностью переносимое программное обеспечение / скрипты для платформ Linux и Windows. Из вашего поста не ясно, на какой стадии проекта вы находитесь, но при условии, что вы только начинаете, я предложу использовать make для сборки вашего программного обеспечения. Вы можете использовать cron, чтобы запланировать периодичность проверки / построения круга. Вы даже можете отправить электронное письмо с журналом сборки, если оно не работает.
Существует целый ряд готовых ежедневных тестов сборки, как коммерческих, так и с открытым исходным кодом, которые вы можете найти в Google или, возможно, кто-то добавит сюда предложения.
Для этой задачи мы используем самодельный инструмент, поэтому я не могу предложить ничего готового.

Хорошо, я упустил момент, когда вы не хотите использовать систему управления версиями (что странно, но вы босс :)), в этом случае просто замените проверку на rsync, все остальное остается похожим.

0 голосов
/ 18 сентября 2008

Выберите одну машину в качестве своей коробки разработки.

Настройте другой на автоматическое обновление с вашего источника контроля на регулярной основе (ежечасно / ежедневно / что угодно). Любые ошибки сборки / тестирования должны посылать вам какие-то предупреждающие сообщения. (Электронная почта, им, что угодно). Ваша не-dev коробка все еще будет собираться локально, так как у нее есть собственная копия дерева.

Перед тем, как делать настоящий релиз, вы, конечно же, хотите провести тестирование на людях. Но это сохраняет жизнь в здравом уме в остальное время.

...