1. 도구개요 소개 주요기능 은 CI(Continuous Integration) 를지원하는도구이며또한지속적인빌드프로세스생성을위한확장가 능한프레임워크임. 빌드루프 (Build loop): 코어모듈, 빌드를주기적으로실행하고실행결과를사용자에게통보 리포팅 : 사용자가빌드결과를볼수있도록제공 대시보드 : 모든프로젝트빌드상태를가시적으로보여줌 카테고리 세부카테고리 배포관리 커버리지 도구난이도 중 라이선스형태 / 비용 BSD-style/ 무료 사전설치도구 운영체제 Windows, Linux, Mac OS, UNIX 도구버전 2.8.4 (2012. 10) 특징 다양한 plug-in 제공 설치용이 사용자커뮤니티의활성화 적용회사 / 프로젝트 관련도구 제작사 공식홈페이지.NET,.rb Thought Works http://cruisecontrol.sourceforge.net 1
2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 Email 알림형상관리도구지원 Shell 명령을통한빌드지원 지원내용 지원 지원 지원 지원 다수지원 (CVS, Git, Subversion, PVCS 등 ) 지원 Issue 추적도구연동일부지원 ( JIRA 등 ) Test 도구연동일부지원 (JUNIT 등 ) 1
3. 도구실행환경 다양한플랫폼에서실행되며다수의 Plug-in 제공 대부분의 OS에서설치및실행가능 Windows / Linux / Mac OS 다수의 Plug-in 제공 CVS, ClearCase, CM Synergy, Subversion, Perforce 등 Plug-in SCM Tool -CVS -ClearCase -Synergy -Git -Subverson -Perforce. IDE Issue Tracker Testing Tool Web Application Server (Tomcat 등 ) Windows / Linux / Mac OS / UNIX 1
4. 도구설치방법 세부목차 4.1 다운받기 4.2 설치하기 1
4. 도구설치방법 4.1 다운받기 (1/2) http://sourceforge.net/projects/cruisecontrol/files//2.8.4/ 에접속 을설치하는방법은세가지가있음 Zip 파일로설치 (Binary Distribution) Windows Installer 로설치 Source 파일로설치 (Source Distribution) 본매뉴얼에서는 Windows 홖경에서 Windows Installer 를이용해서설치하는방식으로진행함. 2
4. 도구설치방법 4.1 다운받기 (2/2) 다른이름으로저장버튼을클릭하여설치파일을저장 3
4. 도구설치방법 4.2 설치하기 (1/8) 다운받은설치파일을더블클릭하여설치파일을실행함. 4
4. 도구설치방법 4.2 설치하기 (2/8) 설치구성요소를전부선택하고 Next 버튼클릭 설치 Directory 를선택하고 Install 버튼클릭하여설치시작 5
4. 도구설치방법 4.2 설치하기 (3/8) 설치진행중인화면 6
4. 도구설치방법 4.2 설치하기 (4/8) 설치가완료되면 Service 를시작하라는메시지표시됨 Service 시작은설치가완료된후진행함. 확인버튼클릭하여계속진행 7
4. 도구설치방법 4.2 설치하기 (5/8) 설치완료됨. Show Details 버튼을클릭하면상세설치내역이표시됨 8
4. 도구설치방법 4.2 설치하기 (6/8) 설치가완료된후 README.txt 파일이열림 설치버전등의정보표시됨 9
4. 도구설치방법 4.2 설치하기 (7/8) 설치가완료된후 Windows 제어판의서비스에서 Service 를 Start 시킴 이과정은 5. 도구기능소개에서계속상세설명됨. 10
4. 도구설치방법 4.2 설치하기 (8/8) 설치가완료되면 C:/Program Files/ 밑에 폴더가생성됨 11
5. 도구기능소개 개요및세부목차 주요기능을간단하게소개하고, 예시를바탕으로조작법및기능소개를한다. 주요항목은아래와같다. 5.1 주요기능 5.2 아키텍처 5.3 Service 실행 5.4 실행 5.5 Build Result Report 5.6 대시보드 5.7 Configuration File 설정 1
5. 도구기능소개 5.1 주요기능 (1/5) 의주요기능 은다음과같은 3 가지메인모듈로구성 빌드루프 (Build Loop) : 시스템의핵심모듈로서빌드사이클을작동시키고다양한 listener( 사용자 ) 에게다양한 publising 기법으로이를통지함. 빌드사이클을 trigger 하는방법은내부적인방법 ( 스케쥴또는 SCM 에서의변경 ) 또는외부적인방법이있음. 빌드결과리포팅 : 웹화면을통해사용자에게빌드결과를조회할수있도록하며관렦파일에접근할수있도록함. 대시보드 모든프로젝트빌드상태를비쥬얼하게보여줌. Plung-in 은기본적인핵심기능을제외하고대부분의기능들을 Plug-in 을통해확장할수있도록구성되어있음. 2
5. 도구기능소개 5.2 아키텍처 의아키텍처구성 의아키텍처구성. 3
5. 도구기능소개 5.3 Service 실행 Service 실행 (Windows 홖경 ) Windows 홖경에서 실행을위해 Windows Service 에서 Service 를 Start 시킴 4
5. 도구기능소개 5.3 Service 실행 Service 실행 (Windows 홖경 ) Service 실행확인 5
5. 도구기능소개 5.4 실행 실행 을실행하기위해설치 Directory 에서 cruisecontrol.bat 파일을실행 6
5. 도구기능소개 5.4 실행 실행확인 Command 창에서 의실행과정을확인 7
5. 도구기능소개 5.5 Build Result Reporting Build Result Reporting 웹화면조회 http://localhost:8080/cruisecontrol 에접속하여프로젝트별 Build 결과를확인함. 프로젝트명 빌드이력 빌드상세결과 8
5. 도구기능소개 5.6 대시보드 대시보드웹화면조회 http://localhost:8080/dashboard 에접속하여프로젝트별현재상태를확인. 9
5. 도구기능소개 5.6 대시보드 대시보드화면아이콘설명 http://localhost:8080/dashboard 에접속하여프로젝트별현재상태를확인. 아이콘 설명 24 시갂이상빌드가성공적으로진행중이며현재도빌드대기상태임 24 시갂이내빌드가성공적으로진행중임 24 시갂이상빌드가실패한상태가계속됨 24 시갂이내빌드가실패했으며현재중단된상태임 현재빌드진행중 비홗성화되었거나중단된프로젝트 10
5. 도구기능소개 5.6 대시보드 Build Page 대시보드의 Build Page 에서는각프로젝트별빌드상태를볼수있음. 11
5. 도구기능소개 5.6 대시보드 Build Detail Page 대시보드의 Build Detail Page 에서는한프로젝트내의여러개의빌드목록및상세정보 ( 최근성공한빌드, 빌드번호, 빌드기갂등 ) 12
5. 도구기능소개 5.6 대시보드 빌드진행중인상태의조회 프로젝트에서빌드가현재진행중인경우빌드결과를화면에표시함. 진행중인빌드과정표시 13
5. 도구기능소개 5.6 대시보드 Administration Page 대시보드의상세설정값들을보여줌 버전, OS 정보, 대시보드 configuration 파일정보등 14
5. 도구기능소개 5.7 Configuration File 설정 의 config.xml 파일설정 의거의모든설정들은 config.xml 파일을통해이루어짐. 기본적인 config.xml 파일의설정은다음과같다. Project1 에대한설정 Project2 에대한설정 15
5. 도구기능소개 5.7 Configuration File 설정 각프로젝트별 Configuration 설정 Config.xml 파일의 <project> tag 내부에프로젝트빌드정보를설정함. 주요설정값들은다음과같다. <bootstrappers> : 형상관리시스템설정예 ) svnbootstrappers : subversion quieteriod: 변경감지후빌드를시작하기전에기다리는시갂설정예 ) 30 ( 단위 : 초 ) Schedule interval: 변경을체크하는주기예 ) 1200 ( 단위 : 초 ) 16
5. 도구기능소개 5.7 Configuration File 설정 Plug-in 설정 은많은수의 plug-in 을지원하고있으며이러한 plug-in 에대한설정은 <plugin> tag 를통해설정함. 각프로젝트별로반복되는 plug-in 설정의어려움을방지하기위해 XML 상단에 <plugin> 을정의하고각프로젝트에서해당 plugin 을추가하는방식을사용함. <Project1>. <htmlemail/> </project1> Plugin 정의 <Project2>. <htmlemail/> </project2> 17
6. 도구활용예제 세부목차 앞서소개한주요기능을바탕으로예제를들어서설명 주요항목은아래와같다. 6.1 예제소개 6.2 Service 실행 6.3 Work Area 설정 6.4 Configuration File 설정 6.5 빌드실행 6.6 빌드결과 Reporting 6.7 대시보드조회 6.8 Source 수정 6.9 자동빌드확인 6.10 빌드결과확인 1
6. 도구활용예제 6.1 예제소개 빌드대상프로젝트 3 개의개발프로젝트가진행중이며빌드예정임. ConnectFour TestProject1 TestProject2 Build 도구 Apache ANT 형상관리도구 특정형상관리도구없음 파일시스템사용 개발환경 Windows 2
6. 도구활용예제 6.2 Service 실행 제어판 > 관리도구 > 서비스에서 Service 실행 3
6. 도구활용예제 6.3 Work Area 설정 설치폴더 (Windows 의경우일반적으로 C:/Program Files//) 에다음과같은폴더생성 ( 기존에폴더가없는경우 ) Projects Log Artifacts 항목기능 Projects 시스템이형상관리대상을체크아웃할폴더. Logs 시스템이빌드후결과를기록하는폴더 Artifacts 시스템이빌드 Output 을저장하는폴더 4
6. 도구활용예제 6.3 Work Area 설정 프로젝트폴더생성 Projects 폴더내에 3 개의프로젝트폴더를생성하고빌드대상소스저장 ConnectFour ( 설치시포함된 Sample Project) TestProject1 TestProject2 5
6. 도구활용예제 6.4 Configuration File 설정 Configuration File(config.xml) 설정 설치폴더밑에있는 config.xml 파일편집하여빌드관련설정 Ant bootstrapper 3 개프로젝트 Quietperiod : 30 초설정 파일시스템사용 interval : 300 초 (5 분 ) 설정 6
6. 도구활용예제 6.5 빌드실행 실행하여빌드진행 설치폴더밑에있는 cruisecontrol.bat 파일실행 7
6. 도구활용예제 6.6 빌드결과 Reporting Build Report 조회 웹브라우저를통해 http://localhost:8080/cruisecontrol/ 에접속하여빌드결과 Report 조회 프로젝트 상태 마지막빌드성공시간 프로젝트내빌드횟수 8
6. 도구활용예제 6.6 빌드결과 Reporting 개별프로젝트별빌드결과조회 웹브라우저를통해 http://localhost:8080/cruisecontrol/ 에접속하여빌드결과 Report 조회 필드정보 에러 단위테스트결과 성공적인빌드이후수정사항 빌드이력 9
6. 도구활용예제 6.6 빌드결과 Reporting 테스트결과조회 10
6. 도구활용예제 6.7 대시보드조회 프로젝트젂체상태조회 프로젝트빌드정보요약 프로젝트빌드통계요약 11
6. 도구활용예제 6.7 대시보드조회 프로젝트젂체빌드현황조회 12
6. 도구활용예제 6.7 대시보드조회 프로젝트별빌드상세정보조회 Artifacts 정보 : 빌드 Output 정보 Modification : 수정된 Source 정보 13
6. 도구활용예제 6.8 Source 수정 자동빌드확인을위해프로젝트의 Source 수정 ConnectFour 프로젝트 TestProject1 프로젝트 14
6. 도구활용예제 6.9 자동빌드확인 수정된프로젝트가설정된 interval(5 분 ) 후 quietperiod(1 분 ) 대기후자동빌드됨을확인 자동빌드진행중 15
6. 도구활용예제 6.10 빌드결과확인 수정된프로젝트의자동빌드결과확인 16
7. FAQ 질문 1) 현재사용하고있는버전을업그레이드해야하나요? 답변 1 : 현재사용중인버전에따라업그레이드필요성을판단해야합니다. 버전별주요변경사항은다음과같습니다. - 하나의 config.xml 파일에서멀티프로젝트정의지원 : 2.1.4 버전이후 - 멀티프로젝트의동시빌드지원 : 2.2 버전이후 - Plugin preconfiguration 지원 : 2.3 버전이후 질문 2) JUNIT 결과가웹페이지에서표시되지않는이유는무엇때문인가요? 답변 2 : <junit> 엘리먼트에서테스트결과를올바른 XML 포맷으로출력하도록되어있는지확인해야합니다. 1
8. 도구평가 활용성 핵심적인기능이외의기능들은 plug-in 을통해지원함으로써다양한경우의빌드 / 배포시나리오를구현할수있음. 단, 복잡한시나리오의경우설정파일 (config.xml) 편집이다소까다로울수있음. 범용성 Windows, Linux, Mac OS 등다양한플랫폼을지원함으로써범용성이뛰어남. 호환성 다양한 plug-in 을지원함으로써개발환경에적합한구성가능. 성능 안정성이뛰어남. 기 타 도구평가의견 형상관리도구및단위테스트도구와의연계성이뛰어남 타도구에비해안정성이뛰어남 1
9. 용어정리 본매뉴얼에서사용하고있는용어의정리 병행빌드 (Parallel Build) 다수의프로젝트를동시에빌드하는방식또는기법. Quiet Period 빌드시스템이형상변경을감지한후빌드를개시하기전까지의대기시간. Build Schedule Interval 주기적으로빌드를시작하는시간간격. 분산빌드 (Distributed Build) 빌드작업을여러대의 machine 에서분산해서수행하게하는빌드방식또는기법. 1