지속적 통합 기본사항
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
지속적 통합 (CI)은 개발자가 코드 변경사항을 중앙 저장소에 자주 병합한 후 자동 빌드와 테스트가 실행되는 소프트웨어 개발 방식입니다.
기본 CI 시스템을 설정하여 병합 후 빌드를 손상시키는 새로운 변경사항을 방지할 수 있습니다. 고급 CI 시스템을 프로그래밍하여 앱을 자동으로 테스트하고 API 수준, 화면 크기, 플랫폼과 같은 다양한 환경에서 예상대로 작동하는지 확인할 수 있습니다.
이 문서에서는 개발자가 Android 프로젝트에 효과적인 CI 시스템을 설정하기 위해 사용하는 일반적인 전략을 보여줍니다. 이 가이드라인은 일반적이며 대부분의 솔루션에 적용됩니다.
일반적인 예
일반적인 CI 시스템은 다음과 같은 워크플로 또는 파이프라인을 따릅니다.
- CI 시스템은 일반적으로 개발자가 '변경 목록' 또는 '병합 요청'이라고도 하는 pull 요청을 만들 때 코드 변경을 감지합니다.
- 워크플로를 실행할 서버를 프로비저닝하고 초기화합니다.
- 필요한 경우 Android SDK 또는 에뮬레이터 이미지와 같은 도구와 코드를 가져옵니다.
- 주어진 명령어(예:
/gradlew
build
)를 실행하여 프로젝트를 빌드합니다.
- 특정 명령어(예:
/gradlew test
)를 실행하여 로컬 테스트를 실행합니다.
- 에뮬레이터를 시작하고 계측 테스트를 실행합니다.
- 테스트 결과 및 APK와 같은 아티팩트를 업로드합니다.
CI의 이점
CI의 장점은 다음과 같습니다.
- 소프트웨어 품질 향상: CI는 문제를 조기에 식별하고 해결하여 소프트웨어 품질을 개선하는 데 도움을 줄 수 있습니다. 이렇게 하면 소프트웨어 출시에서 버그 수를 줄이고 전반적인 사용자 환경을 개선할 수 있습니다.
- 손상된 빌드 위험 감소: CI로 빌드 프로세스를 자동화하면 프로세스 초반에 문제를 해결하여 손상된 빌드를 더 효과적으로 방지할 수 있습니다.
- 출시 신뢰도 향상: CI는 각 버전이 안정적이고 프로덕션에 즉시 사용 가능한지 확인하는 데 도움이 될 수 있습니다. CI는 자동화된 테스트를 실행하여 잠재적 문제를 일반에 공개하기 전에 식별할 수 있습니다.
- 커뮤니케이션 및 공동작업 향상: CI는 개발자가 코드와 테스트 결과를 공유하는 중앙 장소를 제공하여 개발자 및 다른 팀 구성원이 더 쉽게 협업하고 진행 상황을 추적할 수 있도록 도와줍니다.
- 생산성 향상: CI는 시간이 많이 걸리고 오류가 발생하기 쉬운 작업을 자동화하여 개발자 생산성을 높이는 데 도움이 될 수 있습니다.
추가 자료
지속적 통합을 사용하여 앱 개발을 개선하는 방법에 관한 자세한 내용은 다음 페이지를 참고하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2023-12-01(UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"필요한 정보가 없음"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"너무 복잡함/단계 수가 너무 많음"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"오래됨"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"번역 문제"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"샘플/코드 문제"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"기타"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"이해하기 쉬움"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"문제가 해결됨"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"기타"
}]
{"lastModified": "\ucd5c\uc885 \uc5c5\ub370\uc774\ud2b8: 2023-12-01(UTC)"}
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2023-12-01(UTC)"]]