Как использовать Hudson при сборке для нескольких платформ - PullRequest
8 голосов
/ 03 октября 2009

Сейчас мы создаем ряд приложений на C ++ для платформы Win32. Скоро мы будем портировать на Linux, а затем, может быть, и больше (32 и 64 бит для обоих).

Какова стандартная практика: вы используете несколько серверов hudson, каждый на своей платформе, для сборки или сервис hudson создает виртуальные машины и выполняет сборки?

Мне не понятен лучший практический способ сделать это.

В идеале я просто хочу одну коробку с кучей виртуальных машин, работающих под управлением Hudson, а затем она запускает сборки по мере необходимости.

Есть ли ресурс, на который кто-то может указать мне для этого?

Ответы [ 4 ]

5 голосов
/ 07 июня 2010

Мы используем Hudson для управления сборками C / C ++ (GNU C, GNU C ++, Watcom C) для нескольких ОС. Для нас программное обеспечение создано для Linux, Linux x64, QNX 4 и QNX6. Вот как мы его настроили:

  • 1 х ВМ для сервера Hudson, работающего под управлением Windows
  • 4 х виртуальных машин, по одной для каждого типа ведомых, поэтому у меня есть 4 подчиненных Hudson - по одному для QNX4, QNX6 и Linux 32 и Linux 64. Все они работают на одном сервере, так же как разные виртуальные машины, не столкнулся с проблемами. Мы строим около 100 проектов, разделенных почти поровну между 4 типами систем.

Вам не нужно никакого дополнительного оборудования. Существует плагин Hudson, который работает с виртуальными машинами VMWare, чтобы запускать их и выключать по мере необходимости.

Надеюсь, это поможет.

2 голосов
/ 03 октября 2009

Я играл с Хадсоном в многоплатформенном сценарии чуть больше года назад. У меня был один сервер hudson (который был смехотворно прост в настройке) на одной машине и отдельные подчиненные сборки для каждой из платформ. Я помню, что некоторое время один из клиентов сборки находился в VirtualBox на машине, на которой размещался сервер hudson. (Я думаю, что у меня тоже был сервер на виртуальной машине некоторое время.) Я не могу вспомнить, чтобы была какая-то принципиальная проблема с этой настройкой.

Однако, если вы хотите, чтобы несколько виртуальных сборочных машин собирались на одной физической машине, я думаю, вам понадобится очень мощная машина для этого. Компиляция C ++ требует большого количества ресурсов, и IIRC, когда hudson начинает сборку, запускает ее на всех платформах одновременно.

2 голосов
/ 03 октября 2009

Я никогда не использовал hudson для C ++, но для того, что вы планируете делать, возможно, имеет смысл взглянуть на плагин VMWare и посмотреть, будет ли он делать то, что вы хотите. Я бы порекомендовал иметь только одного мастера Гудзона, если это возможно. Скорее всего, вы захотите настроить образ машины VMWare с процессом Hudson Slave для каждой целевой среды, а затем создать сборку в этом Slave.

1 голос
/ 08 июня 2010

Обратите внимание, что не должно быть никакой связи между сервером, на котором работает Hudson, и подчиненными компьютерами, которые создают ваши программные приложения. Благодаря магии Java вы можете подключать различные подчиненные машины к ведущему с помощью JNLP. (один пример) Итак, физические или виртуальные машины, у вас может быть одна под управлением Windows, другая под Linux; один 32-разрядный, другой 64-разрядный; и т. д. - что бы ни требовали ваши приложения. Пока все они имеют JRE, они могут подключаться к мастеру Hudson и сообщать о состоянии сборок.

...