CI System

OnNet Technology 2008. 8. 17. 13:05

CI System 이란?


Continuous Integration System의 약자로서 "끊이지 않는 지속적인 통합 시스템" 이란 뜻이다.

XP(eXtreme Programming)의 Pratice중 한개로서 통합 Build와 간단한 기능테스트를 가능한 자주 수행한다.


장점으로는 변경 코드의 문제점을 쉽게 파악할 수 있고, 빠른 대체로 인하여 문제점을 조기에 잡아내어 쉽게 수정할수 있다

단점으로는 기능테스트를 자주 수행하는데..약간의 번거로움이 있다는 것이다. (이점보다는.. 개발환경설치가 좀 더 힘든듯..)


필요조건


1. 모든 소스가 유지되고 접근될 수 있는 장소가 필요하다. 보통 SCM(Source Control Management)시스템을 도입한다. 현재 필자는 SVN을 사용중이다. 관련책 "실용주의 프로그래머를 위한 버젼관리 using CVS"


2. 간단한 기능테스트를 위한 단위테스트를(Unit Test) 해야한다. 이 부분이 가장 적용하기 힘든것 같다. 생각보다 귀찮음이 많고, 소흘히 하는 부분중에 한개다. 자바환경에서는 유명한 Junit을 사용하면 되고, 닷넷환경에서는 nunit을 사용하면 된다.


3. 소스를 대상으로 어디서든지 빌드를 명령 하나로 생성할 수 있게 자동화가 필요하다. 보통 한방빌드 라고도 하는데 이와 관련된 책은 "The Pragmatic Programmers" 시리즈인 "실용주의 프로그래머를 위한 프로젝트 자동화"라는 책이 있다. 이 책에서는 자바개발환경에서 한방빌드로 Ant를 사용하고 있다. (.Net 환경에서는 Nant를 추천해주고 있다)


4. 예약빌드라고 하는.. 일정 조건이 만족하면 자동으로 빌드를 실행할수 있는 환경을 만들자. 보통 리눅스환경에서 crontab 명령어를 이용해서 정해진 날짜 시간 분 초 에 빌드를 실행할 수 있다. 하지만 더 좋은 툴이 있는데 Cruise Control이라는 툴이다. 크루즈컨트롤은 자바환경이고 크루즈컨트롤닷넷은 닷넷환경이다. 이 툴을 설치해놓고 몇분간격으로 자동으로 빌드를 실행하게 할 수 있고, 빌드가 끝난 후 에러가 발생하면 미리 정해준 사람에게 메일을 보내서 알려줄 수도 있다.


5. 빌드만 전용으로 하는 컴퓨터가 필요하다. 위의 모든 과정들을 각각 개인컴퓨터로 계속적으로 돌리는건 바보짓이다. 테스트 용으로 설치만 해보고 한개의 쓸모없는 컴퓨터에 툴들을 설치하고 24시간 돌리는게 좋다.




여기서 나온 툴들은 모두 다 오픈소스라서 쉽게 구할수가 있다.

설치과정도 인터넷을 통하면 자세한 설명과 이쁜 그림으로 쉽게 따라할수가 있다.



자바 CI System


1. SVN (소스보관장소)

- 콘솔 http://www.collab.net/products/subversion/index.html?_kk=svn&_kt=f2bf36a9-923e-493d-aa45-32fa030dcd7b&gclid=COKCoMeii44CFQmZbgodn2zZEg

- GUI http://subversion.tigris.org/

2. Junit (단위테스트) - http://junit.org/index.htm

3. Ant (한방빌드) - http://ant.apache.org/

4. Cruise Control (예약빌드) - http://cruisecontrol.sourceforge.net/


닷넷 CI System


1. SVN - 위와 동일

2. Nunit - http://sourceforge.net/projects/nunit

3. Nant - http://nant.sourceforge.net/

4. Cruise Control Net - http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET

Posted by 용학도리
,