2008-09-18 7 views
1

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

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

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

ответ

1

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

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

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

Похоже, что у Pulse также есть same feature, но у меня нет опыта из первых рук.

0

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

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

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

1

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

0

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

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

0

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

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

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

3

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

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

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

Вот некоторые URLs:

+0

Но одно из требований заключалось в том, что никакие коммиты не нужны, т. Е. Я хочу иметь возможность строить непосредственно из одного дерева исходного кода. Мы используем Hudson для работы на Windows и Linux, поэтому я хочу обнаружить любые проблемы без фиксации. – JesperE 2008-09-18 07:45:42

0

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

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

+0

В приложении на базе Java есть много ошибок, которые будут работать только на одной платформе. У нас есть тестовые сбои, которые происходят только в Linux, даже в OSX. Я думаю, что лучшая практика - проверить все, что вы собираетесь отправить. – Trejkaz 2015-08-11 00:30:47

0

Один из вариантов: Cascade, который позволяет протестировать ваши изменения на всех ваших платформах раньше, чем после, совершать, путем «контрольной проверки» их на сервере.

0

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

Вы можете получить два агента бесплатно и один агент на платформу. Требуется буквально минут для настройки на Mac и ПК, и не так уж плохо на linux от того, что я слышу.

Смежные вопросы