2010-12-10 7 views
4

Как настроить систему на наличие одного ведущего и нескольких подчиненных устройств при построении нормального c-кода с помощью gmake? Как подчиненные могут получить доступ к рабочему пространству от мастера? Я предполагаю, что доля NFS - это путь, но если это невозможно, то другие вариантов?Hudson slaves, как получить доступ к рабочему пространству

http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds есть, но не может понять, как обрабатывается совместное использование рабочей области?

Rsync? От мастера: работа SCM -> done -> rsync для всех подчиненных -> задание сборки, а если было выполнено на подчиненном -> rsync рабочее пространство обратно в master?

Любое доказательство концепции или реальных решений?

ответ

1

Только один способ делать вещи, другие существуют.

Рабочие пространства на самом деле не используются при распределении на несколько машин, поскольку они существуют в качестве каталогов на каждой из нескольких машин. Чтобы решить координацию элементов, любой элемент, который необходимо распределить из одной рабочей области в другую, копируется в центральный репозиторий через SCP.

Это означает, что иногда у меня есть задача, которую нужно ждать при посадке элементов в центральном репозитории. Чтобы исправить это, у меня есть задача запустить сценарий оболочки, который опроса репозитория через SCP для наличия необходимых элементов, и он ошибочно, если элементы не доступны через пять минут.

Единственный недостаток этого в том, что вам нужно пройти вокруг параметра (номер сборки), чтобы сохранить сборки на одной странице, не позволяя одной сборке собирать предыдущую версию, созданную артефактом. Это и вам нужно настроить множество ключей SSH, чтобы избежать необходимости передавать пароль при запуске скриптов SSH.

Как я уже сказал, это не идеальное решение, но я считаю, что он более стабилен, чем код захвата артефакта ssh для моего конкретного выпуска Hudson (и моего набора SSH-серверов).

С одной стороны, серверы SSH на большинстве машин Linux, похоже, действительно не имеют производительности. Решение, подобное моему, имеет тенденцию болотовать ваш SSH-сервер с большим количеством подключений, поступающих примерно в одно и то же время. Если вы обнаружите, что с вами происходит то же самое, вы можете добавить задержки таймера (простое, несовершенство), или вы можете перестроить SSH-сервер с помощью высокопроизводительных исправлений. Однажды я надеюсь, что высокопроизводительные исправления пробиваются в базовый код сервера SSH, при условии, что они не оказывают негативного влияния на безопасность сервера SSH.

4

Когда Хадсон запускает сборку на подчиненном узле, он выполняет проверку исходного элемента управления на этом узле. Если вы хотите скопировать другие файлы с главного узла или скопировать другие элементы обратно на главный узел после сборки, вы можете использовать Copy to Slave plugin.

+2

У меня было доказательство концепции группы с 5 ведомых делают именно это. Плагин perforce создавал бы новые рабочие области для каждого подчиненного устройства и выполнял бы начальную синхронизацию (которая выполнялась навсегда). После этого каждая машина будет только синхронизировать изменения со времени последней сборки, чтобы вернуть рабочее пространство в линию. Моя единственная проблема заключалась в том, что время от времени рабочие пространства попадали в какое-то несинхронное состояние, и мне пришлось бы полностью синхронизировать их. Работала очень неплохо, и мне не нужно было ничего собирать для копирования файлов. – dhable

+0

Интересный @Dan.Я подключаюсь к SVN и Team Server, и каждый из них настроен на полную проверку. Это занимает еще пару минут, но это еще не проблема, поскольку наша база кода относительно невелика. – dsolimano