2012-04-04 4 views
64

Jenkins 작업에서 빌드를 트리거하기 위해 설정해야하는 플러그인 및 플러그인 기능은 언제든지 SVN 프로젝트에 커밋됩니까? 표준 SVN 플러그인과 SVN 태그 지정 플러그인을 모두 설치했지만 트리거 구성을 허용하는 새로운 기능은 표시되지 않습니다. Jenkins CI : SVN 커밋시 빌드를 트리거하는 방법

내가 의한 구현의 용이성에, 처음에 첫 번째 옵션을 사용하는 것이 좋습니다

+0

가능한 중복 HTTP : //stackoverflow.com/questions/4792466/trigger-hudson-build-when-svn-commit) – highlycaffeinated

답변

71

이것에 대해 이동하는 방법은 두 가지가 있습니다. 빌드 프로세스가 끝나면 두 번째 프로세스로 전환하십시오.

  1. 변경 사항이 발생했는지 확인하려면 저장소를 폴링하십시오. 동일한 폴링 간격 내에 두 개의 커밋이 들어 있으면 커밋을 "건너 뛸"수 있습니다. Description of how to do so here, 저장소에서 폴링 (crontab과 비슷한 구성)을 기반으로 "빌드 트리거"작업을 구성하는 네 번째 스크린 샷을 확인하십시오.

  2. Jenkins에 빌드 시작을 알리는 post-commit 후크가 있도록 저장소를 구성하십시오. Description of how to do so here는 절에서

SVN의 태그 기능은 폴링의 일부가 아닌,이 태그에 소스 코드의 현재의 "머리"를 홍보의 일환이다 "후크를 포스트 커밋"는 스냅 샷 짓다. 이것은 Jenkins buid # 32를 SVN tag/tags/build-32 (또는 유사한 것)으로 참조 할 수있게 해줍니다.

+0

포스트 커밋 후크 락. 응답 시간이 더 빨라지고 CI 시스템이 (규모에 맞게) 수백 가지 변경 로그 요청으로 소스 저장소를 파쇄하지 않습니다. – EricMinick

+4

@EricMinick 짧은 시간에 많은 커밋을 많이받는 경우에는 훌륭하지만 때때로 CI 서버를 녹일 수 있습니다. 그것은 코스의 모든 말이며, 당신의 dev 프로세스가 현재 어떻게 작동하는지 분석하지 않고 어떤 방법이 유리한 지 알기가 어렵습니다. –

+0

@EdwinBuck : Jenkins가 선택적 커밋 만 빌드하도록 구성하는 방법이 있는지 알고 있습니까? 나는 설명 할 것이다, 나는 tortoiseSVN과 저장소를 폴링하는 Jenkins 프로젝트를 가지고있다. 젠킨스가 저지른 행동으로해서는 안되면 저렇게 할 수있는 방법이 있을까요? –

0

젠킨스 빌드를 실행하기 위해 파이썬을 사용하는 도구를 만들었습니다. 기본적으로 당신이에서이 두 값 수집해야 커밋 명중 SVN 서버 때 게시물을 커밋 :

REPOS = "$ 1" REV = "$ 2"그런

당신이 svnlook의 DIRS는-변경 "을 사용하여 $ (1) -r $ 2 "방금 전한 진로를 얻으 려합니다. 그러면 어떤 저장소를 빌드 할 것인지 확인할 수 있습니다. 수백 개의 프로젝트가 있다고 상상해보십시오. 전체 저장소를 확인할 수는 없습니까?

당신은 그냥 파이썬을 배우고, 지금도 여전히 그것을 사용하기 때문에 나는이 스크립트를 작성 github

에서 내 스크립트를 확인할 수 있습니다. 나는 그것을 향상시킬 계획 이었지만 새로운 프로젝트와 일들은 항상 나를 홀딱 붙잡고있다. 누구나 파이썬에 대한 좋은 지식을 가지고 있으면 도구를 더 잘 내장 할 수 있습니다. 누군가 공유 할 수 있다면 그것을 갖고 싶어합니다.

-1

포스트 커밋 후크를 사용할 수 있습니다.

넣어 후 커밋 C에서 wget_folder를 만듭니다 hooks 폴더에 훅 스크립트를 : \ 드라이브,이 폴더에 wget.exe 파일을 넣어. 라는 파일에 다음 코드를 추가하여이 문제에 대해 알고 작업

echo의 테스트 = 이름 값을 참조하는 데 사용되며 당신은 또한 마지막에 exit 2을 추가 할 수 있습니다

SET REPOS=%1 
SET REV=%2 

FOR /f "tokens=*" %%a IN ( 
'svnlook uuid %REPOS%' 
) DO ( 
SET UUID=%%a 
) 

FOR /f "tokens=*" %%b IN ( 
'svnlook changed --revision %REV% %REPOS%' 
) DO ( 
SET POST=%%b 
) 

echo %REPOS% ----- 1>&2 

echo %REV% -- 1>&2 

echo %UUID% --1>&2 

echo %POST% --1>&2 

C:\wget_folder\wget^ 
    --header="Content-Type:text/plain"^ 
    --post-data="%POST%"^ 
    --output-document="-"^ 
    --timeout=2^ 
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%  

post-commit.bat 및 커밋 후크 스크립트가 실행 중인지 여부.

0

여러분이 SVN 대신 GitHub를 사용하여 빌드를 실행 하시겠습니까? 사실 나는 SVN을 알고 있지만 왜 많은 사람들이 GitHub를 대신 사용하는지 궁금합니다.

0

Subversion 플러그인 인 플러그인이 하나만 있으면됩니다. 다음 간단하게, 트리거 섹션> 빌드 젠킨스> job_name-로 이동 - 트리거가 원격으로 구축> (i)를 (예 : 스크립트에서) 인증 토큰 :

그런 다음 화재 후 다음 SVN 서버의 후크 디렉토리로 이동 -Token_name (d) vi post-commit (a) cp post-commit.tmpl 포스트 커밋 (b) chmod 777 포스트 커밋 (c) chown -R www- 데이터 : www- 데이터 포스트 커밋 커밋 참고 : 모든 줄을 주석 처리해야합니다. 아래 줄을 마지막에 추가하십시오. synta × (리눅스 사용자의 경우) : - (윈도우 사용자)는/usr/빈/http://username:[email protected]:8081/job/job_name/build?token=Token_name

구문 컬 : - C :/curl_for_win/컬 http://username:[email protected]:8081/job/job_name/build?token=Token_name

[SVN 커밋 트리거 허드슨 빌드] (의
관련 문제