728x90

Hudson 이란?

Hudson 이란 cron으로 작업을 실행하거나 소프트웨어 프로젝트를 빌드하는 각종 반복적 작업 수행을 감시가 주목적입니다. 이들 중 현재 Hudson이 추구하는 가장 중요한 2가지 기능은 다음과 같습니다.

  1. 지속적인 소프트웨어 프로젝트의 빌드와 테스팅 CruiseControl 또는 Damage Control과 같은 기능으로써 , 이 기능을 요약하자면, Hudson은 프로젝트의 변경 사항을 개발자들이 보다 편하게 통합 하고, 실제 사용자들은 언제나 최신의 빌드를 유지할 수 있도록 만들어주는 지속 통합 시스템(continuous integration system) 이라고 통칭되는 기능을 보다 사용하기 편하도록 제공하는 것입니다. 자동화된 지속 빌드는 생산성을 향상 시킬 수 있습니다..
  2. 외부에서 동작하는 작업 수행 내용을 감시, cron과 procmail 작업과 같은 것으로, 원격에서 동작중이 것들이 그 대상이 됩니다. 예를 들면, cron에 스케쥴에 맞게 설정하게 되면, 모든 출력내용이 담긴 일반 이메일로 전달하게 되는데 작업을 중지 시킬 때까지, 계속 반복적으로 수행하게 됩니다. Hudson도 이렇게 출력물들을 유지하며, 잘못이 발생되는 경우 간단하게 알림을 할 수 있도록 기능을 제공하게 됩니다.

주요 기능

Hudson은 다음과 같은 기능들을 제공합니다.:

  1. 간편한 설치 : 단지 java -jar hudson.war 만 한번 실행해 주시거나, servlet 컨테이너에 배포만 해주시면 됩니다. 추가적인 설치는 없으며 DB 역시 필요 없습니다.
  2. 간편한 설정 : Hudson에서는 접근성이 우수한 웹 기반 UI를 통해 모든 설정을 하실 수 있습니다. 이를 통해 즉시 에러체크 및 인라인 도움말들이 제공됩니다. XML 설정파일을 수동으로 설정할 필요도 없습니다. 물론 직접 수정을 하시고 싶으시다면 직접 수정도 가능합니다.
  3. Change set 제공: Hudson에서는 CVS/Subversion을 통해 빌드하면서 각종 변경된 사항 목록을 생성할 수 있습니다. 이를 통해 보다 효율적인 방법으로 작업을 수행하며 소스 저장장소의 공간낭비를 효율적으로 줄일 수 있습니다.
  4. 영구 링크(Permanent links): Hudson은 자체적으로 설정된 각종 페이지들에 대해 깔끔하게 읽을 수 있는 URL을 제공하게 됩니다. 포함된 몇가지 영구링크를 예를 들면 "latest build"/"latest successful build" 라는 형태로 제공하게 되는 것이죠. 이를 통해 어디서든 간단하게 링크를 설정할 수 있습니다.
  5. RSS/E-mail/IM 기능 통합: 각종 작업 수행 실패에 따른 실시간 알림을 RSS 또는 이메일을 통해 빌드 결과사항을 감시하고 알려주게 됩니다.
  6. 최종 작업 완료 후 태그 넣기 : 빌드가 완료 된 후에도 Tagged long이 가능합니다.
  7. JUnit/TestNG 테스트 보고서 제공: JUnit 테스트 결과는 표 형태로 요약되어 빌드가 깨지기 시작한 때와 같은 버전 연역 정보들을 나타낼 수 있습니다. 버전 연역 경향을 그래프로 표시할 수 도 있습니다.
  8. 빌드 결과물 분산: Hudson은 여러대의 컴퓨터에 빌드/테스트 부하를 분산시켜 진행시킬 수 있습니다. 이를 통해 개발자 들의 환경 중에 별도 작업이 없는 워크스테이션 까지 활용할 수 있게 해줍니다.
  9. 파일 추적기능 : Hudson 에서는 jar들을 빌드 생성하는 그 작업들 내용 및 빌드시 사용하는 각종 jar들의 버전이 무엇인지 등을 지속적으로 추적할 수 있습니다. 이 작업은 Hudson외부에서 제작된 jar 역시 포함되기 때문에, 의존성 추적을 할 프로젝트에서도 원할하게 동작됩니다.
  10. Plugin 지원 : Hudson에서는 써드파티 플러그인을 통해 기능을 확장할 수 있습니다. 또한 여러분에서 팀에서 사용할 도구 및 프로세스등을 플러그인을 작성함으로써 Hudson에서 지원하게 할 수 있습니다.

Hudson 활용 사례

자동화된 테스트 활동을 포함한 지속적인 통합은 지난 몇년간 폭넓게 적용되어 왔습니다. 지속적인 통합 작업 뒤에 깔린 중심적인 생각은 빌드 관리(Build Management), 릴리즈 관리( Release Management), 배포 자동화(Deployment Automation), 테스트 통합과 연계 되면서 변화해 왔습니다.

이 섹션에서는 Hudson을 통한 활용사례들을 제공하게 됩니다. 관리, 영업 담당, 소프트웨어 개발자 및 아키텍터 들에게 제공되는 지속 빌드 솔루션으로 개발 진행에 더 나은 환경을 제공하며, 개발 라이프사이클을 통해 프로젝트의 코드 성숙도 및 더 나은 개발환경을 제공하게 됩니다. (Hudson 활용 사례 보기)

각종 소개 글들

Test Drive

테스트 드라이브를 위한 Java Web Start를 이용하여 Hudson을 기동 합니다. 성공적으로 실행한 후, http://localhost:8080/ 를 접속 하여 대쉬보드로 접근할 수 있습니다. 이 허드슨은 ~/.hudson의 위치에 Hudon이 저장되고 동작하기 때문에, Hudson 프로세스를 재시작하여도 데이터들을 그대로 남아 있습니다.

설치

Hudson을 설치하기 위해서는 최소한 JRE 1.5 이상의 버전이 필요합니다. 먼저 hudson.war를 다운 받은 뒤 java -jar hudson.war 라고 실행해주시면 됩니다. 이 방법은 test drive에서 제공하는 동일한 방식으로 설치가 되는 아주 기본적인 방법입니다. 단지 console을 통해(별도 window가 아닌) 각 실행 결과가 출력될 뿐이죠.

다른 방법으로 민알, Glassfish, Tomcat 5, JBoss, Jetty 6 등과 같은 Servlet 2.4/JSP 2.0을 지원하는 servlet 컨테이너를 가지고 계신다면, 다른 WAR 파일과 마찬가지로 hudson을 배포하실 수 있습니다. 컨테이너 별 자세한 설치 방법에 대해서는 이 문서를 보시기 바랍니다.

한번 war 파일의 압축을 푸셨으면, hudson/WEB-INF 디렉토리에 chmod 755 hudson 이란 명령을 넣어주시기 바랍니다. 그래야 shell 스크립트들을 정상적으로 실행하실 수 있습니다.

만일 윈도우 환경이라면, Hudson을 서비스 형태로 실행하실 수 있읍니다. 그래야 사용자(관리자)가 굳이 로그인하지 않고도 자동적으로 실행할 수 있습니다. 일반적으로 하는 방법은 제일 먼저 Tomcat을 서비스로 설치한 뒤, Hudson을 설치하는 것입니다. 다른 방법은 자바 서비스 래퍼(Java Service Wrapper)를 사용하는 방법입니다. 하지만 서비스 래퍼 방식에는 몇가지 문제점이 있습니다. Hudson 내에 있는 Main 클래스가 서비스 래퍼 메인 클래스와 기존 네임스페이스 상에서 충돌이 발생할 수 있기 때문입니다. 서비스 컨테이너(Tomcat, Jetty 등등)내에 배포하실 때는, 각 컨테이너에 대한 충분한 경험이 없이는 올바르게 구성하시기 어렵습니다.

각 환경에 대해서 여러 사람들이 각자의 환경에 맞추어 Hudson을 배포하여 구성한 정보들이 다음 링크들을 통해 보실 수 있습니다.

728x90

'JAVA' 카테고리의 다른 글

class 파일 디컴파일러  (0) 2012.07.29
maven install 중 mojo : annotations are not supported  (0) 2012.07.29
Maven 정보 - 2  (0) 2012.07.29
Maven 정보 - 1  (0) 2012.07.29
MAVEN 프로젝트가 ECLIPSE에서 실행되지 않는 문제  (0) 2012.07.29

+ Recent posts