Continuous Integration Part 2 Continuous Integration Servers 조영호카페PJT팀 2008.09.01 youngho.cho@nhncorp.com
목차 1. Continuous Integration Servers 2. CruiseControl 3. Bamboo
1. Continuous Integration Severs
CI 서버목록 http://confluence.public.thoughtworks.org/display/cc/ci+feature+matrix 4 / 문서의제목
CI 서버목록 5 / 문서의제목
CI 시스템구성 피드백 피드백생성하기 개발자 피드백메커니즘 변경사항커밋하기 폴링 개발자 서브버전 버전관리저장소 지속적인통합서버 통합빌드머신 빌드스크립트 소스코드컴파일하기, 데이터베이스통합하기, 테스트돌리기, 검사돌리기, 소프트웨어배포하기 개발자 6 / 문서의제목
CI 시스템설정 Subversion 소스위치 피드백 Polling Frequency 폴링주기 Quiet Period commit 완료확인주기 피드백생성하기 개발자 Maven2 POM 피드백빌드메커니즘스크립트 Feedback 메일주소 변경사항커밋하기 폴링 개발자 서브버전 버전관리저장소 지속적인통합서버 통합빌드머신 빌드스크립트 소스코드컴파일하기, 데이터베이스통합하기, 테스트돌리기, 검사돌리기, 소프트웨어배포하기 개발자 7 / 문서의제목
Maven2 PMD Plugin 추가 pom.xml <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-pmd-plugin</artifactid> <configuration> <minimumtokens>40</minimumtokens> <targetjdk>1.5</targetjdk> <outputdirectory> ${project.reporting.outputdirectory}/pmd </outputdirectory> <targetdirectory> ${project.reporting.outputdirectory}/pmd </targetdirectory> </configuration> </plugin> 8 / 문서의제목
2. CruiseControl
CruiseControl 특징 오픈소스가장널리사용되는 CI 배포자 ThoughtWorks http://cruisecontrol.sourceforge.net 플랫폼 자바 2 빌드도구 Ant, Maven, Maven2, NAnt 버전관리시스템 Subversion, ClearCase, CM Synergy, CVS, MKS, Perforce, PVCS, SnapshotCM, StarTeam, Surround SCM, Visual SourceSafe 10 / 문서의제목
빌드디렉터리준비 artifacts 빌드산출물저장 checkout 프로젝트체크아웃 logs 빌드로그저장 cc-config.xml 위임빌드스크립트 config.xml CruiseControl 설정파일 builds/ artifacts/ checkout/ cafe-main/ logs/ cc-config.xml config.xml 11 / 문서의제목
위임빌드파일작성 마지막빌드디렉토리삭제 Subversion 에서현재프로젝트체크아웃 cc-config.xml 빌드실행 아무것도없는상태에서만든빌드가성공적으로실행된다면, 그빌드가완전 (Complete) 하다는것을더확실하게믿을수있다. 12 / 문서의제목
위임빌드파일작성 <?xml version="1.0"?> <project name="credit-card" default="prepare" basedir="checkout"> <property name="build-dir" location="cafe-main"/> <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpath="svnant.jar" /> cc-config.xml <target name="prepare"> <delete dir="${build-dir}"/> <svn> <checkout url=" http://svn.bds.nhncorp.com/cafe/main/branches/ci-branch" destpath="${build-dir}"/> </svn> </target> </project> ant buildfile cc-config.xml 13 / 문서의제목
빌드프로세스설정 프로젝트정의 빌드부트스트랩 (bootstrap) Subversion 변환확인 config.xml 빌드시간간격설정 로그저장 빌드결과발표 14 / 문서의제목
빌드프로세스설정 config.xml 프로젝트 정의 <?xml version="1.0" encoding="utf-8"?> <cruisecontrol> <property environment="env"/> <property name="build-dir" value="checkout/cafe-main"/> <project name="cafe-main" buildafterfailed="false"> 빌드 부트스트랩 <bootstrappers> <currentbuildstatusbootstrapper file="logs/cafe-main/currentbuildstatus.txt" /> </bootstrappers> Subversion 변화확인 <modificationset quietperiod="10"> <svn localworkingcopy="checkout/cafe-main" /> </modificationset> Subversion Repository 에 10 초동안 변경이없으면빌드시작 Subversion Repository 와 checkout/cafe-bridge 비교 15 / 문서의제목
빌드프로세스설정 config.xml 30 초간격으로 Subversion 체크 빌드시간 간격정의 <schedule interval="30"> <composite> <ant anthome="c:\cc-build\tools\apache-ant-1.7.0" buildfile="cc-config.xml" target="prepare" /> <maven2 mvnhome="${env.m2_home}" pomfile="${build-dir}/pom.xml" goal="clean package war:inplace pmd:cpd"/> </composite> </schedule> cc-config.xml 실행 Maven Build 실행 로그저장 <log dir="logs/cafe-main"> <merge dir="${build-dir}/target/surefire-reports" /> </log> Test 결과를 log 파일에머지 16 / 문서의제목
빌드프로세스설정 config.xml 빌드결과 발표 <publishers> <currentbuildstatuspublisher file="logs/cafeb-main/currentbuildstatus.txt" /> <artifactspublisher dir="${build-dir}/target/site" dest="artifacts/cafe-main"/> <htmlemail mailhost="127.0.0.1" returnaddress=" youngho.cho@nhncorp.com" defaultsuffix="@nhncorp.com" buildresultsurl="http://127.0.0.1:8010/cruisecontrol" css="c:/dev/installed/cruisecontrol-bin-2.7.2 /webapps/cruisecontrol/css/cruisecontrol.css" Artifact 를 artifacts 디렉토리로복사 e-mail 통지 xsldir="c:/dev/installed/cruisecontrol-bin-2.7.2/webapps /cruisecontrol/xsl" logdir="logs/credit-account"> <map alias="youngho" address="youngho.cho@nhncorp.com"/> <failure address="youngho" reportwhenfixed="true"/> </htmlemail> </publishers> </project> </cruisecontrol> 17 / 문서의제목
Build Report http://127.0.0.1:8010 18 / 문서의제목
Dashboard http://127.0.0.1:8010/dashboard 19 / 문서의제목
3. Bamboo 20 / 문서의제목
Bamboo 특징 상업용 CI 서버빌드메트릭과사용하기편한 UI, JIRA 통합지원 배포자 atlassian http://www.atlassian.com/software/bamboo 플랫폼 자바 2 빌드도구 Ant, Maven, Maven2, NAnt 버전관리시스템 Subversion, ClearCase, CVS, Mercurial, Perfoce, PVCS, StarTeam, SCM filtering, Multi-SCM 21 / 문서의제목
Launch Bamboo Windows BambooConsole.bat Windows 콘솔에서 Bamboo 실행 InstallAsService.bat - Bamboo를 Windows 서비스로등록 StartBamboo.bat Windows 서비스로등록된 Bamboo 실행 StopBamboo.bat Windows 서비스로등록된 Bamboo 종료 UninstallService.bat - Windows 서비스에서 Bamboo 제거 Linux bamboo.sh start - Bamboo 실행 bamboo.sh stop Bamboo 종료 bamboo.sh restart Bamboo 재실행 bamboo.sh status Bamboo의현재상태보고 22 / 문서의제목
Installation Setting http://127.0.0.1:8085 Configuration Directory Bamboo 설정파일저장 Build Data Directory 프로젝트데이터파일저장 Build Working Directory 소스파일체크아웃 23 / 문서의제목
Database 24 / 문서의제목
Starting Data Create new Bamboo home 일반설치 / 업그레이드 Import existing data 설치된 Bamboo 를다른서버로이관시킬경우 25 / 문서의제목
Bamboo Administrator 26 / 문서의제목
Server Configuration 27 / 문서의제목
Builder & JDK Setting 28 / 문서의제목
Bamboo PMD Plugin Plugin 설치 PMD Plugin jar 복사 <BAMBOO_HOME>/webapp/WEB-INF/lib Bamboo restart pmd_bamboo-2.0.3.jar 29 / 문서의제목
Project, Plan, Build Project 서로연관된 Plan들의그룹 Name과 Key로구성 Name Cafe Bridge Key - BRIDGE Plan 빌드에필요한재료집합 프로젝트별브랜치와대응 Name과 Key로구성 Name CI-BRANCH Key - CITEST Build Plan 의실행 빌드번호를가짐 BUILD NUMBER = [PROJECT-KEY]-[PLAN-KEY]-[NUMBER] 30 / 문서의제목
Create Plan PROJECT NAME PLAN NAME [PROJECT-KEY]-[PLAN-KEY]-[NUMBER] 31 / 문서의제목
Plan Details 32 / 문서의제목
Source Repository 33 / 문서의제목
Source Repository Quiet Period Subversion 변경체크주기 Maximum Retries 빌드시작전에 Quiet Period 를사용하여체크할횟수 34 / 문서의제목
Source Repository 35 / 문서의제목
Builder Builder & Goal Maven goal 설정 PMD 출력디렉토리설정 PMD Plugin 설치후표시 36 / 문서의제목
Specify Requirements 37 / 문서의제목
Plan s Build Artifacts 38 / 문서의제목
Plan s Notification Feedback 빌드결과를 e-mail 로통지 39 / 문서의제목
Post Action 주기적인빌드결과또는 Artifacts 정리작업등록 40 / 문서의제목
Plan Permission 41 / 문서의제목
Thank you.
Question.