2009-11-05 4 views
8

: 각 프로젝트는 SVN에서 자신의 트렁크가 있습니다 : [저장소]/PROJECTACruiseControl.net을 구성하여 공동으로 사용하는 프로젝트를 만드는 방법은 무엇입니까? 예를 들어

내가 프로젝트 A. 프로젝트을 구축하려는 프로젝트 B 및 프로젝트 C.

편집에 따라 달라집니다/트렁크 [저장소]/ProjectB가/트렁크 [저장소]/ProjectC가/트렁크

내 질문 부품의 몇 가지가 있습니다

  1. CCNET이이 "종속"빌드를 달성하기위한 접근 방식/구성은 무엇입니까?
  2. 프로젝트 B 또는 C가 빌드되도록 프로젝트를 구성해야합니까? 그런 다음 프로젝트 A 빌드를 트리거합니까?
  3. 각 프로젝트가 종속성을 얻음에 따라 빌드 프로세스를 확장 할 수있는 확장 가능한 접근 방식/구성은 무엇입니까?

저는 CCNET의 초보자입니다. 몇 가지 기본 개념이 있다면, 제가 알고 있다고 가정하지 마십시오. 내 친구는 다음과 같습니다 .-D

편집 : 소스 제어 제공자로 SVN을 사용하고 있습니다. ProjectB가 성공적으로 빌드 할 때

+1

이 프로젝트의 Subversion 구조에 대해 더 자세히 설명해 주시겠습니까? 모든 프로젝트가 하나의 트렁크 아래에 있거나 다른 저장소가 있습니까? –

+0

물어봐 줘서 고맙다고 제이슨, 질문의 첫 번째 편집을 참조하십시오. – Achilles

+0

http://confluence.public.thoughtworks.org/display/CCNET/Project+Trigger – Achilles

답변

10

는이 같은 PROJECTA을 시작하는 Project Trigger을 사용할 수 있습니다 : 새 성공적으로 빌드가있는 경우 ProjectB에 대한

<project name="ProjectA"> 
    <triggers> 
     <projectTrigger project="ProjectB"> 
      <triggerStatus>Success</triggerStatus> 
      <innerTrigger type="intervalTrigger" 
          seconds="60" 
          buildCondition="ForceBuild" /> 
     </projectTrigger> 
    </triggers> 
    ... 
</project> 

이 여론 조사 빌드 결과는 60 초마다 다음 PROJECTA입니다 트리거 됨. 기본적으로 동일한 CCNET 서버에서 프로젝트를 찾지 만, serverUri 속성을 가진 다른 프로젝트를 가리킬 수 있습니다. Subversion 저장소가 업데이트 될 때 ProjectA를 빌드하려는 경우 ProjectA에 대한 또 다른 트리거를 추가 할 수 있습니다.

동일한 서버에서 빌드를 실행하는 경우 빌드가 서로 충돌 할 수있는 경우 동일한 큐에 넣을 수 있습니다. 그렇지 않으면 두 빌드를 동시에 빌드 할 수 있습니다.

+0

정확히 내가 필요한 것 같습니다. 나는 플러그를 뽑아서 이것이 얼마나 효과가 있는지 살펴볼 것입니다. – Achilles

3

저는 약 20 개의 솔루션으로 구성된 빌드 시스템을 설정했으며, CCNet을 빌드 엔진으로 사용하여 NAnt 스크립트를 사용하여 100 개의 프로젝트를 설정했습니다. 솔루션 간의 종속성을 처리하기 위해 Java 기반 도구 Ivy을 사용했습니다.

Ivy는 버전 정보를 사용하여 종속성을 정규화 한 경우 바이너리 종속성을 사용합니다. 컴파일 결과는 바이너리 저장소, 즉 파일 시스템 또는 서브 버전에 저장됩니다. 컴파일 할 때 바이너리 종속성이 파일 시스템에 다운로드됩니다.

이 접근법은 서로 상대적으로 독립적으로 진화 된 상대적으로 느슨한 결합 모듈 (MS 솔루션으로 표시)이있는 프로젝트에서 잘 작동합니다. 프로젝트/솔루션마다 별도의 트렁크가있는 환경에서 프로젝트/솔루션은 느슨하게 결합해야합니다. 그렇지 않으면 시스템이 커짐에 따라 태그 지정 및 분기 작업을 많이하게 될 것입니다.

프로젝트간에 더 긴밀한 커플 링이 필요한 경우 동일한 트렁크로 옮길 것을 권장합니다.

참고 : Ivy는 명령 줄 실행 파일로 호출해야하며 멋진 Java Ant 통합을 얻지 못합니다.

+0

프로젝트를 동일한 트렁크로 옮기는 것이 이상적 일지 모르지만 저장소에서 느슨하게 구성되도록 유연성을 원합니다. 빌드 과정에서 작업 디렉토리에 솔루션의 디렉토리 구조를 구축하면 프로젝트를 함께 컴파일 할 수 있다고 가정합니다. – Achilles