Привет, в настоящее время я работаю с Jenkins CI Server и хочу запустить задание / сборку через svn post commit hook.
Ладно, я укушу: почему вы не просто позволяете Дженкинсу сработать при совершении Subversion?
Я видел, как люди делают это для CVS, потому что Дженкинсу может потребоваться много времени, чтобы опросить CVS, чтобы узнать, была ли сделана фиксация CVS. Но Дженкинсу требуется всего несколько секунд, чтобы определить, что фиксация Subversion выполнена.
Если вы действительно настаиваете на запуске сборки Jenkins самостоятельно, почему бы просто не настроить свои проекты для разрешения удаленного запуска? В разделе «Построение триггеров» для каждого задания вы указываете токен, а затем запускаете его с помощью wget:
wget $JENKINS_URL/job/foo?token=BUILD_NOW
(Предполагается, что установленный токен BUILD_NOW
)
Таким образом, вам не нужно беспокоиться о ревизии, и Дженкинс создаст последнюю ревизию, которая была проверена.
Другие считают, что это проблема синхронизации времени, но я не уверен. Вы передаете номер сборки в своем аргументе. Вы можете попробовать несколько вещей:
- Спите около 30 секунд, прежде чем запускать сборку, и посмотрите, поможет ли это. Я бы не стал хранить его в сценарии, потому что он задерживает коммит Subversion, но это может помочь вам определить, что это не проблема синхронизации.
- Что, если вы добавите один к
$REV
и затем запустите сборку Jenkin? Может быть, это решит проблему.