2009-03-02 2 views
3

CruiseControl 2.7.3 (원본)을 사용하여 SVN 저장소에있는 Java 프로젝트를 빌드하려고합니다.CruiseControl에서 SVN 사용 하시겠습니까?

나의 크루즈 구성은 수정 세트에 svn plugin을 사용하고 있습니다. 수정이 감지되면 빌드는 Ant를 사용하여 스케줄됩니다. 그런 다음 Ant 빌드 파일은 svnant Ant 태스크를 사용하여 프로젝트의 전체 체크 아웃을 수행합니다. 잠시 동안 "HEAD"를 체크 아웃하도록 설정했지만, 수정 체크 후에 발생하는 체크 인 때문에 빌드가 실행되지 않는 경우가있었습니다. svn 체크 아웃. 결과적으로 우리는 개미 검사 파일이 검색하는 개정 번호를 사용하도록 ant 빌드 파일을 변경하려고 시도하고 있습니다.

CruiseControl 구성 참조 페이지는 레이블 속성이 labelincrementers 인 것처럼 svnrevision 속성이 설정되고 빌더로 전달됨을 나타냅니다. 강제 빌드 버튼을 누르면 설정되지 않은 것처럼 보입니다.

내가 할 수있는 일이 있습니까?

+0

정확히 어떤 로그입니까? cruisecontrol.log, 프로젝트 로그 또는 빌드 로그? – Steen

+0

아, 아마도 'Subversion'이라는 태그를 질문에 추가하면 더 많은 눈을 가리킬 수 있습니다. – Steen

+0

질문에 추가하겠습니다. –

답변

1

SVN 소스 컨트롤의 코드를 보면 svnrevision이 빌더에게 전달되어야하며 따라서 Ant 호출이 수행되어야합니다. Ant 스크립트의 속성을 사용해 보셨습니까? 주석의 질문에 대한 응답으로

:

힘 빌드 경우에는 수정이 없었다, 그래서 수정 버전 번호가 없기 때문에입니다

. 이 경우 svnlabelincrementer가 로컬에있는 최신 개정 번호를 전달하며, 최신 개정 번호도 제공됩니다.

+0

svnrevision 속성을 출력하는 메아리가 있습니다. 방금 강제 작성 버튼에 대한 재미있는 이야기를 추가했습니다. 나는 그것이 진짜에 대한 문제라고 생각한다. –

+0

Force 빌드 케이스에는 수정이 없었기 때문에 수정 수정 번호가 없기 때문입니다. 이 경우 svnlabelincrementer가 로컬에있는 최신 항목을 전달하며 최신 버전도 제공합니다. –

+0

체크 아웃을 수행하는 스크립트에 대해 코드를 작성해야합니다. 오늘까지 그게 문제라는 것을 몰랐습니다. –

0

cruisecontrol 개미 호출은 그와 같이 구성되는 (svn) 레이블과 아무 관련이 없습니다. svn 레이블은 빌드 이름에 주석을다는 데 사용되는 반면 build.log는 cruisecontrol을 통과 할 때 실제로 ant 만 출력합니다.

한 가지 방법은 어떤 식 으로든 svn의 개미 상호 작용을하는 것입니다 : 당신이 개미 빌드 출력에 기록 된 버전 번호를하고 싶은 경우

은 기본적으로 두 가지 방법이 있습니다. 개미의 Svn은 티그리스의 contrib ant task을 통해서만 사용할 수 있으므로 개미 파일에 넣는 것은 쉽지 않습니다. 그러나 이것을 빌드하여 svn info을 수행하고 개정판 번호를 ant 등록 정보로 사용할 수 있습니다.

또 다른 방법은 svnlabelincrementer를 사용하여 개정 번호를 레이블에 지정하고 cruetsecontrol에서 빌드 스크립트로 전달되는 buildproperties을 사용하여 ant 스크립트로 전달하는 것입니다. Jay가 주석에서 언급했듯이, 레이블에는 마지막으로 성공한 빌드 개정판 만 포함되어 있습니다. 이는 원하는 내용이 아닙니다. 수정본이 this blog에 제안되었지만 개미 빌드 파일에서 작업하는 것이 더 적합합니다.

+0

svnlabelincrementer가 자동으로 $ {label} 속성을 자동으로 보냅니다. 불행히도, 작업 경로의 최신 개정판 일 수는 없습니다. 따라서 업데이트 명령에이를 전달할 수 없습니다. –

0

quietperiod 설정을 사용할 수 있습니까? 커밋 후에 CruiseControl은 빌드를 시작하기 전에 일정 시간 (예 : 30 초) 기다릴 수 있습니다.

각 커밋마다 개별 빌드가 실행되지 않습니다. 오히려 같은 시간에 커밋하면 단일 빌드가 시작됩니다.

+0

quietperiod를 설정하면 빌드를 트리거하는 체크 인 이후의 추가 체크인을 기다리는 빌드 만 지연됩니다. 이것은 CVS에 정말 좋았지 만 SVN에 대해서는 덜 유용했습니다. 그것은 비록 내 문제를 도움이되지 않습니다. –

관련 문제