2014-05-23 2 views
0

많은 프로젝트 빌드에 Subversion 1.8.8과 Jenkins 1.509.4 (Subversion v2.3 플러그인 포함)를 사용하고 있습니다. 회사 정책에는 인증이 필요하므로 Jenkins에서는 LDAP 보안 영역과 프로젝트 전역에 대한 프로젝트 기반 보안 매트릭스 및 프로젝트 승인을 사용합니다. 이 경우를 위해서 만들어진 LDAP 서비스 계정을 사용하여 Jenkins에게 우리의 SVN post-commit 후크를 이야기합니다. 이를 구현할 때 유효한 사용자 이름/암호가 전송 되어도 실제로 후크가 작업을 트리거하기 위해서는 해당 계정이 보안 페이지의 Jenkins에 대한 전체 액세스 권한을 갖는 것으로 나열하는 것만으로는 충분하지 않습니다. 익명 작업 읽기 액세스가 여전히 필요했습니다. 또한 서비스 계정에는 명시 적 액세스가 전혀 필요하지 않습니다. 문제가되는 작업의 경우 폴링이 활성화됩니다. 명시적인 일정 (H0111 * 시도)과 명시적인 일정 모두 시도되었습니다.Jenkins Subversion이 인증 후 후속 커밋 훅 - 익명 작업 읽기가 여전히 필요합니까?

이 구성의 부작용은 젠킨스의 유효한 사용자가 서버의 모든 작업을 볼 수 있다는 것입니다. 이것은 사용자에게 200+ 일자리를 제공하는 문제이며, 대부분의 사용자는 소수만을 돌 봅니다.

젠킨스 내에서 익명 액세스를 허용하지 않고 커밋 후크에 대한 인증을 허용하는 구성이 있습니까? 참고로

, 우리의 포스트 커밋 후크는 다음과 같습니다

SVNLOOK=/usr/bin/svnlook 
REPOS="$1" 
REV="$2" 
UUID=`${SVNLOOK} uuid $REPOS` 
PW_SCRIPT=/home/ci/bin/get_ci_pw.sh 
if [ ! -f $PW_SCRIPT ]; then 
    exit 0 
fi 
JENKINS_USER=ci 
JENKINS_PW=`$PW_SCRIPT` 
if [ "x$JENKINS_PW" = "x" ]; then 
    exit 0 
fi 
if [ "x${UUID}" = "x" ]; then 
    exit 1 
fi 
echo "${UUID} : ${REV} : ${REPOS}" >> /tmp/post_commit.out 
/usr/bin/wget \ 
    --connect-timeout=5 \ 
    --tries=2 \ 
    --http-user=$JENKINS_USER --http-password=$JENKINS_PW \ 
    --header "Content-Type:text/plain;charset=UTF-8" \ 
    --post-data "`${SVNLOOK} changed --revision $REV $REPOS`" \ 
    --output-document /tmp/post-commit-wget \ 
    http://ciserver:8888/subversion/${UUID}/notifyCommit?rev=${REV} 
exit 0 

위의 구성에서, 나는 젠킨스 로그 내에서이 정보를 찾을 수 있었다 :

5 월 27, 2014 오후 3시 36분 12초 정보 org.springframework.web.context.support.StaticWebApplicationContext prepareRefresh 새로 고침

org.springframework.web.context. [email protected] : 표시 이름 [Root WebApplicationContext]; 시작일 [Tue May 27 15:36:12 EDT 2014]; 상황에 맞는 계층 구조

2014년 5월 27일 오후 3시 36분 12초 정보 org.springframework.web.context.support.StaticWebApplicationContext 애플리케이션 컨텍스트 [org.springframework.web에 대한 obtainFreshBeanFactory

콩 공장의 루트. [email protected]] : org.s[email protected]9466053

2014년 5월 27일 오후 3시 36분 12초 정보 org.springframework.beans.factory.support.DefaultListableBeanFactory preIn stantiateSingletons

사전 인스턴스화 org.s[email protected]9466053에서 싱글 톤 : 정의 콩 [필터 레거시]; 5월 27일

을 발견 오후 3시 36분 30초 경고 hudson.scm.SubversionRepositoryStatus $ JobTriggerListenerImpl onNotify

없음 전복 작업 공장 계층 구조의 루트

5월 27일 2014 년, 2014 오후 3시 36분 30초 정보 jenkins.scm.impl.subversion.SubversionSCMSource $ ListenerImpl onNotify

받은 후 커밋 후크에서 경로에 개정 1995 [mdeneaul/TIJ4/지점/1.1-SNAPSHOT/pom.xml 파일]에 대한 47272b4f-b969-45fb-85a3-5cc10733bede

월 27, 2014 오후 3시 36분 30초 정보 jenkins.scm.impl.subversion.SubversionSCMSource $ ListenerImpl onNotify

없음 전복 소비자 수 없다 (27) 2014 년 3

47272b4f-b969-45fb-85a3-5cc10733bede UUID : 36 : 30 PM 경고 hudson.scm.SubversionRepository 상태 doNotifyCommit는

47272b4f-b969-45fb-85a3-5cc10733bede이

답변

0

을 발견 저장소 UUID 에 변화에 관심은 젠킨스의 작업은 SVN에 폴링하도록 구성되어 있지? 기능적으로 포스트 커밋 훅은 CI에서 SVN으로 폴링하지 않아야하지만 JOB을 폴링 모드로 구성해야하며 매일, 매주 또는 매년 같은 값을 유지할 수 있어야합니다. 기본적으로 Jenkins JOB은 SVN에서 게시물 커밋 호출을 수신 대기하도록 열립니다. 기본적으로이 호출을 수신하지 않기 때문입니다.

+0

폴링 일정이 설정되지 않은 적절한 작업에서 폴링이 활성화됩니다. 내 질문을 조정하겠습니다. – OrionRogue

+0

주간이나 해마다 일정을 잡으려고 했습니까? 게시물 커밋에 읽기 전용 사용자가 필요합니까? Bcoz 나는 어떤 사용자의 정보도 전달하지 않고있다. 나의 게시물은 그런 설정으로 커밋하고 여전히 jenkins는 안전하다. – user3668399

+0

폴링 n 게시 커밋과 함께 일정 설정을 시도한다. 읽기 전용 사용자가 필요 없다. – user3668399

관련 문제