Какие плагины и функции плагина мне нужно установить, чтобы заставить мое задание Jenkins запускать код сборки в любое время, привязанный к проекту SVN? Я установил как стандартный SVN-плагин, так и плагин для тегов SVN, но не вижу никаких новых функций, которые позволяют настроить триггер.
Jenkins CI: как запускать сборки на SVN-фиксации
Ответ 1
Есть два способа сделать это:
Сначала я рекомендую первый вариант из-за его простоты реализации. После того, как вы созреете в своих процессах сборки, переключитесь на второй.
-
Опросите репозиторий, чтобы узнать, произошли ли изменения. Это может "пропустить" фиксацию, если в течение одного и того же интервала опроса попадают два коммита. Описание того, как это сделать здесь, обратите внимание на четвертый скриншот, в котором вы настраиваете на задание "триггер сборки" на основе опроса репозитория (с конфигурацией, подобной crontab).
-
Настройте свой репозиторий на крючок после фиксации, который уведомляет Дженкинса о необходимости создания сборки. Описание того, как это сделать здесь, в разделе "Захваты после фиксации"
Функция тега SVN не является частью опроса, она является частью продвижения текущего "заголовка" исходного кода к тегу, чтобы сделать снимок сборки. Это позволяет вам ссылаться на Jenkins buid # 32 как тег/теги SVN/tags/build-32 (или что-то подобное).
Ответ 2
Я создал инструмент, использующий python с некоторым bash, чтобы запустить сборку jenkins. В основном вам нужно собрать эти два значения из пост-фиксации, когда коммит попадает в svn-сервер:
REPOS = "$ 1" REV = "$ 2"
Затем вы используете "svnlook dirs-changed $1 -r $2", чтобы получить только что пройденный путь. Затем вы можете проверить, какой репозиторий вы хотите построить. Представьте, что у вас есть сто тысяч проектов. Вы не можете проверить весь репозиторий правильно?
Вы можете проверить мой script из github
Я написал этот script, так как я просто изучил python и все еще использую его сейчас. Я планировал улучшить его, но новые проекты и вещи просто удерживают меня все время. У всех хорошие знания о python, безусловно, есть лучший встроенный инструмент. Если бы кто-нибудь мог поделиться, хотел бы иметь его.
Ответ 3
Вы, ребята, рекомендуем GitHub вместо SVN запускать сборки? На самом деле я просто знаю SVN, но мне интересно, почему так много людей предпочитают использовать GitHub.
Ответ 4
Вам нужен только один плагин, который является плагином subversion. тогда Просто, перейдите в jenkins- > job_name- > Build Trigger section → (i) Запуск триггера удаленно (т.е. из скриптов) Идентификатор аутентификации: -Token_name
Затем перейдите в каталог svn server hooks, затем после пожара под командами: - (a) cp post-commit.tmpl post-commit (b) chmod 777 post-commit (c) chown -R www-data: www-data post-commit (d) vi post-commit Примечание: Все строки должны быть прокомментированы добавить последнюю строку синтаксис (для пользователя 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
Ответ 5
Вы можете использовать крюк post-commit.
Поместите крюк post-commit script в папку 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
в конце, чтобы узнать о проблеме, и работает ли прихват post-commit script или нет.