Hudson with Subversion: сборка после фиксации в Windows с использованием Java или Ant - PullRequest
5 голосов
/ 26 августа 2011

Моя задача - заставить Хадсона начать новую сборку после коммита.Как я прочитал здесь , это делается с помощью svn post-commit hook.Проблема в том, что я не хочу использовать VBScript, поэтому он зависит от платформы.Как я вижу, единственные важные вещи в этом VBScript - это использование svnlook command и http://server/subversion/${UUID}/notifyCommit?rev=$REV url.Насколько мне известно, я могу сделать то же самое, просто используя, например, программу Java (для которой требуются параметры, такие как ревизия, местоположение хранилища и т. Д.)http://server/subversion/${UUID}/notifyCommit?rev=$REV URL?Мне нужны все возможные варианты.Было бы здорово, если бы кто-то мог описать весь процесс взаимодействия с Хадсоном (это цепочка внутренних процессов, которые выполняются после получения этого запроса)

EDIT Мне действительно нужно поведение после фиксации, а не механизм опроса.

Ответы [ 4 ]

4 голосов
/ 29 августа 2011

Самое быстрое кроссплатформенное решение - установить Cygwin на сервер SVN (при условии, что на SVN работает Windows) и использовать поддерживаемый скрипт оболочки:

REPOS="$1"
REV="$2"
UUID=`svnlook uuid $REPOS`
/usr/bin/wget \
  --header "Content-Type:text/plain;charset=UTF-8" \
  --post-data "`svnlook changed --revision $REV $REPOS`" \
  --output-document "-" \
  --timeout=2 \
  http://server/subversion/${UUID}/notifyCommit?rev=$REV

Мне нужны все возможные вариантыиз http://server/subversion/${UUID}/notifyCommit?rev=$REV

Почему?Это все, что вам нужно.

  • сервер Сервер Jenkins
  • $ {UUID} Unqiue ID для хранилища.
  • $ REV Новая редакция.

Вы также можете просто использовать что-то в хуке post-commit для ping: http://YOURHOST/jenkins/job/PROJECTNAME/build.Вы не получите свежую сборку для каждого коммита, но если у вас есть два коммита в течение секунд друг от друга, действительно ли вы хотите, чтобы каждый из них был построен?Вы хотите, чтобы пост-коммит был невероятно медленным?Если да, то на какой ОС установлен SVN-бокс?Возможно, вы достигнете пределов ОС и получите гораздо лучшую производительность (на том же уровне), если вы перейдете на Linux или серверную версию Windows.

3 голосов
/ 26 августа 2011

Вам не обязательно использовать svn hook. Просто заставьте Хадсон часто опрашивать репо на предмет изменений. Кроме того, вы можете использовать тихий период для учета нескольких коммитов подряд (которые в противном случае могли бы вызвать несколько сборок).

Из ссылки, которую вы разместили:

Jenkins может опрашивать репозитории Subversion на предмет изменений, и хотя это достаточно эффективно, это может происходить только раз в минуту, поэтому вам, возможно, придется подождать целую минуту, прежде чем Jenkins обнаружит изменение.

Я бы не подумал подождать минуту, что это большая проблема. В большинстве случаев вы можете даже не заметить этого.

1 голос
/ 30 июля 2013

Важно. Ни в одной статье на веб-сайте не упоминается о работе, которую вы должны создать с пометкой «Trigger Build Remotely».Это первый шаг, и этот шаг сам по себе дает вам URL-адрес, который вы должны вставить в свой скрипт HOOK Subversion Here is what you have to select while creating your job that would be called when commit occurs

соответствующий скрипт подключения

! / Bin / sh

REPOS="$1"
REV="$2"
/usr/bin/wget \
--header "Content-Type:text/plain;charset=UTF-8" \
--post-data "`/usr/local/bin/svnlook changed --revision $REV $REPOS`" \
--output-document "-" \
--timeout=2 \
http://build.development.com:8080/job/HdsVp/build?token=SVN_CHANGE
1 голос
/ 26 августа 2011

Я сделал это так: я настроил hudson, чтобы каждую минуту проверять наличие изменений (Шаблон: * * * * *). Это работает довольно хорошо. Единственная проблема, которая может возникнуть, заключается в том, что если два проекта, которые были зафиксированы в этом интервале и зависят друг от друга, то Хадсон сначала создает неправильный.

...