Плагины Hudson для визуальных SVN - PullRequest
1 голос
/ 16 июня 2010

Проблема

У меня есть сервер сборки hudson, настроенный на windows server 2008. Мы хотим иметь возможность фиксировать в хранилище, и после успешной фиксации мы хотим, чтобы визуальный svn-сервер отправлял сообщение иливызвать сервер сборки hudson, чтобы он знал, что ему нужно выполнить сборку.Мы хотим, чтобы он собирался только тогда, когда кто-то делает коммит, поэтому мы не хотим постоянно опрашивать svn, потому что это не нужно.

Вопрос

Есть ли плагин для визуального svn, который может автоматически отправлятьсообщение Хадсону или есть лучший способ сделать это без использования wget?Я попытался использовать wget для URL сборки hudson в хуке post commit сервера Visual SVN, но я понял, что хуки post commit можно установить только для всего репозитория, а не для отдельных проектов в Visual SvN Server, поэтому, если мы сделалиНебольшое изменение в другом проекте в репозитории. Он скажет hudson, что он должен создать, даже если в проекте, связанном с hudosn, не произошло никаких изменений ...

Ответы [ 3 ]

3 голосов
/ 16 июня 2010

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

0 голосов
/ 11 августа 2018

Если вы хотите запускать сборки только для определенных проектов, самый эффективный способ - записать логику в ловушку svn post-commit. Это позволяет избежать ненужного трафика опроса и запускает задания только при изменении желаемого проекта. Приведенный ниже пример используется в нашем экземпляре сервера VisualSVN.

set repos=%1
set rev=%2

FOR /F "tokens=*" %%k IN ('svnlook dirs-changed "%repos%" -r %rev% 2^>NUL') do (
  set Changed_Project=%%k
)
set Changed_Project=%Changed_Project:~9,9%
if "%Changed_Project%" == "Project_A" goto Actions_For_Project_A

:Actions_For_Project_A
curl -X POST "http://JenkinsVM:8080/job/Job_Name/build?&token=TOKEN_NAME

В приведенных выше строках предполагается, что проект находится в каталоге / branch / Project_A. Для другого места вам нужно будет отрегулировать значения начала и длины строк. Также предполагается, что curl находится в заданном пути и что вы создали маркер аутентификации в своем задании Jenkins.

0 голосов
/ 16 июня 2010

Я согласен с @Peter_Schuetze, пусть Хадсон это выяснит. Не стоит оптимизировать это, если вы действительно не видите проблему.

Вы можете использовать хук post-commit для push Hudson , и «Hudson затем проверит [изменения] всех заданий, для которых настроен опрос, и запланирует сборки соответствующим образом».

хуки пост-фиксации могут быть установлены только для всего репозитория, а не для отдельных проектов

True. Если вы действительно обеспокоены тем, что в ловушке post-commit вы можете проверить измененные каталоги перед тем, как пропинговать Hudson, что-то вроде:

changes=`svnlook dirs-changed -r $REV $REPO`
case $changes in
   my_project/*)
     # ping Hudson
     ;;
esac

Для меня это звучит как слишком большая работа, чтобы постоянно обновлять обработчик пост-фиксации.

...