Я пытаюсь составить скрипт post-commit svn с целью осознания того, что всякий раз, когда один из разработчиков фиксирует репозиторий svn, он запускает создание и развертывание проекта jenkins автоматически.Как запустить jenkins с помощью svn post-commit?
Я следовал инструкциям https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin, и мой пост фиксации, как
#!/bin/sh
#
# Jenkins SVN Build trigger script by Wessel de Roode Aug' 2011
#
# Please adjust
SERVER=localhost
PORT=8080
WGET=/usr/bin/wget
SVNLOOK=/usr/bin/svnlook
# Don't change below this point
###############################
REPOS="$1"
REV="$2"
UUID=`$SVNLOOK uuid $REPOS`
echo "--------------------------------">>${REPOS}/post-commit.log
#
# Check if "[X] Prevent Cross Site Request Forgery exploits" is activated
# so we can present a valid crum or a proper header
BREAD_URL='http://'${SERVER}:${PORT}'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
CRUMP=`$WGET --append-output=${REPOS}/post-commit.log --output-document -${BREAD_URL}`
if [ "$CRUMP" == "" ]
then
HEADER="Content-Type:text/plain;charset=UTF-8"
else
HEADER=$CRUMP
fi
$WGET \
--http-user=JENKINS_USER --http-password=JENKINS_PW \
--header ${HEADER} \
--post-data "`$SVNLOOK changed --revision $REV $REPOS`" \
--append-output=${REPOS}/post-commit.log \
--output-document "-"\
--timeout=2 \
http://${SERVER}:${PORT}/jenkins/subversion/${UUID}/notifyCommit?rev=$REV\
# Uncomment line below for debug
echo $(date) HEADER=${HEADER} REPOS=$REPOS REV=$REV UUID=${UUID} http://${SERVER}:${PORT}/subversion/${UUID}/notifyCommit?rev=$REV >>${REPOS}/post-commit.log
Когда я совершаю что-то от клиента SVN, журнал выглядит следующим образом:
--2015-04-03 21:01:20-- http://localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:8080... connected.
HTTP request sent, awaiting response... 404 Not Found
2015-04-03 21:01:20 ERROR 404: Not Found.
Fri Apr 3 21:01:20 KST 2015 HEADER=Content-Type:text/plain;charset=UTF-8 REPOS=/home/share/svn/myblog REV=30 UUID=d6922f4b-358e-4015-8fd3-a25217326040 http://localhost:8080/subversion/d6922f4b-358e-4015-8fd3-a25217326040/notifyCommit?rev=30
--2015-04-03 21:01:20-- http://localhost:8080/jenkins/subversion/d6922f4b-358e-4015-8fd3-a25217326040/notifyCommit?rev=30
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:8080... connected.
HTTP request sent, awaiting response... 403 Forbidden
2015-04-03 21:01:20 ERROR 403: Forbidden.
для 404 Not Найденная ошибка, я проверил конфигурацию глобальной безопасности в Jenkins.
Я понятия не имею, почему ошибка возникает вообще.
И для 403 запрещенной ошибки, ссылаясь на предыдущий захват экрана, я предоставил пользователю/паролю JENKINS_USER/JENKINS_PW (хотя они говорят, что я буду использовать токен API вместо обычного текста пароля), почему это запрещено?
Может ли кто-нибудь помочь мне? Любые советы были бы благодарны.
ли 'localhost' исправить? I.e., ваш сервер SVN и сервер Jenkins на той же машине? –
@PatrickQuirk Спасибо за ваше отношение. Да, они работают на одной машине, я делаю это для обучения. – sincosmos