Вопрос по continuous-integration, svn, jenkins – Дженкинс CI: Как вызвать сборки на SVN коммит

74

Какие плагины и функции плагинов мне нужно установить, чтобы моя задача Jenkins запускала сборку в любое время, когда код SVN добавляется в проект?

Я установил как стандартный плагин SVN, так и плагин тегирования SVN, но я не вижу никаких новых функций, позволяющих конфигурировать триггер.

возможный дубликатTrigger hudson build when svn commit highlycaffeinated

Ваш Ответ

4   ответа
-1

Вы можете использовать хук после фиксации.

Поместите скрипт перехвата пост-фиксации вhooks папку, создатьwget_folder в вашем диске C: \ и поместитеwget.exe файл в этой папке. Добавьте следующий код в файл с именемpost-commit.bat

SET REPOS=%1   
SET REV=%2

FOR /f "tokens=*" %%a IN (  
'svnlook uuid %REPOS%'  
) DO (  
SET UUID=%%a  
)  

FOR /f "tokens=*" %%b IN (  
'svnlook changed --revision %REV% %REPOS%'  
) DO (  
SET POST=%%b   
)

echo %REPOS% ----- 1>&2

echo %REV% -- 1>&2

echo %UUID% --1>&2

echo %POST% --1>&2

C:\wget_folder\wget ^   
    --header="Content-Type:text/plain" ^   
    --post-data="%POST%" ^   
    --output-document="-" ^   
    --timeout=2 ^     
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%    

где Test = название работы

echo используется, чтобы увидеть значение, и вы также можете добавитьexit 2 в конце, чтобы узнать о проблеме и о том, запущен ли скрипт ловушки после фиксации или нет.

0

использующий Python с некоторой bash для запуска сборки Jenkins. По сути, вы должны собрать эти два значения из post-commit, когда коммит попадает на сервер SVN:

REPOS="$1"
REV="$2"

Затем вы используете & quot; svnlook dirs-change $ 1 -r $ 2 & quot; чтобы получить путь, который только что совершил. Затем вы можете проверить, какой репозиторий вы хотите построить. Представьте, что у вас есть сотни тысяч проектов. Вы не можете проверить весь репозиторий, верно?

Вы можете проверитьмой скрипт от GitHub.

81

Первоначально я рекомендую первый вариант из-за его простоты реализации. Как только вы достигнете зрелости в своих процессах сборки, переключитесь на второй.

Poll the repository to see if changes occurred. This might "skip" a commit if two commits come in within the same polling interval. Description of how to do so here, note the fourth screenshot where you configure on the job a "build trigger" based on polling the repository (with a crontab-like configuration).

Configure your repository to have a post-commit hook which notifies Jenkins that a build needs to start. Description of how to do so here, in the section "post-commit hooks"

Функция SVN Tag не является частью опроса, она является частью продвижения текущей «головы» исходного кода в тег, чтобы сделать снимок сборки. Это позволяет вам ссылаться на buid # 32 Jenkins как SVN tag / tags / build-32 (или что-то подобное).

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededblogs.wandisco.com/2012/01/31/polling-subversion-with-jenkins
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

Затем просто перейдите в Jenkins & # x2192; job_name & # x2192;Build Trigger раздел & # x2192; (i) Удаленная сборка триггера (т. е. из сценариев)     Токен аутентификации: Token_name

Перейдите в каталог ловушек сервера SVN, а затем после запуска выполните следующие команды:

cp post-commit.tmpl post-commit chmod 777 post-commit chown -R www-data:www-data post-commit

vi post-commit

Note: All lines should be commented Add the below line at last

Синтаксис (для пользователей Linux):

/usr/bin/curl http://username:[email protected]:8081/job/job_name/build?token=Token_name

Синтаксис (для пользователей Windows):

C:/curl_for_win/curl http://username:[email protected]:8081/job/job_name/build?token=Token_name
Error: User Rate Limit Exceededthis answer.

Похожие вопросы