반응형

CI (Continuous Integration)

쉽게 번역하자면 지속적 통합으로서, 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 시키는 것이다.

 

개발자가 각각 개발한 소스코드를 모아 한꺼번에 Build 하는 통합 Build 의 과정을 특정 시점이 아니라,

주기적으로 수행함으로써 통합에서 발생하는 오류를 사전에 해결하고, 이러한 과정들에 소용되는 시간을 줄이기 위한 방법을 말한다.

소프트웨어가 거대해지고 복잡해지면서 팀 단위로 개발하게 되었고, 이 과정에서 분업과 협업은 필수가 되었다.

이 분업 및 협업의 과정에서 소스 버전 관리 툴을 이용한 소스코드의 Merge 과정은 까다롭게 되었고, 

이 문제를 해결하기 위한 기법이 바로 CI 이다.

 

Agile 방법론이 대두되면서 CI 는 더 주목받게 되었고, 배포를 위한 Build 단게, Testing 단계 등에서 시간을 절약하는 효과가 발생되면서

빠른 시장 변화 속도에 대응할 수 있었다. 

 

 

CI 시스템 구축을 위한 핵심 구성요소 

CI Server 

빌드 프로세스를 관리하는 서버로서 Jenkins 가 여기에 속한다. 

ex) Jenkins, Travis CI, etc

 

SCM(Source Code Management)

소스코드 형상관리 시스템으로서 Git 이 여기에 속한다. 소스코드의 개정과 백업 절차를 자동화하여 오류 수정을 돕는다.

팀 프로젝트의 경우 각자 수정한 부분을 전체가 자동으로 동기화할 수 있는 시스템이다.

ex) subversion, Git etc

 

Build Tool

컴파일, 테스트, 정적 분석 등을 실시하여 동작가능한 소프트웨어를 생성하는 도구로서 Maven 이 여기에 속한다.

빌드는 형상관리 시스템에 있는 소스코드를 가져와서 컴파일하여 실행가능한 파일로 만드는 일련과정을 말한다.

ex) Maven, Gradle, Ant, make etc

 

Test Toll

작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구로서 빌드 툴의 스크립트에서 실행되며 JUnit이 여기에 속한다.

ex) JUnit, Mocha etc

 

 

Build Script 를 통한 CI 자동화 수행절차

1. 소스코드를 바이너리 파일로 컴파일한다.

2. 바이너리 파일을 배포 형태로 패키징한다.

3. 단위 테스트를 행한다.

4. 정적 분석을 수행한다.

5. 분석 결과를 리포팅한다.

6. 패키징한 파일을 테스트 서버에 배포한다.

 

반응형

'Etc > IT 백과사전' 카테고리의 다른 글

파이어베이스(Firebasse)  (0) 2018.10.23
Webpack 이란  (0) 2018.08.10
Unit Test  (0) 2018.06.23
Linter  (0) 2018.06.23
RESTful API  (0) 2018.06.23
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기