2012-10-21 7 views
1

프로젝트 간의 종속성에 대한 적절한 DAG (Direct Acyclical Graph)를 지원하는 CI 서버 (CruiseControl, Jenkins, Hudson, ...)가 있습니까? 즉, :CI 서버 (프로젝트 종속성 포함) DAG

공통 라이브러리 프로젝트 A, 둘 다 A를 사용하지만 서로 독립적 인 두 개의 유틸리티 라이브러리 프로젝트 B와 C와 B와 C를 모두 사용하는 프로그램 프로젝트 D가 있다고 가정합니다. CruiseControl에서. (현재 사용하고있는) rb라면 B는 A에 의존하고 C는 A에 의존하고 D는 B와 C 모두에 의존한다는 것을 명심하십시오.

누군가가 B 또는 C 중 하나를 커밋하면 CC가됩니다. rb는 그것을 빌드하고 예상대로 D를 빌드합니다. 그러나 누군가가 A로 커밋하면 CC.rb는 A를 빌드 한 다음 B와 C를 동시에 병렬로 빌드합니다. 그러나 B가 처음으로 완성된다고 가정하십시오. 이 시점에서 CC.rb는 열심히 가고 D를 시작합니다. D가 실패 할 확률이 높습니다. C가 완료되면 CC.rb가 완료되고 D를 두 번째 빌드합니다 (이는 빌드입니다. 우리는 실제로 원한다).

이 동작은 CC.rb에만 해당되는 것이 아니라는 점을 알고 있습니다. CI 서버가 한 번에 하나의 프로젝트에 대해서만 종속성을 고려한다면 고유 한 것처럼 보입니다. 내가 찾고있는 것은 CI 서버가 D가 B와 C 모두에 의존하고 B와 C가 같은 버전의 A로 빌딩을 완성 할 때까지 구축을 보류하고 있다고 생각하기에 충분히 똑똑하다. 또는 다른 말로하면 CI 서버 각 프로젝트가 하나의 make 액션 인 경우 "make -j"가 수행했던 것과 유사하게 작동합니다.

그런 짐승이 있습니까?

답변

1

적어도 젠킨스에서 작업 (또는이를 호출하기를 원할 경우 프로젝트)을 사용하면 다양한 방식으로 다른 작업 (특히 plugins)을 트리거 할 수 있습니다. 분명히, 두 개의 서로 다른 작업을 완료 한 후 난 당신이 아주 쉽게 당신은 또한 젠킨스 (허드슨과 함께 설명하는 시스템을 구축 할 수 있다고 생각, 다음 세 번째 작업이

를 트리거 가도록 (듯이)에 "join는"다른 작업 빌드 가능 여기에 관련이 , 아직별로 다르지 않음).