지속적 통합 기본사항

지속적 통합 (CI)은 개발자가 코드 변경사항을 중앙 저장소에 자주 병합한 후 자동 빌드와 테스트가 실행되는 소프트웨어 개발 방식입니다.

기본 CI 시스템을 설정하여 병합 후 빌드를 손상시키는 새로운 변경사항을 방지할 수 있습니다. 고급 CI 시스템을 프로그래밍하여 앱을 자동으로 테스트하고 API 수준, 화면 크기, 플랫폼과 같은 다양한 환경에서 예상대로 작동하는지 확인할 수 있습니다.

여러 개발자가 코드 변경을 요청하는 방식과 기본 코드 저장소에 병합되기 전에 CI 시스템에서 이를 확인하는 방법을 보여주는 다이어그램
그림 1. CI 시스템은 병합 전에 검사를 실행하여 코드 저장소를 정상 상태로 유지합니다.

이 문서에서는 개발자가 Android 프로젝트에 효과적인 CI 시스템을 설정하기 위해 사용하는 일반적인 전략을 보여줍니다. 이 가이드라인은 일반적이며 대부분의 솔루션에 적용됩니다.

일반적인 예

일반적인 CI 시스템은 다음과 같은 워크플로 또는 파이프라인을 따릅니다.

  1. CI 시스템은 일반적으로 개발자가 '변경 목록' 또는 '병합 요청'이라고도 하는 pull 요청을 만들 때 코드 변경을 감지합니다.
  2. 워크플로를 실행할 서버를 프로비저닝하고 초기화합니다.
  3. 필요한 경우 Android SDK 또는 에뮬레이터 이미지와 같은 도구와 코드를 가져옵니다.
  4. 주어진 명령어(예: /gradlew build)를 실행하여 프로젝트를 빌드합니다.
  5. 특정 명령어(예: /gradlew test)를 실행하여 로컬 테스트를 실행합니다.
  6. 에뮬레이터를 시작하고 계측 테스트를 실행합니다.
  7. 테스트 결과 및 APK와 같은 아티팩트를 업로드합니다.
기본 CI 워크플로를 보여주는 다이어그램
그림 2. 기본 CI 워크플로

CI의 이점

CI의 장점은 다음과 같습니다.

  • 소프트웨어 품질 향상: CI는 문제를 조기에 식별하고 해결하여 소프트웨어 품질을 개선하는 데 도움을 줄 수 있습니다. 이렇게 하면 소프트웨어 출시에서 버그 수를 줄이고 전반적인 사용자 환경을 개선할 수 있습니다.
  • 손상된 빌드 위험 감소: CI로 빌드 프로세스를 자동화하면 프로세스 초반에 문제를 해결하여 손상된 빌드를 더 효과적으로 방지할 수 있습니다.
  • 출시 신뢰도 향상: CI는 각 버전이 안정적이고 프로덕션에 즉시 사용 가능한지 확인하는 데 도움이 될 수 있습니다. CI는 자동화된 테스트를 실행하여 잠재적 문제를 일반에 공개하기 전에 식별할 수 있습니다.
  • 커뮤니케이션 및 공동작업 향상: CI는 개발자가 코드와 테스트 결과를 공유하는 중앙 장소를 제공하여 개발자 및 다른 팀 구성원이 더 쉽게 협업하고 진행 상황을 추적할 수 있도록 도와줍니다.
  • 생산성 향상: CI는 시간이 많이 걸리고 오류가 발생하기 쉬운 작업을 자동화하여 개발자 생산성을 높이는 데 도움이 될 수 있습니다.

추가 자료

지속적 통합을 사용하여 앱 개발을 개선하는 방법에 관한 자세한 내용은 다음 페이지를 참고하세요.