Как я могу убедиться, что все мои подчиненные сборки hudson проверяют одну и ту же версию svn для ежедневной сборки? - PullRequest
5 голосов
/ 01 августа 2010

Мое рабочее место использует Hudson для своих ежедневных сборок, когда несколько ведомых сборок (один Linux, один Windows, один Mac) проверяют нашу полную кодовую базу из svn и собирают наше приложение каждый день в полночь.Это все работает довольно хорошо.

Иногда возникает проблема, которая возникает ... хотя иногда разработчик работает поздно и регистрирует изменения в svn сразу после полуночи.Когда это происходит, возможно, что некоторые из ежедневных подчиненных сборок выполнят «проверку svn» до обработки фиксации svn, тогда как другие подчиненные сборки сделают это после обработки фиксации.Когда это происходит, мы получаем разные ревизии, созданные на разных платформах ... например, сборка Mac может быть сборкой SVN ревизии 5555, в то время как сборка Windows заканчивается сборкой SVN ревизии 5556. Это плохо, так как мы хотим, чтобы всеежедневных сборок для данного дня, основанных на той же кодовой базе.

Я полагаю, что один из способов избежать этого - запретить разработчикам совершать svn между 11:30 и 12:30, но я бы хотелпредпочитаю более элегантное решение, которое не зависит от поведения разработчиков.Есть один?В частности, если есть способ заставить Хадсона проверить версию кода, которая была текущей в полночь текущего дня (например, "svn co -r {" the-current-date "}") вместо проверкиГОЛОВА, я думаю, что это может сработать.

Есть ли общий / простой способ решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Решение немного зависит от того, как вы начнете сборку. Если все они запущены по таймеру, Вы можете позволить им всем запускаться одновременно. Риск того, что вы закончите с различными ревизиями, будет минимальным. Более элегантная версия - иметь одно задание, которое запускает все задания сборки, передавая ревизию в качестве параметра. Если сборка не слишком длинная, вы можете создать одно задание, которое передаст ревизию всем остальным заданиям.

РЕДАКТИРОВАТЬ: В настоящее время Hudson не поддерживает следующее (1.376)

Я также нашел хорошую svn book . В нем говорится, что вы можете заменить редакцию датой в фигурных скобках. Таким образом, вы можете попробовать <svn-url>@{00:00} в вашей конфигурации работы.

0 голосов
/ 29 июня 2011

Еще одна идея, которая мне показалась полезной, заключается в том, чтобы разделить один и тот же исходный каталог между подчиненными и иметь одну команду svn up, что сокращает время обновления svn, а также освобождает вас от необходимости синхронизации.

Iиспользуйте nfs на машинах Linux, также будет работать sshfs.

...