본문 바로가기
프로그래밍 놀이터/Tips

CI ( Continuous Integration ) 툴 기초. CI 는 무엇인가?

by 돼지왕 왕돼지 2014. 5. 31.
반응형


 CI ( Continuous Integration ) 툴 기초. CI 는 무엇인가?

 


CI ( Continuous Integration ) 툴 기초. CI 는 무엇인가?이미지 출처 : www.methodsandtools.com



Introduction to CI. ( Continuous Integration )


연속적 빌드와 인터그레이션은 프로젝트의 성공 여부를 결정짓는 핵심 요소.

CI ( Continuous Integration ) 은 프로젝트에 투입되는 시간과 노력을 효율화하는 데 매우 중요한 사안.


이전에는 빌드를 단순히 컴파일로 생각했다.

CI 에서는 빌드의 정의에 모든 중요한 유효성 검사 및 테스트 단계 포함.

CI는 테스트에 의존. 테스트를 빼면 연속 컴파일만 남음.


CI 를 사용할 때는 다음을 유념해야 한다.


1. 빌드를 고장 낸 경우 그대로 방치해서는 안 된다.


2. 고장난 빌드를 제출하면 안 된다.


3. 빌드가 고장난 사실을 발견하면 빌드 보고서를 살펴보라. 문제해결방법을 알게 되면 빌드를 고장 낸 개발자에게 연락하여 도와주라 ( 친절해져라 )


참조 : 

http://bcho.tistory.com/entry/Hudson%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B9%8C%EB%93%9C-%EB%B0%B0%ED%8F%AC-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%8F%99%ED%99%94







CI 의 특징.


1. 소스코드 일관성 유지.


기본적으로 소스 관리 시스템이 필요하다.

SVN, CVS, GIT 등.

CI 는 main branch ( trunk ) 의 내용을 받아 빌드 수행.




2. 자동 빌드


빌드가 이루어지는 시점은 아래와 같이 구분된다.


1) 커밋에 따른 자동 빌드.


소스코드가 소스 관리 시스템에 커밋이 될 때마다 CI 툴이 이를 감지하고 자동 빌드.

무결성 보장에는 좋지만, 빌드 시간이 길 경우 빌드가 정체된다.



2) 시간 간격에 의한 빌드


매일 저녁 5시에 빌드를 한다던가 하는 규칙을 정해서 한다.

개발자들이 커밋 스케쥴을 관리할 수 있고, 대규모 빌드에 적절하다.

보통 퇴근 시간 1~2시간 전에 하는 것이 좋다. ( 여유를 두고 )


 


3. 자동 테스팅


빌드 과정에서 테스트를 할 수 있다.

기능적 요소 및 비기능정 ( 성능 ) 적 요소를 매번 검증하여 코드 품질을 높일 수 있다.




4. 일일 체크아웃과 빌드


출근 후 최신 코드 내려받고, 출근전 현재 코드를 소스 관리 시스템에 저장하여 소스의 무결성 유지.







CI 프로세스


1. 개발자


1) 아침에 출근해서 소스 관리 시스템으로부터 Checkout 또는 Update 받는다.


2) 코드를 갖고 개발을 수행하고 테스트를 작성한다.


3) 로컬에서 빌드 및 테스트 진행한다.


4) 테스트 과정에서 커버리지 분석과 Code Inspection 을 수행한다. ( Optional ) - PMD, FindBugs 등을 이용하여 Deadlock, Lock Contention 과 같은 병목 구간 검출 및 Memory Leak, Connection Leak 과 같은 자원 누수에 대한 검출, 코딩 스타일 점검 등을 수행.


5) 완료된 코드를 소스 관리 시스템에 저장.




2. CI Tools


1) 체크아웃 : 정해진 시간이나 소스 커밋 시점에 빌드를 시작. 먼저 최신 소스코드를 체크아웃 혹은 업데이트 받는다.


2) 컴파일 : 체크아웃 코드에 내장되어 있는 빌드 스크립트를 가동하여 컴파일 수행


3) 배포 :  컴파일이 완료된 코드를 테스트 서버에 배포.


4) 테스트 수행 : 체크아웃 코드 내의 테스트 코드를 수행하고 리포팅 한다.


5) 커버리지 분석 : 테스트 과정 중 코드 커버리지를 수행.


6) 코드 인스펙션


7) 소스 태깅 : 1~6 과정을 정상적으로 수행하면, 현재 소스 관리 시스템에 저장된 버전에 tagging 을 하여 저장한다.


8) Reverse ( optional ) : 빌드나 테스트가 실패했을 때 이전에 성공한 빌드 버전으로 소스 롤백.


9) 결과 분석 : 빌드와 테스트 완료 후 테스트 결과서를 통해 문제가 있는 테스트를 개발자가 수정하도록 한다.







대표적인 CI 툴들


Cruise Control, Ant hill, Hudson ( 요즘 대세 ), TeamCity ( 무료, 상용 둘 다 제공 ), Atlassian Bamboo






반응형

댓글