Гудзоновские рабы, как получить доступ к рабочему пространству - PullRequest
4 голосов
/ 10 декабря 2010

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 10 декабря 2010

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

2 голосов
/ 04 февраля 2013

Это, конечно, поздний ответ, но может помочь другим.

В настоящее время я использую плагин Copy Artifact с отличными результатами. http://wiki.hudson -ci.org / дисплей / HUDSON / Copy + Артефакт + Plugin

(https://stackoverflow.com/a/4135171/2040743)

1 голос
/ 10 декабря 2010

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

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

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

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

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

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

...