CI/CD 및 fastlane을 사용하여 QA 테스터에 Apple 앱을 배포할 때의 권장사항

이 문서에서는 CI/CD 환경에서 Apple 플랫폼 출시 전 테스트 워크플로가 지속 가능하고 반복 가능하도록 Firebase App Distribution 및 fastlane을 사용하는 권장사항을 소개합니다. 이 문서에서는 주로 fastlane을 설명하지만 유연성이 향상되도록 Firebase Console, Firebase CLI, 공개 Firebase App Distribution API를 통해 제공되는 솔루션도 설명합니다. 최적의 환경을 위해 사전에 계획할 수 있도록 출시 및 테스터 한도도 설명합니다.

Android도 사용하는 경우 CI/CD를 사용하여 QA 테스터에 Android 앱을 배포할 때의 권장사항을 참고하세요.

시작하기 전에

이 문서의 권장사항을 구현하기 전에 각 앱Firebase Console에서 App Distribution을 사용 설정해야 합니다. App Distribution을 사용 설정하지 않았으면 404 오류가 발생합니다.

App Distribution을 사용 설정하려면 다음 단계를 수행합니다.

  1. Firebase Console에서 App Distribution 페이지를 엽니다.

  2. iOS 앱을 선택합니다.

  3. 시작하기를 클릭합니다.

CI/CD를 사용하여 출시 전 테스트 워크플로 자동화

앱을 자동으로 빌드하고 테스터에게 출시하려면 CI/CD를 사용하는 경우 fastlane을 사용하는 것이 좋습니다. 또 다른 옵션은 다양한 Firebase 제품에 액세스할 수 있는 Firebase CLI를 사용하는 것입니다.

fastlane 사용

iOS 및 Android 앱의 빌드와 출시를 자동화하는 오픈소스 도구인 fastlane을 사용하여 App Distribution을 CI/CD 파이프라인에 통합합니다. 최신 출시 버전을 자동으로 빌드하고 테스터에게 배포함으로써 테스터가 항상 최신 버전의 테스트 앱을 사용할 수 있습니다.

App Distribution을 fastlane과 통합하는 방법은 fastlane을 사용하여 테스터에 iOS 앱 배포를 참조하세요. fastlane 통합 프로세스를 안내하는 Codelab도 참조하세요.

Firebase CLI 사용

App Distribution에서 제공하는 Firebase CLI 도구를 사용하여 프로그래매틱 방식으로 빌드를 테스터에 배포합니다. 빌드의 테스터와 출시 노트를 지정할 수 있습니다.

앱의 Firebase 앱 ID를 지정하고 필요에 따라 출시 노트 및 테스터 이메일이 포함된 파일을 추가하여 최신 iOS 빌드 test.ipa를 배포합니다.

firebase appdistribution:distribute test.ipa  \
    --app 1:1234567890:ios:0a1b2c3d4e5f67890  \
    --release-notes "Bug fixes and improvements" --testers-file testers.txt

Firebase CLI를 사용하여 빌드를 자동화하는 방법에 대한 자세한 내용은 Firebase CLI를 사용하여 테스터에 iOS 앱 배포를 참조하세요.

서비스 사용자 인증 정보를 사용하여 인증

App Distribution fastlane 플러그인 또는 서비스 계정이 있는 Firebase CLI를 사용하면 애플리케이션 기본 사용자 인증 정보를 활용하고 CI를 관리하는 데 도움이 됩니다. 서비스 계정은 사용자가 아닌 애플리케이션을 나타내는 Google 계정 유형입니다. CI 시스템은 서비스 계정을 사용하여 App Distribution 워크로드를 실행할 수 있습니다. 자세한 내용은 서비스 계정으로 인증을 참조하세요.

워크로드 아이덴티티 제휴를 사용 중인 경우 서비스 계정 키 대신 사용자 인증 정보 구성 파일을 생성하여 사용할 수 있습니다.

출시 버전 한도에 유의

App Distribution은 출시 버전을 앱당 최대 1,000개까지 지원합니다. 즉, 출시 버전 한도를 초과하면 App Distribution에서 자동으로 한도를 초과하는 가장 오래된 출시 버전을 삭제합니다. 출시 버전 한도를 관리하는 방법은 앱 출시 버전은 얼마 동안 사용할 수 있나요?를 참조하세요.

여러 출시 버전에 동일한 테스터 집합 추가

다수의 테스터를 출시 버전에 추가하려면 App Distribution의 일괄 테스터 관리 기능을 사용합니다.

그룹을 사용하여 여러 출시 버전에 동일한 테스터를 추가하는 것이 좋습니다. 그룹은 액세스 제어 목록 역할을 합니다. 그룹에서 테스터를 삭제하면 해당 그룹에 배포된 모든 출시 버전에 액세스할 수 없게 됩니다. 자세한 내용은 그룹에서 테스터 추가 및 삭제를 참조하세요.

관리할 테스터가 많으면 Firebase Console을 사용하여 테스터를 일괄 추가 및 삭제하면 됩니다. 테스터 추가 및 삭제를 자동화하려면 Firebase CLI, fastlane 또는 공개 Firebase App Distribution API를 사용합니다.

테스터 한도에 유의

App Distribution은 Firebase 프로젝트 또는 App Distribution 그룹에 추가할 수 있는 테스터 수를 제한합니다. 이러한 한도를 초과하면 추가 테스터에게 앱을 배포할 수 없습니다. 테스터 한도에 대한 자세한 내용은 앱에 테스터를 추가하는 데 한도가 있나요?를 참조하세요.

새 iOS 테스터 기기 관리 및 자동 추가

추가 iOS 테스터 기기를 등록할 수 있도록 App Distribution을 사용하면 이메일이나 CSV 파일을 통해 새 테스터 iOS 기기에 대한 정보를 제공하여 Apple 개발자 포털에서 iOS 테스터 기기를 관리할 수 있습니다. 자세한 내용은 CSV 파일에서 테스터 가져오기를 참조하세요. 프로그래매틱 방식으로 fastlane을 사용하여 새 기기를 내보낼 수도 있습니다.

UDID를 자동으로 가져와 Apple 개발자 콘솔에 추가한 후 앱을 다시 빌드하고 배포하는 fastlane 작업을 설정하는 방법은 App Distribution 및 fastlane을 사용하여 출시 전 iOS 빌드를 빠르게 배포를 참조하세요.

잠재적 테스터가 테스트에 직접 등록하도록 허용

더 많은 테스터에게 앱을 더 쉽게 배포하려면 초대 링크를 사용하는 것이 좋습니다. 초대 링크는 테스터가 이메일 주소를 입력하여 앱 테스트에 가입할 수 있는 고유 URL입니다. 사용자가 앱 테스터 목록에 자신을 직접 추가할 수 있도록 허용하여 내부 테스트 기반을 늘릴 수 있습니다.

초대 링크 사용 사례로는 회사 dogfood 프로그램, 대규모 QA팀이 있는 조직, 개별 클라이언트가 테스터 액세스를 제어할 수 있도록 하려는 개발자 그룹 등이 있습니다.

그룹용 초대 링크를 만드는 것이 좋습니다. 초대 링크를 사용하여 가입하는 모든 테스터는 이후 출시 버전에 자동으로 추가됩니다.

자세한 내용은 초대 링크 만들기그룹에서 테스터 추가 및 삭제를 참조하세요.

중요하게 생각하는 버전을 테스터가 테스트하는지 확인

새 버전이 업로드되면 테스터에게 이메일 알림이 전송됩니다. 이 알림을 보완하기 위해 버전 링크와 인앱 알림 같은 기능을 사용하여 테스터가 내게 중요한 특정 앱 버전을 테스트하도록 만들 수 있습니다.

  • 출시 링크: 테스터와 특정 버전을 공유하려는 경우 이 기능을 사용합니다. 출시 버전 링크를 사용하는 방법은 Firebase Console을 사용하여 테스터에 iOS 앱 배포를 참조하세요. Firebasefastlane 명령줄(CLI) 도구에서 빌드 자동화 도구와 함께 이러한 링크를 사용할 수도 있습니다.

  • 인앱 알림: 테스터가 최신 버전의 앱을 테스트하고 있는지 확인하려면 이 알림을 사용합니다. Firebase App Distribution iOS SDK를 통합하면 앱의 새 빌드를 사용할 수 있을 때 앱 내의 알림을 직접 테스터에 표시할 수 있습니다. 인앱 알림을 추가하는 방법은 테스터에게 새 빌드에 대해 알림을 참조하세요.

퇴사하는 테스터의 액세스 권한 자동 삭제

CI/CD 내부 테스트 흐름이 실행되면 퇴사한 직원이 더 이상 내부 빌드에 액세스할 수 없도록 해야 합니다. 빌드에 대한 테스터 액세스를 관리하는 데 도움이 되도록 App Distribution에서 다음 옵션을 제공합니다.