2009-03-11 1 views
3

지금은 자동으로 빌드 된 JBoss에 웹 아카이브 프로젝트를 가지고 있습니다.이 프로젝트는 jir (모든 Ant를 사용하여)에 ear 아카이브를 복사하여 JBoss에 배포했습니다.Java 웹 응용 프로그램 빌드, 배포 및 테스트를 자동화하는 방법은 무엇입니까?

필요한 것은 자동으로 응용 프로그램을 배포하는 것뿐만 아니라 응용 프로그램이 성공적으로 배포되었는지 확인하고 HttpUnit 테스트를 실행하는 메커니즘입니다.

문제는 배포 프로세스가 자동으로 모니터링되어 배포가 완료되고 해당 실행 테스트가 끝난 후 기다리는 시간을 자동으로 모니터링하는 방법입니다. 그래서 저는 "원 클릭"으로 테스트를 실행하고 배포하고 싶습니다 (Cruise Control을 사용합니다).

문제 해결에 대한 제안 사항에 대해 감사드립니다.

답변

1

다른 모든 테스트가 파생 된 기본 테스트 클래스를 만듭니다. 자동 단위 테스트 콜렉터가이를 실행하려고 시도하지 않도록 추상이어야합니다. 그 클래스에서

()을 설정하려면이 코드를 추가

if (checkIsDeployed) { 
    ... run code to verify your app is ready for testing and wait until it is ... 
    checkIsDeployed = true; 
} 

checkIsDeployed 정적이어야합니다.

+0

배포 상태를 확인하는 유일한 방법은 내 앱을 "핑 (ping)"하는 것입니다. 응답이 없으면 잠시 후에 다시 ping을 수행 하시겠습니까? – andrey

+0

예; 컨테이너가 웹 애플리케이션 준비가 된 이벤트를 보낼 수있는 방법이 없습니다. 사실, 컨테이너는 가능한 한 로딩을 지연하려고하기 때문에 앱은 "준비"되지 않습니다. 그래서 mockrunner를 사용하여 모든 테스트를 인라인으로 배포하고 실행하지 않습니다. –

+0

당신이 할 수있는 도구가 당신을 위해 그것을 할 수있게하고 일단 그것이 완료되면 테스트를 실행합니다. 화물에 관한 나의 대답을 보라. –

0

hudson 빌드 엔진 : https://hudson.dev.java.net/을 사용하면 특정 시간에 이벤트를 실행할 수 있습니다.

나는 허드슨이 단위 테스트를 실행하는 데 사용될 수 있고 자동 배포는 개미를 호출하여 수행 할 수 있음을 알고 있습니다. 여기

6

의 필요성은 컨테이너를 시작하고 배포 된 응용 프로그램에 따라 테스트를 실행하기 전에 빌드 스크립트에서 응용 프로그램을 배포하는 것입니다. 이것은 통합 테스트, 엔드 - 투 - 엔드/기능 테스트, UI 테스트의 일반적인 필요성입니다.

문제는 우리가 컨테이너를 실행하고 테스트 작업/목표를 실행하는 것만으로는 불을 피울 수 없다는 것입니다. 테스트를 실행하기 전에 응용 프로그램이 배포 될 때까지 기다려야하는데 시간이 걸립니다. 상황이 준비되면 테스트를 실행할 수 있도록하려면 빌드를 시작하여 컨테이너를 시작하고 응용 프로그램을 차단 방식으로 배포해야합니다.

이것은 정확하게 무엇입니까 Cargo입니다. Cargo는 컨테이너를 시작/중지하고 응용 프로그램을 배포하는 Java API입니다. 위에서 설명한 논리를 제공하며 Java, Ant 또는 Maven에서 사용할 수 있습니다.

Maven을 사용하는 경우 빌드 수명주기에 이미 "통합 테스트"단계가 포함되어 있습니다. 이 단계는 일반적으로 ... 통합 테스트에 사용되며 "사전 통합 테스트"및 "통합 후 테스트"단계로 둘러 쌉니다. 여기서화물 시작/정지 목표를 연결합니다. Ant를 사용하고 있다면, cargo의 ant 태스크를 사용할 수 있습니다.

maven을 기반으로 한 또 다른 옵션은 Mavan Jetty Plugin Configuration Guide에 설명되어 있습니다. "통합 이전 테스트"중에 부두를 시작하고 "통합 후 테스트"중에 중지하려면화물 대신에 부두 플러그인을 사용한다는 점을 제외하고는 위와 똑같습니다.

+0

Cargo 0.9는 Tomcat이 실행 중이고 앱이 올바르게 배포되었는지 여부를 안정적으로 판단하는 데 문제가 있습니다. 나는 톰캣을 죽일 수있는 스크립트를 사용하기 시작했다. 남은 부분의 webapps 디렉토리를 깨끗이한다. –

+0

정말? 알려진 문제입니까? 이것은 물론 버그 일지 모르지만 저는 Cargo와 Tomcat에서이 문제에 결코 직면하지 않았습니다. 어쨌든, 버그로 인해 카고의 목표는 바뀌지 않습니다. –

+0

불행히도 Cargo는 현재 개미 작업에 대한 핫 배포를 지원하지 않지만 이것이이 지원을 직접 추가하는 이유입니다. – andrey

1

또 다른 옵션은 JBoss Server Ant Tasks입니다.

이 작업에 대한 좋은 점은 JBoss가 완전히 시작될 때까지 차단되므로 폴링이 필요하지 않습니다.또한 JBoss가 필요한 제한 시간 내에 시작하지 못하면 오류가 발생하며 오류로 인해 JBoss를 종료 할 수 없으면 JBoss를 종료하려고 시도합니다. 이러한 작업은 JBoss 테스트 스위트에 사용됩니다.

나는 또한화물에 대한 좋은 소식을 들었습니다. 이점은 빌드 스크립트가 JBoss에만 국한되지 않는다는 것입니다. 필자는 JBoss Cargo 플러그인이 일부 JBoss 녀석들에 의해 유지되고 있다고 생각합니다.

관련 문제