이 문서에서는 CI/CD 환경에서 Android 출시 전 테스트 워크플로가 지속 가능하고 반복 가능하도록 Firebase App Distribution을 사용하는 권장사항을 소개합니다. 솔루션에는 Gradle 및 fastlane이 포함되어 있지만 유연성이 향상되도록 Firebase Console, Firebase CLI, 공개 Firebase App Distribution API를 통해 제공되는 솔루션도 포함되어 있습니다. 최적의 환경을 위해 사전에 계획할 수 있도록 출시 및 테스터 한도도 설명합니다.
Apple 플랫폼도 사용하는 경우 CI/CD 및 fastlane을 사용하여 QA 테스터에 Apple 앱을 배포할 때의 권장사항을 참조하세요.
시작하기 전에
이 문서의 권장사항을 구현하기 전에 각 앱의 Firebase Console에서 App Distribution을 사용 설정해야 합니다. App Distribution을 사용 설정하지 않았으면 404 오류가 발생합니다.
App Distribution을 사용 설정하려면 다음 단계를 수행합니다.
- Firebase Console에서 App Distribution 페이지를 엽니다.
- Android 앱을 선택합니다.
- 시작하기를 클릭합니다.
Android App Bundle(AAB)이 가장 일반적인 Android 패키지 형식이 됨에 따라 Google Play에 연결하여 AAB를 테스터에 배포하는 기능을 설정하는 것이 좋습니다.
CI/CD 파이프라인을 사용하여 출시 전 테스트 워크플로 자동화
앱을 자동으로 빌드하고 테스터에게 출시하려면 CI/CD를 사용하는 경우 fastlane 또는 Gradle을 사용하는 것이 좋습니다. 또 다른 옵션은 다양한 Firebase 제품에 액세스할 수 있는 Firebase CLI를 사용하는 것입니다.
fastlane 사용
iOS 및 Android 앱의 빌드와 출시를 자동화하는 오픈소스 도구인 fastlane을 사용하여 App Distribution을 CI/CD 파이프라인에 통합합니다. 최신 출시 버전을 자동으로 빌드하고 테스터에 배포함으로써 테스터가 항상 최신 버전의 테스트 앱을 사용할 수 있습니다.
App Distribution을 fastlane과 통합하는 방법은 fastlane을 사용하여 테스터에 Android 앱 배포를 참조하세요.
Gradle 사용
Gradle을 통해 App Distribution Gradle 플러그인을 사용하여 App Distribution을 Android 빌드 프로세스에 통합합니다. 이 플러그인을 사용하면 앱의 build.gradle
파일에 테스터와 출시 노트를 지정하여 앱의 다양한 빌드 유형과 변형에 대한 배포를 구성할 수 있습니다.
App Distribution을 Gradle과 통합하는 방법은 Gradle을 사용하여 테스터에 Android 앱 배포를 참조하세요.
Firebase CLI 사용
App Distribution에서 제공하는 Firebase CLI 도구를 사용하여 프로그래매틱 방식으로 빌드를 테스터에 배포합니다. 빌드의 테스터와 출시 노트를 지정할 수 있습니다.
앱의 Firebase 앱 ID를 지정하고 필요에 따라 출시 노트 및 테스터 이메일이 포함된 파일을 추가하여 최신 Android 빌드를 배포합니다.
firebase appdistribution:distribute test.aab \
--app 1:1234567890:android:0a1b2c3d4e5f67890 \
--release-notes "Bug fixes and improvements" --testers-file testers.txt
Firebase CLI를 사용하여 빌드를 자동화하는 방법에 대한 자세한 내용은 Firebase CLI를 사용하여 테스터에 Android 앱 배포를 참조하세요.
서비스 사용자 인증 정보를 사용하여 인증
App Distribution fastlane 플러그인, Gradle 플러그인 또는 서비스 계정이 있는 Firebase CLI를 사용합니다. 서비스 계정은 사용자가 아닌 애플리케이션을 나타내는 Google 계정 유형입니다. CI 시스템은 서비스 계정을 사용하여 App Distribution 워크로드를 실행할 수 있습니다. 자세한 내용은 서비스 계정으로 인증을 참조하세요.
워크로드 아이덴티티 제휴를 사용 중인 경우 서비스 계정 키 대신 사용자 인증 정보 구성 파일을 생성하여 사용할 수 있습니다.
출시 버전 한도에 유의
App Distribution은 출시 버전을 앱당 최대 1,000개까지 지원합니다. 즉, 출시 버전 한도를 초과하면 App Distribution에서 자동으로 한도를 초과하는 가장 오래된 출시 버전을 삭제합니다. 출시 버전 한도를 관리하는 방법은 앱 출시 버전은 얼마 동안 사용할 수 있나요?를 참조하세요.
여러 출시 버전에 동일한 테스터 집합 추가
다수의 테스터를 출시 버전에 추가하려면 App Distribution의 일괄 테스터 관리 기능을 사용합니다.
그룹을 사용하여 여러 출시 버전에 동일한 테스터를 추가하는 것이 좋습니다. 그룹은 액세스 제어 목록 역할을 합니다. 그룹에서 테스터를 삭제하면 해당 그룹에 배포된 모든 출시 버전에 액세스할 수 없게 됩니다. 자세한 내용은 그룹에서 테스터 추가 및 삭제를 참조하세요.
관리할 테스터가 많으면 Firebase Console을 사용하여 테스터를 일괄 추가 및 삭제하면 됩니다. 테스터 추가 및 삭제를 자동화하려면 Firebase CLI, fastlane, Gradle 또는 공개 Firebase App Distribution API를 사용합니다.
테스터 한도에 유의
App Distribution은 Firebase 프로젝트 또는 App Distribution 그룹에 추가할 수 있는 테스터 수를 제한합니다. 이러한 한도를 초과하면 추가 테스터에게 앱을 배포할 수 없습니다. 테스터 한도에 대한 자세한 내용은 앱에 테스터를 추가하는 데 한도가 있나요?를 참조하세요.
잠재적 테스터가 테스트에 직접 등록하도록 허용
더 많은 테스터에게 앱을 더 쉽게 배포하려면 초대 링크를 사용하는 것이 좋습니다. 초대 링크는 테스터가 이메일 주소를 입력하여 앱 테스트에 가입할 수 있는 고유 URL입니다. 사용자가 앱 테스터 목록에 자신을 직접 추가할 수 있도록 허용하여 내부 테스트 기반을 늘릴 수 있습니다.
초대 링크 사용 사례로는 회사 dogfood 프로그램, 대규모 QA팀이 있는 조직, 개별 클라이언트가 테스터 액세스를 제어할 수 있도록 하려는 개발자 그룹 등이 있습니다.
그룹용 초대 링크를 만드는 것이 좋습니다. 초대 링크를 사용하여 가입하는 모든 테스터는 이후 출시 버전에 자동으로 추가됩니다.
자세한 내용은 초대 링크 만들기 및 그룹에서 테스터 추가 및 삭제를 참조하세요.
중요하게 생각하는 버전을 테스터가 테스트하는지 확인
새 버전이 업로드되면 테스터에게 이메일 알림이 전송됩니다. 이 알림을 보완하기 위해 버전 링크와 인앱 알림 같은 기능을 사용하여 테스터가 내게 중요한 특정 앱 버전을 테스트하도록 만들 수 있습니다.
- 출시 링크: 테스터와 특정 버전을 공유하려는 경우 이 기능을 사용합니다. 출시 버전 링크를 사용하는 방법은 Firebase Console을 사용하여 테스터에 Android 앱 배포를 참조하세요. Google의 Firebase, fastlane, Gradle 명령줄(CLI) 도구에서 빌드 자동화 도구와 함께 이 링크를 사용할 수도 있습니다.
- 인앱 알림: 테스터가 최신 버전의 앱을 테스트하고 있는지 확인하려면 이 알림을 사용합니다. Firebase App Distribution Android SDK를 통합하면 앱의 새 빌드를 사용할 수 있을 때 앱 내의 알림을 직접 테스터에 표시할 수 있습니다. 인앱 알림을 추가하는 방법은 테스터에게 새 빌드에 대해 알림을 참조하세요.
퇴사하는 테스터의 액세스 권한 자동 삭제
CI/CD 내부 테스트 흐름이 실행되면 퇴사한 직원이 더 이상 내부 빌드에 액세스할 수 없도록 해야 합니다. 빌드에 대한 테스터 액세스를 관리하는 데 도움이 되도록 App Distribution에서 다음 옵션을 제공합니다.
- fastlane: Fastfile 파일을 사용하거나 fastlane 작업을 직접 실행합니다. 자세한 내용은 fastlane을 사용하여 테스터에 Android 앱 배포를 참조하세요.
- Firebase CLI:
firebase appdistribution:testers:remove
작업을 사용합니다. 자세한 내용은 Firebase CLI를 사용하여 테스터에 Android 앱 배포를 참조하세요. - Gradle: Gradle을 사용하여 테스터를 삭제하는 경우
appDistributionRemoveTesters
를
및--PROJECT_NUMBER
인수와 함께--EMAILS build.gradle
파일에 전달합니다. 자세한 내용은 Gradle을 사용하여 테스터에 Android 앱 배포를 참조하세요. - 공개 Firebase App Distribution API:
testers.batchRemove
엔드포인트를 사용합니다.