최근에 업무를 진행하면서 CI 강력한 형상관리 이점을 몸소 체험하고 있다. 단순히 소스관리가 아닌 릴리즈 된 제품 관리를 위해서라도 CI 의 사용은 개발부서에 있어 필수다. 갓 CI!
CI 시나리오
- 개발자가 본인 컴퓨터에서 소스 작성하고 빌드 및 테스트 수행
- 개발자가 형상관리 저장소에 소스를 업로드
- CI 서버가 형상관리 저장소에서 변경 내역을 감지하고 다운로드
- CI 서버는 다운로드 한 소스를 스크립트에 의해서 빌드 및 테스트 과정 수행
- 빌드 및 테스트 결과를 CI 서버에 저정하거나 담당자에게 알림
- CI 서버는 형상관리 저장소의 변경 사항을 계속해서 감지
CI 장점
- 별도의 디버깅 과정 없이 통합 시발생하는 문제점 파악 가능
- 소스의 결함으로 인한 문제점을 조기에 발견
- 소스의 변경으로 인하여 다른 모듈과의 충돌을 조기에 발견
- 변경된 모든 소스에 대한 단위테스트 결과를 빠르게 확인 가능
- 올바르지 못한 프로젝트의 진행방향을 조기에 발견
- 최종 릴리즈 전에 가능한 많은 문제점을 발견할 수 있음
- 개발중인 소프트웨어를 언제라도 배포 가능
CI 단점
- CI를 위한 별도의 서버 필요.
- 효과적인 CI를 위한 표준 절차가 필요하고 개발자는 이 규칙을 따라야 함 주기가 긴 통합은 전체적인 시스템 통합을 지연 시킨다.
- 주기가 짧은 통합은 시스템의 성능을 떨어 뜨린다.
- 잘못된 코드를 형상 관리 저장소에 업로드하면 안된다.
- 오류가 발생한 빌드는 즉시 고쳐야 한다.
- 느린 CI 서버는 피드백이 지연 된다.
- 통합결과를 관리자에게 확실하게 전달하여야 한다.
- 자동으로 실제 운영서버로 배포되는 것은 심각하게 고려해야 한다.
CI 제품
- Hudson(Jenkins)
- LuntBuild
- Apache Gump
- Apache Continuum
- AnthillPro
- Bamboo
- Cruise
- QuickBuild
댓글 영역