1. 도구개요 2. 기능요약 3. 도구실행환경 4. 도구설치방법 5. 도구기능소개 6. 도구활용예제 7. FQA 8. 도구평가 9. 용어집
1. 도구개요 소개 Continuous Integration ( 지속적통합 ) 을위한 Build 지원도구 주요기능 쉬운설치및웹기반으로된쉬운 UI 제공 여러 project 동시 Build 제공 카테고리 세부카테고리배포관리 커버리지 도구난이도하 라이선스형태 / 비용 EPL license / 무료사전설치도구 JDK Java Application Server (Tomcat) 운영체제 Windows, Linux, Unix, MacOS 최신버전 3.1.0 (2013. 12) 특징 쉽고빠르게설치가능 웹기반의 UI 로 Client 에서는별도의 SW 설치가필요없음 동시에여러 project Build 가능 / 팀단위통합 Build 기능제공 적용회사 / 프로젝트관련도구제작사공식홈페이지 다양한SW 개발업체 CruiseControl, Jenkins Oracle (Sun Microsystems) http://hudson-ci.org, http://jenkins-ci.org 2
2. 기능요약 버그, 요구사항, 작업내용등이있을때해당시스템에게시물형태로올리고개발자, 테스터들이작업진행상황을기록하는이슈관리시스템 주요기능 지원여부 형상관리지원 (Subversion 을활용 ) 티켓기반이슈관리 지원 변경사항이메일관리지원 (G-Mail 형태 ) 웹서비스형태관리마일스톤 / 시간이력위키문법구조이슈관리 지원 (apache) 지원지원지원 버전관리지원 (Subversion 설치에포함 ) 3
3. 도구실행환경 Linux, Unix 기반, Windows 플랫폼에서도사용가능 다양한 OS 를지원, 웹기반관리도구 (Tomcat) 필요 Windows : Windows XP / Windows 7 (32, 64-bit 모두지원 ) Linux : 32, 64-bit 지원 Mac OS X : 32, 64-bit 지원 UNIX : 32, 64-bit 지원 기타 OS : Nateve Package 로제공 Tomcat 설치를위한 JDK 추가필요 (Apache Tomcat 의실행환경 ) WAS (Tomcat) JDK (Java development kit) Windows / Linux / Mac OS / UNIX 4
4. 도구설치방법 세부목차 4.1 JDK 다운받기 4.2 Tomcat 다운받기 4.3 설치및확인하기 5
4. 도구설치방법 4.1 JDK 다운받기 다음의사이트에서 JDK 를다운 http://www.oracle.com/technetwork/java/javase/downloads/index.html Download JDK 를클릭하여다운받고설치 6
4. 도구설치방법 4.2 Tomcat 다운받기 Tomcat Windows Installer 를통해다운로드 설치완료후트레이에서서비스시작과종료로웹서비스 On/Off 가가능 7
4. 도구설치방법 4.3 설치및확인하기 (1/3) 설치확인 페이지접속 : http://hudson-ci.org 최신버전 (Lastest Production) 받기클릭 Apache Tomcat 설치폴더 >webapps 에저장 (ex: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\hudson-#.#.#.war) 저장시관리자권한이필요하다고나오면일단사용자계정폴더에다운받은후탐색기에서이동 8
4. 도구설치방법 4.3 설치및확인하기 (2/3) 페이지접속 : http://localhost:8080/hudson-3.1.0/ Plugin 을설치할수있는초기설정화면이나오며모두설치할경우 5 분이상오랜시간소요 모두설치후 Finish 클릭 9
4. 도구설치방법 4.3 설치및확인하기 (3/3) 구성및 초기화면 내부적으로준비하는화면이약 1~2 분간뜬후 초기화면 10
5. 도구기능소개 개요및세부목차 5.1 Continuous Integration 5.2 의주요기능 5.3 의특징 5.4 주요추가기능 (3.1.0) 11
5. 도구기능소개 5.1 Continuous Integration Continuous Integration( 지속적통합, 이하 CI) 이란? 개발자가각각개발한 source Code 를모아서한꺼번에 Build 하는통합 Build 의과정을특정시점이아니라매일이나매주와같이아주짧은주기로수행함으로써통합에서발생하는오류와시간을줄이기위한기법 12
5. 도구기능소개 5.2 의주요기능 은 Continuous Integration( 지속적통합 ) 을지원하는도구로서여러개의 project 또는 File 들의 Build 를편리하고쉽게할수있는환경제공 Commit 에따른자동 Build 제공 : source Code 가형상관리도구에 commit 이되었을때마다 CI 도구가이를감지하고자동으로 Build 를수행하도록설정 일일 check out 과 Build : 개발자가출근후형상관리도구에서최신 Code 를내려받고, 출근전에현재 Code 를형상관리도구에저장함으로써 Source Code 에자동 Build 수행 13
5. 도구기능소개 5.2 의주요기능 Version control system (e.g. Subversion) ❶ Check in ❸ Check Out Build Servers developers ❷ Indicate change ❹ Report result ❻ notify Team leads, testers, clients, management, etc feedback ❺ Set status CI Server () 14
5. 도구기능소개 5.2 의주요기능 은형상관리도구와연계하여동작 : ( 예 : Subversion) original source 를 Subversion 에 import 각개발자는 Subversion 에서 check out 하여개발을수행 개발자가작업한 source 를 Subversion 에등록 (commit) 은 Subversion repository 의변경사항을감지 변경된 source file 들을 Build server 로 check out Build script 에따라작업을수행하고결과를점검» Build» test 수행및결과점검 작업결과를기록 개발자, tester, 과제책임자등관련자들에게보고서발송 15
5. 도구기능소개 5.3 의특징 source Code 의일관성유지 CI 도구를설정하기위해서는기본적으로형상관리도구가필요 대표적인형상관리도구는 Subversion, CVS, Git 등이존재 CI 도구는이형상관리도구로부터 Project source 의 Code 를 Check out 받아서 Build 를수행 자동 Build Build 가이루어지는시점을정하는두가지방법 Commit 에따른자동 Build Source Code 가형상관리도구에 Commit 이되었을때마다 CI 도구가이를감지하고자동으로 Build 를수행하도록설정 Build 시간이길경우 Build 가적체되는현상이발생할수있음 정기적인 Build 일정시각을정해서 Build 를하는방법 Build schedule 이정해져있기때문에개발자들이 Commit 에대한 Schedule 을관리할수있고 Build 시간이오래걸리는대규모 Build 에도적정 16
5. 도구기능소개 5.3 의특징 자동테스팅 Build 과정에테스트를포함 주기적인 Build 과정에테스트를포함시켜서 Build 와더불어테스팅을자동으로수행 Software 의품질향상기여 일일 Check out 과 Build 개발자가출근후형상관리도구에서최신 Code 를내려받고 (Check out), 퇴근전에현장 Code 를형상관리도구에저장 (commit) 함으로써 source Code 에대한자동 Build 를수행 17
5. 도구기능소개 5.4 주요추가기능 (3.1.0) 초기설정화면변경 Tomcat 에 hudson 을배포한직후최초 hudson 에접근시 Plugin 을설치할수있는페이지가로딩됨 보안설정화면분리 Security Setup 이 Global Configuration 에서분리되어독립적인설정화면으로분리 인증과권한에대한 Team 개념추가 기존에는사용자단위로만인증및권한처리가가능하였으나, 3.1.0 부터사용자그룹과유사한 Team 단위처리기능추가 http://hudsoncentral.wordpress.com/2013/09/02/using-hudson-teams-part-1-the-basics/ 18
6. 도구활용예제 세부목차 6.1 설정 6.2 형상관리도구와연동 6.3 Build Trigger 6.4 Build 6.5 Source Code의변경 19
6. 도구활용예제 6.1 설정 project 의생성 : 관리 Build 도구로사용할 ant 를 에등록해주기위한 관리클릭 Configure System 클릭 20
6. 도구활용예제 6.1 설정 설정정보중에 Ant 설정정보를가지고있는경로를입력하여 Ant 등록 Name : 에서사용하게될 Ant 의이름 ANT_HOME : Ant 가존재하는폴더주소기입 project 의생성 : 새로운 project 를생성 좌측메뉴 새작업 새롭게생성할 project 작업명과 project 종류선택 작업명 (Hello_hudson) 및 Build a free-style software project 선택 21
6. 도구활용예제 6.2 형상관리도구와연동 형상관리도구 Repository URL 을설정하여 Source 컨트롤 Use Update 형상관리도구에서는 source 를내려받을때 Default 가모든 source 를매번 download 받기때문에 Use Update Option 을사용하면 Subversion update 와같은 action 을취함 Repository Browser 형상관리도구에저장된 Source 의내용을웹에서 browsing 할수있는도구. 도구에따라서이전버전과변경된부분에대한비교또는처음 Source code 가생성되었을때부터매번 Commit 되었을때변경내용에대한 Revision 등에대한모든 history 를출력 22
6. 도구활용예제 6.3 Build Trigger Build Trigger : Build 수행시점지정 Build after other projects are built 다른 Job(project) 의이름을인자로설정 지정된 project 의 build 가정상적으로끝나면자동으로이 project 가호출 Build periodically 정해진시간에 source 의변경과상관없이무조건주기적으로 build 를수행하며 crontab 과같은형식으로 schedule 을등록 Poll SCM 지정한주기별로형상관리도구를 polling(check ) 하여변경이있을경우에만 build 를수행 시간설정방법은 unix 의 crontab 명령과같은형식으로 ( 분시간날짜월요일 ) 과같은형식사용 23
6. 도구활용예제 6.4 Build 정해진 schedule 정책에따라 build 작업이기동 실제 build 를수행할 build script 가수행되어야하나, Ant, Maven, Unix/Windows shell 수행가능 Invoke Ant를선택하여 build도구로 Ant를등록 Ant Version에는 에등록된 Ant를선택하거나환경에맞는Ant를선택 Build File 에는 build.xml (ant build.xml 파일위치 ) 의위치로설정» 미지정시 project route 에서설정된 build.xml 파일로설정됨 : /usr/src/build.xml 24
6. 도구활용예제 6.4 Build 설정완료후저장 Main 화면 25
6. 도구활용예제 6.5 Source Code 의변경 Source Code 의변경 : 안녕허드슨 설정 기존메인페이지 코드의변경 26
6. 도구활용예제 6.5 Source Code 의변경 에서재배포 Subversion 에 commit 에서 build ant 를통해자동 build war 파일배포 27
7. FAQ 질문 1) 은 Java 과제에만사용되나요? 답변 1 : 은 Java 언어로구현되어있으나, programming language 와관계없이다양한과제에사용될수있습니다. 질문 2) 과유사한 Build 도구들은어떤것이있나요? 답변 2 : CruiseContol, DamageContol, Bamboo, TeamCity 등이있습니다. 질문 2) Oracle 이 Sun Microsystems 을인수함에따른 license 상의문제는없나요? 답변 2 : 의소유권이 Oracle 로넘어감에따라우려와논란이있었는데 2011.5 월에 Oracle 이 의 trademark 와 -ci.org domain 이름을 Eclipse Foundation 에기증하고 을 Eclipse project 로전환할것을제안하였습니다. 28
8. 도구평가 활용성 : Build 및 Deploy 작업의자동화로개발효율이높고, 활용하기가용이 범용성 : 설치시단순 war 파일배포로가능하며, 넓은범위의관리프로그램을사용할수있음 호환성 일반적으로 Linux 에서실행되나, war 파일이배포되는상황이면대부분이상없이호환 성능 웹서버구현특성상, 네트워크에따라많은차이가생길수있음. 기타 단순한설치로프로젝트 Build 및 Deploy 자동화가가능 도구평가의견 은단순 war파일만배포하여설치가가능하여설치가용이 의기본설정만잘수행한다면, 마우스버튼클릭으로손쉽게 build 및배포작업을자동화할수있어개발효율을높일수있음 Build 시발생하는문제에대하여 log를남기기때문에문제점파악에용이 은 2004년에개발이시작되어 2008년경부터널리쓰이기시작하였음. 지금은가장많이쓰이는 continuous integration 도구 plug-in구조로확장이용이하여다양한기능들이추가되고있음 29
9. 용어정리 본매뉴얼에서사용하고있는용어의정리 CI Subversion Ant Tomcat 개발자가각각개발한 source code 를모아한꺼번에 build 하는통합 build 의과정을특정시점이아니라매일이나매주와같이잦은주기로수행함으로써통합에서발생하는오류와시간을줄이기위한기법 SW 형상관리 (SCM) 을수행하기위한 Open source Software Java 기반의 build 자동화도구 ApacheSW Foundation 에서개발한 application server 로 Java Servlet Container, Java Server Pages Engine 과 HTTP connector 기능을가짐 30