Nerrvana в работе – SVN втыкается в Jenkins

Using Nerrvana - SVN hooks to Jenkins

Part 1 – Nerrvana в работе – как это делается у нас
Part 2 – Nerrvana в работе – SVN втыкается в Jenkins – этот пост
Part 3 – Nerrvana в работе – сборка приложения и Jenkins (часть 1)
Part 4 – Nerrvana в работе – сборка приложения и Jenkins (часть 2)

Первым делом я установил SVN-сервер. Дёргать Вадима я не стал. Нашёл хорошую инструкцию (если ссылка перестанет работать, вот скриншот этой страницы) и действовал по ней. Затем взял нужный мне код проекта и импортировал его в установленный SVN-сервер.

Следуя инструкции выше, добавляем SVN пользователя ‘jenkins’ и запоминаем его пароль.

Далее создаём файл post-commit-hook-for-jenkins в /var/www/svn/answers/hooks/ (‘answers’ – название репозитория).

#!/bin/sh
JENKINS="http://192.168.3.97:8080"
 
REPOS="$1"
REV="$2"
 
WGET="/usr/bin/wget -q"
SVNLOOK=/usr/bin/svnlook
HOME=/var/www/
UUID=`$SVNLOOK uuid $REPOS`
NOTIFY_URL=subversion/$UUID/notifyCommit?rev=$REV
CRUMB_ISSUER_URL='crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
 
function notifyCI {
  CISERVER=$1
  HEADER="Content-Type:text/plain;charset=UTF-8"
  CRUMB=`$WGET --auth-no-challenge --output-document - $CISERVER/$CRUMB_ISSUER_URL`
  if [ "$CRUMB" != "" ]; then HEADER=$CRUMB; fi
 
  POST=`$SVNLOOK changed --revision $REV $REPOS`
#  echo $POST >> /tmp/post-commit$REV.log 2>&1
 
  $WGET \
    --auth-no-challenge \
    --header $HEADER \
    --post-data "$POST" \
    --output-document "-"\
    --timeout=2 \
    $CISERVER/$NOTIFY_URL
}
notifyCI $JENKINS
>> /tmp/post-commit$REV.log 2>&1

Подробнее о хуках SVN для Jenkins можно прочитать в документации Jenkins.

Изменяем файл post-commit:

#!/bin/sh
REPOS="$1"
REV="$2"
 
/var/www/svn/answers/hooks/post-commit-hook-for-jenkins $REPOS $REV

Проверяем права доступа к файлам. Selinux на этом сервере выключен:

#ls -la /var/www/svn/answers/hooks/
 
-rwxr-xr-x 1 apache apache   99 Jul  9 14:46 post-commit
-rwxr-xr-x 1 apache apache  822 Jul  9 14:25 post-commit-hook-for-jenkins

Теперь можно откомментировать последнюю строку в файле post-commit-hook-for-jenkins и сделать тестовый коммит. Если файл существует, значит мы закончили установку SVN-сервера и хука для Jenkins.

Далее – о разворачивании приложения (deployment) для тестирования с помощью Jenkins.

Print this post | Home

Comments are closed.