2010-12-13 6 views
2

나는 허드슨 직업을 설정했다. A. 직업 A는 직업 B와 C에 달려있다. 나는 "다른 프로젝트 만들기"로 그들을 설정했다. 이것은 각 작업이 내 작업 공간 (기본 구조)의 별도 디렉토리에 있더라도 잘 작동합니다. 하지만 작업 A (작업 폴더)에서 작업 B와 C가 필요합니다 (루트 폴더).허드슨 의존성

나는 두 가지 방법으로 간주 한 :

  1. 변경 작업 A의 작업 영역을 해당 위치에 복사 개미 빌드 스크립트를 사용하여 다음 "다른 프로젝트에 트리거 파라미터 구축"을 통해 작업에 그 변수를 밀어, 이후로 작업 B 또는 C가 있어야하는 폴더를 변경하는 옵션을 찾을 수 없습니다.
  2. 작업 A의 일부로 빌드 스크립트에서 B 작업을 수행 한 다음 C를 호출합니다.이 작업은 원격 호출 (stackoverflow 어딘가에 있음)을 통해 수행되지만 해당 옵션이 내 구성에 없으며 추가 할 수있는 플러그인을 찾을 수 없습니다.

나를위한 이상적인 접근 방식은 ant 빌드 스크립트를 사용하고 antsvn 또는 그와 유사한 것으로 작업 B와 C를 트리거하는 것입니다. 그러나 나는 이것의 견고한 예를 발견 할 수 없다.

이유가 내가 원하는 이유는 간단합니다. 작업 B는 작업 A와 작업 C에 필수적인 CMS입니다. 새 버전이 프로덕션 서버에 착륙하기 전에 실행해야하는 파이썬 스크립트가 있습니다 (이것은 py -개미).

또는 이와 같은 종속성을 관리하는 더 나은 방법이있을 수 있습니다. 어떤 도움을 주셔서 감사합니다.

나는 그것이 의미가 있기를 바랍니다.

답변

4

잡 "B"와 "C"는 잡 "A"가 필요로하는 "유물"을 생산하는 것으로 생각하십시오. 그런 다음 작업 "A"를 빌드 할 때마다 작업 "B"및 "C"가 생성 한 아티팩트를 가져와야합니다.

작업이 작업 영역을 공유하면 안됩니다. 그렇지 않으면 작업 "B"또는 "C"가 실행될 때 작업 "A"가 구축되면 어떻게됩니까? 한 번에 여러 개의 빌드가 진행됩니다. 그러나 작업 "B"와 "C"에서 "A"가 필요로하는 것을 분리하면 작업 "A"가 이러한 종속성을 가져 오게 할 수 있습니다.

  • 하드 하지만 올바른 방법 : 당신은 작업이 필요로하는 아티팩트를 가져올 수있는 릴리스 저장소을 작성해야이 일을하는 방법에는 두 가지가 있습니다. 이 소리가 Mavinish으로 표시된다면, 그렇습니다. 그러나 Maven 프로젝트없이 Maven 아키텍처를 사용 했으므로 제대로 작동합니다. Artifactory 나 Nexus를 릴리스 저장소로 사용할 수 있습니다. 그런 다음 wget 또는 curl을 사용하여 저장소에서 항목을 가져오고 Maven의 deploy:deploy-file 플러그인을 사용하여 물건을 보내십시오. deploy:deploy-file을 실행하려면 Maven (Java 프로세스)이 필요하지만 Maven 프로젝트 또는 Java 프로젝트는 필요하지 않습니다. deploy:deploy-file 플러그인에는 Maven pom.xml 파일이 필요하지 않습니다. 더 많은 것을 명령 저장소 유틸리티와 같이 생각하여 릴리스 저장소에 물건을 보내십시오.
  • 쉬운,하지만 잘못된 방법는 : 허드슨은이 작업을 수행하는 데 사용할 수있는 Copy Artifacts plugin 있습니다. 문제는 설정이 쉽지만 추적을 시작하기 어렵다는 것입니다. 또한, 매우 특정한 도구에 의존하게 만듭니다. 허드슨을 떠난다면이 기능을 복제하지 못할 수도 있습니다.