Вот как я получил Jenkins 2.157, чтобы начать сборку после фиксации в репозитории SVN.
1.Разрешить доступ на чтение в Jenkins
Используя веб-интерфейс Jenkins, перейдите на Manage Jenkins
-> Configure Global Security
и установите флажок Allow anonymous read access
:
Если вы пропустите этот шаг, вы получите следующий ответ при попытке запустить сборку с использованием HTTP-запроса (описанного в третьем шаге):
Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:
Permission you need to have (but didn't): hudson.model.Hudson.Read
... which is implied by: hudson.security.Permission.GenericRead
... which is implied by: hudson.model.Hudson.Administer
-->
2.Сконфигурируйте триггер сборки
Все еще в веб-интерфейсе Jenkins, перейдите к заданию на сборку и определите, что вы хотите запустить сборку с помощью скрипта (это будет ловушка фиксации SVN на следующем шаге):
3.Создайте post-commit
hook
Наконец, перейдите в каталог hooks
вашего репозитория и добавьте сценарий оболочки с именем post-commit
(имя важно, иначе SVN не выполнит его после фиксации):
#!/bin/sh
# Name of the Jenkins build job
yourJob="your_job"
# You defined this in Jenkins' build job
build_token="yourSecretToken"
jenkins_address_with_port="localhost:8090"
curl $jenkins_address_with_port/job/$yourJob/build?token="$build_token"
Сделайте скрипт исполняемым: chmod +x post-commit
.
Вот расширенная версия post-commit
, которая регистрирует данные о коммите, такие как автор коммита.
#!/bin/sh
# The path to this repository
repo_path="$1"
# The number of the revision just committed
rev="$2"
# The name of the transaction that has become rev
transaction_name="$3"
# See http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.c.author.html
commit_author="$(svnlook author --revision $rev $repo_path)"
# The UUID of the repository, something like e3b3abdb-82c2-419e-a100-60b1d0727d12
repo_uuid=$(svnlook uuid $repo_path)
# Which files were changed, added, or deleted. For example:
# U src/main/java/com/bullbytes/MyProgram.java
what_has_changed=$(svnlook changed --revision $rev $repo_path)
log_file=/tmp/post_commit.log
echo "Post-commit hook of revision $rev committed by $commit_author to repo at $repo_path with ID $repo_uuid was run on $(date). Transaction name: $transaction_name. User $(whoami) executed this script. This has changed: $what_has_changed" >> $log_file
# Name of the Jenkins build job
yourJob="your_job"
# You defined this in Jenkins' build job
build_token="yourSecretToken"
jenkins_address_with_port="localhost:8090"
curl $jenkins_address_with_port/job/$yourJob/build?token="$build_token"
Чтобы узнать больше о хуках фиксации, перейдите к документам .