2015-04-03 14 views
0

Я пытаюсь составить скрипт 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. Jenkins security setting

Я понятия не имею, почему ошибка возникает вообще.

И для 403 запрещенной ошибки, ссылаясь на предыдущий захват экрана, я предоставил пользователю/паролю JENKINS_USER/JENKINS_PW (хотя они говорят, что я буду использовать токен API вместо обычного текста пароля), почему это запрещено?

Может ли кто-нибудь помочь мне? Любые советы были бы благодарны.

+0

ли 'localhost' исправить? I.e., ваш сервер SVN и сервер Jenkins на той же машине? –

+0

@PatrickQuirk Спасибо за ваше отношение. Да, они работают на одной машине, я делаю это для обучения. – sincosmos

ответ

0

Пожалуйста, попробуйте ниже метод, я надеюсь, что он будет работать ...

Вы должны требовать только один плагин, который подрывной плагин. затем просто входите в jenkins-> job_name-> Build Trigger section -> (i) Запуск триггера удаленно (т. е. из скриптов) токен аутентификации: -Token_name

Затем перейдите в каталог крючков svn server, а затем после пожара под командами: (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 note: Все линии должны быть прокомментированы добавить ниже линии в последнем

синтаксиса (для пользователей Linux): - /USR/бен/завитка http://username:[email protected]:8081/job/job_name/build?token=Token_name

синтаксис (для пользователей Windows): - C:/curl_for_win/локон http://username:[email protected]:8081/job/job_name/build?token=Token_name

 Смежные вопросы

  • Нет связанных вопросов^_^