2018년 10월 20일 토요일

CI/CD 란?

CI(Continuos Integration)란 ? 

개발자들이 개발한 소스를 모아서 특정 시점에 빌드하는 것과 반대로 주기적으로 수행함으로써 통합에서 발생하는 오류를 사전에 해결하고 이러한 과정들에 소요되는 시간을 줄이기 위한 기법으로 대표적인 툴로는 Jenkins 등 이 있다. 
(빌드,테스트를 실시하는 프로세스를 상시로 실시)


CI서버는 형상관리 서버에 커밋된 소스를 주기적으로 받아와 컴파일, 단위테스트 등의 과정을 수행하여 신규 또는 수정된 소스코드가 결함이 있는지 여부를 지속적으로 검증
또한 검증 결과를 이메일 등으로 전달하여 조기에 결함을 발견하여 해결할 수 있다고 함..


개발자 -> 형상관리 서버(ex. git,svn 등) -> CI 서버(jenkins, hudson 등) -> (최종 운영 서버에 배포 or ..?)
(이런식일까,, ??) 

>> 젠킨스의 설정에 따라 엄청 여러가지를 할 수 있는 듯 하다. 젠킨스의 셋팅을 직접해보면서 기능을 더 알아보는 것이 좋을 것 같다.(AWS하면 좋을  것같은데..언제하지..ㅠㅠ)

Jenkins가 제공하는 기능
- 웹 인터페이스를 통한 간편한 설정
- 강력하고 편리한 Reporting 기능
- 지속적인 자동화 빌드
- 지속적인 자동화 테스트
- 커버리지 감시
- 코드 품질 감시
- 다양한 인증기반과 결합한 인증 및 권한 관리 기능
- Groovy script를 이용한 고수준의 Job Scheculing 기능
- 커맨드라인 인터페이스 제공
- 자동화된 배포관리
- 분산빌드 기능
- 윈도우 커맨드 스케쥴링 실행 기능
(이 외에도 플러그인을 통해서 기능을 추가/확장 가능하다고함..)



CD(Continuous Delivery or Continuous Deploy)란? 

지속적 배포로 소프트웨어를 더 빠르게, 더 주기적으로 빌드하고 테스트하고 출시하는 것을 목표로한다. 

CI와의 차이점은 어디까지 자동화가 되어있느냐

소스를 푸쉬하고 빌드 시작 - CI
빌드 후 테스트 후 배포 - CD
(여기서도 배포 방식에 따라 수동화 - Delivery / 자동화 Depolyment) 

>>결국 CI/CD 를 통해 배포까지 자동화하는 것???  같음..

 기업들 기술블로그들에 좋은 자료가 많은 것 같다..ㅋㅋㅋ
참고해보쟝



- 컴투스 기술블로그 CI/CD
- 우아한형제들 기술블로그 CI/CD





댓글 없음:

댓글 쓰기