2013년 1월 30일 수요일

젠킨스(Jenkins)를 이용한 지속적 통합(CI:Continuous Integration) (1) - 미스터 젠킨스씨를 소개합니다.

젠킨스(Jenkins)를 이용한 지속적 통합(CI:Continuous Integration)
(1) 미스터 젠킨스씨를 소개합니다

고담시의 평화를 지키는 배트맨. 악당들과 싸움질에 바쁜 부르스 웨인의 곁에는 언제나 묵묵히 자리를 지키며 보좌해온 집사 알프레드가 있었다. 

이상적인 집사의 표상


배트맨에서 알프레드가 하는 집사 역할의 중요성은 <다크나이트 라이징>에서 아직 상당한 재산이 남아 있었음에도 전기 요금을 못내 전기가 끊기고, 그 결과 추운 대리석 바닥에서 자다가 안좋아진 컨디션으로 인해 베인이게 일방적으로 혼쭐이 나는 배트맨의 모습에서 잘 알 수 있다.

여담이지만 일상적인 집사 역할 이외에 알프레드의 역할은 다음과 같다.
  • 배트맨 부재시 배트 케이브 경비
  • 배트 모빌을 포함해 배트맨이 사용하는 각종 장비의 제작 및 정비
  • 의료
  • 비상시 전투 보조(특히 사격)

단, 출신이 그곳이다 보니 요리만큼은 잘 못한다 카더라...


아무튼, 물려받은 재산은 없어도 바쁘기 만으로 따지면 배트맨 부럽지 않은 우리 프로그래머들에게도 알프레드와 같이 묵묵히 온갖 굳은일을 처리해주시는 분이 나타나셨으니 그분이 바로 오늘 여러분들께 소개드릴 젠킨스씨이다.

이... 이분은 아니시고...


이분이 젠킨스씨 (2010년까진 허드슨)


젠킨스는 Agile창시자중 한명인 마틴파울러씨가 주창한 지속적 통합(Continuous Integration)을 구현하기 위한 자바 오픈소스 소프트웨어로서 웹 어플리케이션의 형태를 하고 있다. 국내에서는 허드슨이란 이름으로 더 잘 알려져 있으며 2010년 오라클과의 상표권 문제로 인해 젠킨스로 이름이 바뀌게 되었다.

젠킨스의 배경에 대한 좀 더 자세한 사항은 위키피디아의 해당 항목을 참고하기 바란다.

젠킨스가 제공하는 기능은 다음과 같다.
  • 미려한 웹 인터페이스를 통한 간편한 설정
  • 강력하고 편리한 레포팅 기능
  • 지속적인 자동화 빌드
  • 지속적인 자동화 테스트
  • 커버리지 감시
  • 코드 품질 감시
  • 다양한 인증기반과 결합한 인증 및 권한관리 기능
  • Groovy script를 이용한 고수준의 잡 스케줄링 기능
  • 커맨드라인 인터페이스 제공
  • 자동화된 배포 관리
  • 분산빌드 기능
  • 윈도우 커맨드 스케줄링 실행기능

이 외에도 지금도 활발히 추가되고 있는 수많은 플러그인을 통해 간단히 기능을 추가/확장 할 수 있다.

이렇게 강력하면서도 많은 기능들을 제공해 주지만 젠킨스는 노련한 집사의 이미지 답게 까다롭지 않으시다. (게다가 무보수이다!)

배포파일은 Java Web Archive(.war)화일 형태로 제공되어 기본적으로 자바가 동작하는 환경이라면 어디든지 동작하며 윈도우, Ubuntu, Red Hat, Mac OS X, BSD등 아홉가지 OS에서 동작하는 네이티브 패키지를 제공한다.

젠킨스는 이미지 그대로 집사와도 같이 귀찮은 잡무들을 해결해 줌으로서 개발자들이 본연의 창의적인 업무에 집중 할 수 있도록 도와준다. 굳이 Agile이라는 키워드를 꺼내들지 않더라도 젠킨스는 사용하기에 따라 거의 대부분의 프로젝트에서 개발자와 관리자에게 도움을 줄 수 있으리라고 확신한다.

관련링크


다음번 포스팅에서는 젠킨스의 설치와 주요 플러그인에 대해서 알아보도록 하겠다.