CI 란?
시스템을 지속적이고 효율적으로 제공하기 위한 빌드, 테스트, 인스펙션 등을 반복적으로 실행해 효율성을 높이거나
오류를 발견하는 속도를 높이려는 방안.
CI 로 해야 할 일과 시점
1. 빌드 - CI 에서 실행 단위를 빌드라고 합니다.
2. 테스트
3. 인스펙션 - 품질 향상을 목적으로 이뤄지는 코드 분석을 말함.
4. 디플로이 - 개발한 소프트웨어를 배포해 사용할 수 있게 하는 것.
5. 피드백
6. 실행 시점.
- 커밋 빌드 : VCS ( 버전관리 시스템 ) 에 체크인 한 직후 빌드
- 2차 빌드 : 1일 1회 등 정기적으로 빌드
- 릴리스 빌드 : 릴리스 직전에 실행되는 빌드
CI 의 장점
1. 엔지니어가 품질에 자신하면서 작업을 진행할 수 있음.
2. 수작업으로 할 일이 비교적 적다 ( 테스트 실행, 디플로이 작업 등 )
3. 피드백이 빠르고 빈번하다 ( 빌드와 디플로이 방법을 몰라도 바로 동작을 확인할 수 있다. )
4. 팀에서 다루는 소스코드 전체에 관한 상황을 시각화 ( 커밋 상황이나 테스트 커버리지, 코드 복잡도 등 )
* 테스트 커버리지 ( Test Coverage )란?
테스트 커버리지란 시스템 또는 소프트웨어의 테스트를 논할 때 얼마나 테스트가 충분한가를 나타낸 것이다. 즉, 수행한 테스트가 테스트의 대상을 얼마나 커버했는지를 나타낸다.
CI 툴
1. Jenkins - 프로젝트에 필요한 설정은 무엇이든 할 수 있다. ( 서버운영이나 환경정비 시간등을 고려 해야한다 )
2. Circle - SaaS 서비스 사양에 제한된 설정만 할 수 있다. ( 서버운영이나, 환경 정비등이 필요 없다. )
*SaaS 란?
서비스로서의 소프트웨어(Software-as-a-Service, SaaS)는
클라우드 애플리케이션과 기본 IT 인프라 및 플랫폼을 사용자에게 제공하는 클라우드 컴퓨팅 형태입니다.
준비
- 안드로이드 SDK 를 Jenkins 서버에 넣고 필요한 패키지를 설치
- jenkins 에서 깃허브로 부터 프로젝트를 클론하기 위해서, 플러그인이 필요 ( Git Plugin, GitHub Plugin )
'개인 공부' 카테고리의 다른 글
( 작성중 ) JAVA - 델리게이트, 이벤트 (0) | 2022.09.16 |
---|---|
BLE 통신 ( 저전력 블루투스 ) (0) | 2022.09.14 |
MVVM? (0) | 2022.03.25 |
의존성 주입 (DI, Dependency Injection ) / Dagger2 (0) | 2021.12.18 |
React Native 하면서 궁금했던거. (0) | 2021.08.08 |