Только один способ делать вещи, другие существуют.
Рабочие пространства на самом деле не используются при распределении на несколько машин, поскольку они существуют в качестве каталогов на каждой из нескольких машин. Чтобы решить координацию элементов, любой элемент, который необходимо распределить из одной рабочей области в другую, копируется в центральный репозиторий через SCP.
Это означает, что иногда у меня есть задача, которую нужно ждать при посадке элементов в центральном репозитории. Чтобы исправить это, у меня есть задача запустить сценарий оболочки, который опроса репозитория через SCP для наличия необходимых элементов, и он ошибочно, если элементы не доступны через пять минут.
Единственный недостаток этого в том, что вам нужно пройти вокруг параметра (номер сборки), чтобы сохранить сборки на одной странице, не позволяя одной сборке собирать предыдущую версию, созданную артефактом. Это и вам нужно настроить множество ключей SSH, чтобы избежать необходимости передавать пароль при запуске скриптов SSH.
Как я уже сказал, это не идеальное решение, но я считаю, что он более стабилен, чем код захвата артефакта ssh для моего конкретного выпуска Hudson (и моего набора SSH-серверов).
С одной стороны, серверы SSH на большинстве машин Linux, похоже, действительно не имеют производительности. Решение, подобное моему, имеет тенденцию болотовать ваш SSH-сервер с большим количеством подключений, поступающих примерно в одно и то же время. Если вы обнаружите, что с вами происходит то же самое, вы можете добавить задержки таймера (простое, несовершенство), или вы можете перестроить SSH-сервер с помощью высокопроизводительных исправлений. Однажды я надеюсь, что высокопроизводительные исправления пробиваются в базовый код сервера SSH, при условии, что они не оказывают негативного влияния на безопасность сервера SSH.
У меня было доказательство концепции группы с 5 ведомых делают именно это. Плагин perforce создавал бы новые рабочие области для каждого подчиненного устройства и выполнял бы начальную синхронизацию (которая выполнялась навсегда). После этого каждая машина будет только синхронизировать изменения со времени последней сборки, чтобы вернуть рабочее пространство в линию. Моя единственная проблема заключалась в том, что время от времени рабочие пространства попадали в какое-то несинхронное состояние, и мне пришлось бы полностью синхронизировать их. Работала очень неплохо, и мне не нужно было ничего собирать для копирования файлов. – dhable
Интересный @Dan.Я подключаюсь к SVN и Team Server, и каждый из них настроен на полную проверку. Это занимает еще пару минут, но это еще не проблема, поскольку наша база кода относительно невелика. – dsolimano