2010-11-30 6 views
3

저는 우리의 주요 개발 언어가 자바 인 소프트웨어 회사에서 일합니다. 당연히, 우리는 Hudson을 연속 빌드에 사용합니다.이 빌드는 훌륭하게 작동합니다. 그러나 허드슨은 우리가 요구하는 다른 것들을 그렇게 잘하지 못합니다. 또한 Hudson 작업을 사용하여 바이너리를 배포하고, 데이터베이스를 새로 고치고,로드 테스트를 실행하고, 회귀 분석을 실행합니다. 빌드 의존성이있는 경우 (예 :로드 테스트에 DB 새로 고침이 필요함) 문제가 발생합니다.허드슨의 다른 빌드 매니저

빌드 의존성을 :

여기 허드슨은 우리가 정말 필요로하지 않는다는 한 가지 그것은 허드슨 작업에 개미 빌드에 대한 종속성을 구축 지원하지만,하지. 우리는 URL 호출 기능을 사용하여 Hudson 작업이 다른 Hudson 작업을 호출하도록합니다. 문제는 Hudson이 항상 200을 반환하고 작업이 완료 될 때까지 차단하지 않는다는 것입니다. 이는 호출하는 작업이 a) 빌드가 실패한 경우 및 b) 실패하지 않은 경우 b) 소요 된 시간을 알 수 없음을 의미합니다.

빌드의 동작을 지정하기 위해 쉘 스크립트를 사용하지 않아도 좋지만, 완전히 필요한 것은 아닙니다.

어떤 방향으로 좋을 것입니다. 아마도 우리는 Hudson을 올바른 방법으로 사용하지 않을 것입니다 (예 : 모든 빌드를 Ant 빌드로 빌드해야합니까?) 또는 원 클릭 배치,로드 테스트, 마이그레이션, DB 새로 고침 등을위한 다른 제품이 필요할 수 있습니다.

편집 :

명확히하기 위해 매개 변수에 따라 종속성이 달라질 수있는 빌드의 매개 변수가 있습니다. 나는. 때로는 DB 새로 고침없이 가끔씩 DB 새로 고침없이로드 테스트를 원합니다. 유감스럽게도, 조인 플러그인이 요구하는대로 각 매개 변수 조합에 대해 허드슨 작업을 만드는 것은 작동하지 않습니다. 때로는 다른 조합으로 인해 수십 개의 작업이 발생할 수 있기 때문입니다.

+1

"빌드 종속성"의 의미를 설명 할 수 있습니까? 다른 허드슨 빌드를 시작하기 위해 허드슨 프로젝트를 구성하는 것은 간단합니다. 좀 더 자동적 인 것이 필요합니까? –

+1

허드슨은 그것이받는 것만 큼 좋으며, 대안은 유능한 곳이 아닙니다. 그것으로 붙어있어. – skaffman

+0

허드슨이 원하는 일을 수행하는 데 문제가있는 경우 설치 및 수행하려는 작업을 다시 검사 할 수 있습니다 (즉,로드 테스트 환경과 데이터베이스간에 데이터베이스를 공유하는 이유는 무엇입니까? 다른 빌드) –

답변

5

Hudson 인스턴스에 명령을 내릴 수있는 Hudson 용 CLI가 있습니다. 정확한 정보를 얻으려면 "도움말"을 사용하십시오. 나는 당신이 빌드를 호출하고 그 마무리를 기다리는 것을 믿는다.

http://wiki.hudson-ci.org/display/HUDSON/Hudson+CLI

7

나는 당신의 "종속 관계를 구축"요구 사항을 이해 생각하지 않습니다. 다른 Hudson 작업은 다른 (다운 스트림) 작업을 트리거하거나 다른 (업스트림) 작업에 의해 트리거되도록 구성 할 수 있습니다.

Downstream-Ext pluginJoin plugin은 빌드 종속성에 대한보다 복잡한 정의를 허용합니다.

+0

"빌드 의존성"이란 말은 작업 A가 완료되어 성공한 ​​경우에만 작업 B를 실행해야한다는 것입니다. 작업 A에 작업 B가 여러 개있을 수 있기 때문에 작업 A 시작 작업을 가질 수없는 이유는 다음과 같습니다. 일반적으로 로그를 기반으로하는 셸 스크립트 내에서 작업을 실행하기 때문에 일반적인 모듈이 작동하지 않습니다 빌드의 매개 변수. 나는. "db refresh"가 참이면 Job A를 실행하고, 그렇지 않으면 실행하지 마십시오. –

+0

@ 패트릭, 흥미 롭습니다. 나는 전에 그런 복잡한 일련의 의존성을 뛰어 넘지 못했습니다. 내 솔루션은 허드슨을 통해 스크립팅하는 것이 아니라 빌드 시스템에 인텔리전스를 푸는 것이라고 생각합니다. 그러나 허드슨에서도 일자리를 얻는 것이 도움이된다고 생각합니다. –

2

'의존성'에 대한 추가 작업이 필요합니까?

추가 빌드 단계와 같이 필자의 의존성이 들립니다. DB를 새로 고치는 스크립트는 scm에 저장 될 수 있으며이 단계를 필요로하는 모든 빌드가 체크 아웃합니다. "db refresh"매개 변수가 true 인 경우 해당 스크립트를 호출 할 수 있습니다. 이는 모듈 중 하나 이상을 사용하여 수행 할 수 있습니다. 이점은 무엇입니까? 귀하의 스크립트 논리는 귀하의 SCM에 (그것은 항상 좋은 변화의 역사를 가지고). 모든 테스트 작업에 대해 스크립트를 한 번 업데이트 할 수 있습니다 (모든 스크립트가 동일한 스크립트를 체크 아웃했기 때문에). 또한 테스트가 성공적으로 수행되었는지 여부를 확인하기 위해 여러 스크립트를 볼 필요가 없습니다. 특히 여러 실행 행의 일부인 하나의 작업이있는 경우 실행할 작업이 무엇인지 알아내는 것이 어려워집니다. 또 다른 장점은 허드슨에 대한 일자리가 적어 유지 보수가 더 쉽다는 것입니다.

+0

+1, @Patrick에 대한 내 댓글 응답이 캡처하지 못한 것을 표현해 주셔서 감사합니다. –

1

당신이 찾고있는 것이 http://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin이라고 생각합니다.이 플러그인을 사용하면 이전 작업의 상태에 따라 다른 작업을 실행할 수 있습니다.추가 조건을 결정하기 위해 다운 스트림 프로젝트에서 쉘 스크립트를 호출 할 수도 있습니다. API는 더 많은 정보를 얻기 위해 API를 호출 할 수 있습니다.

예를 들어 우리에게 알려주는 빌드 후 단계가 있는데, IRC 채널에서 "모두 빌드 OK"또는 "X, Y 실패"등의 좋은 주제를 만들기 위해 JSON API를 호출합니다.

관련 문제