iOS 및 Android 앱의 빌드와 출시를 자동화하는 오픈소스 플랫폼인 fastlane을 사용하여 테스터에게 빌드를 배포할 수 있습니다. 이 경우 Fastfile
에 정의된 간단한 지침을 따릅니다. fastlane 및 Fastfile
을 설정하면 App Distribution을 fastlane 구성과 통합할 수 있습니다.
1단계: fastlane 설정
App Distribution을 fastlane 구성에 추가하려면 iOS 프로젝트의 루트에서 다음 명령어를 실행합니다.
fastlane add_plugin firebase_app_distribution
명령어에서 원하는 옵션을 선택하라는 메시지가 표시되면
Option 3: RubyGems.org
를 선택합니다.
2단계: Firebase로 인증
fastlane 플러그인을 사용하려면 먼저 다음 방법 중 하나로 Firebase 프로젝트로 인증해야 합니다. 다른 인증 방법을 사용하지 않는 경우 기본적으로 fastlane 플러그인은 Firebase CLI에서 사용자 인증 정보를 찾습니다.
Firebase 서비스 계정 사용자 인증 정보 사용
서비스 계정을 사용하여 인증하면 지속적 통합(CI) 시스템에서 플러그인을 유연하게 사용할 수 있습니다. 서비스 계정 사용자 인증 정보를 제공하는 두 가지 방법은 다음과 같습니다.
- 서비스 계정 키 파일을
firebase_app_distribution
작업에 전달합니다. 빌드 환경에 이미 서비스 계정 키 파일이 있는 경우 이 방법을 사용하면 편리합니다. GOOGLE_APPLICATION_CREDENTIALS
환경 변수가 서비스 계정 키 파일을 가리키도록 설정합니다. 이미 애플리케이션 기본 사용자 인증 정보(ADC)가 다른 Google 서비스(예: Google Cloud).
- Google Cloud 콘솔에서 프로젝트를 선택하고 새 서비스 계정을 만듭니다.
- Firebase App Distribution 관리자 역할을 추가합니다.
- 비공개 json 키를 만들고 빌드 환경에 액세스할 수 있는 위치로 이동합니다. 이 파일로 Firebase 프로젝트의 App Distribution에 대한 관리자 액세스 권한을 부여할 수 있으므로 파일을 안전한 곳에 보관하세요.
- 2019년 9월 20일 이후에 앱을 만든 경우 이 단계를 건너뜁니다. Google API 콘솔에서 Firebase App Distribution API를 사용 설정합니다. 메시지가 나타나면 Firebase 프로젝트와 이름이 동일한 프로젝트를 선택합니다.
서비스 계정 사용자 인증 정보를 입력하거나 찾습니다.
- 서비스 계정 키를 레인의
firebase_app_distribution
작업에 전달하려면 비공개 키 JSON 파일의 경로로service_credentials_file
매개변수를 설정합니다. ADC에서 사용자 인증 정보를 찾으려면
GOOGLE_APPLICATION_CREDENTIALS
환경 변수를 비공개 키 JSON 파일의 경로로 설정합니다. 예를 들면 다음과 같습니다.export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
ADC 인증에 대한 자세한 내용은 애플리케이션에 사용자 인증 정보 제공을 참조하세요.
- 서비스 계정 키를 레인의
Firebase CLI를 사용하여 로그인
프로젝트 인증 방법에 대한 안내는 Firebase CLI로 로그인을 참조하세요.
3단계: Fastfile 설정 및 앱 배포
./fastlane/Fastfile
레인에서firebase_app_distribution
블록을 추가합니다. 다음 매개변수를 사용하여 배포를 구성합니다.firebase_app_distribution 매개변수 app
앱에 Firebase 구성 파일(
GoogleService-Info.plist
)이 포함되지 않은 경우에만 필수 항목: 앱의 Firebase 앱 ID입니다. Firebase Console의 일반 설정 페이지에서 앱 ID를 찾을 수 있습니다.app: "1:1234567890:ios:0a1b2c3d4e5f67890"
googleservice_info_plist_path
보관처리된 제품 경로를 기준으로 한
GoogleService-Info.plist
파일 경로입니다. 기본적으로GoogleService-Info.plist
로 설정합니다.app
매개변수가 지정되지 않은 경우 앱의 Firebase 앱 ID를 가져오기 위해 이 파일이 사용됩니다.firebase_cli_token
Firebase CLI를 사용하여 CI 환경을 인증할 때 출력되는 갱신 토큰입니다. 자세한 내용은 CI 시스템과 함께 CLI 사용을 참조하세요.
service_credentials_file
Google 서비스 계정 json 파일 경로입니다. 서비스 계정 사용자 인증 정보를 사용한 인증 방법은 위 내용을 참조하세요.
ipa_path
apk_path
를 바꿉니다(지원 중단됨). 업로드할 IPA 파일의 절대 경로입니다. 지정하지 않으면 fastlane이 파일이 생성된 lane에서 파일 위치를 확인합니다.release_notes
release_notes_file
이 빌드의 출시 노트입니다.
출시 노트를 직접 지정할 수 있습니다.
release_notes: "Text of release notes"
또는 일반 텍스트 파일의 경로를 지정합니다.
release_notes_file: "/path/to/release-notes.txt"
testers
testers_file
초대할 테스터의 이메일 주소입니다.
쉼표로 구분된 이메일 주소 목록으로 테스터를 지정할 수 있습니다.
testers: "ali@example.com, bri@example.com, cal@example.com"
또는 쉼표로 구분된 이메일 주소 목록이 포함된 일반 텍스트 파일의 경로를 지정할 수 있습니다.
testers_file: "/path/to/testers.txt"
groups
groups_file
초대할 테스터 그룹입니다. 테스터 관리를 참조하세요. Firebase Console에서 찾을 수 있는
그룹 별칭 을 사용하여 그룹을 지정합니다.쉼표로 구분된 목록으로 그룹을 지정할 수 있습니다.
groups: "qa-team, trusted-testers"
또는 쉼표로 구분된 그룹 이름 목록이 포함된 일반 텍스트 파일의 경로를 지정할 수 있습니다.
groups_file: "/path/to/groups.txt"
test_devices
test_devices_file
다음 배포 유형은 자동 테스터 베타 기능의 일부입니다.
빌드를 배포할 테스트 기기입니다. 자동 테스트를 참조하세요.
테스트 기기를 세미콜론으로 구분된 테스트 기기 목록으로 지정할 수 있습니다.
test_devices: "model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"
또는 세미콜론으로 구분된 테스트 기기 목록이 포함된 일반 텍스트 파일의 경로를 지정할 수 있습니다.
test_devices_file: "/path/to/test-devices.txt"
test_username
자동 테스트 중에 사용할 자동 로그인의 사용자 이름입니다.
test_password
test_password_file
자동 테스트 중에 사용할 자동 로그인 비밀번호입니다.
또는 비밀번호가 포함된 일반 텍스트 파일의 경로를 지정할 수 있습니다.
test_password_file: "/path/to/test-password.txt"
test_username_resource
자동 테스트 중에 사용할 자동 로그인 사용자 이름 필드의 리소스 이름입니다.
test_password_resource
자동 테스트 중에 사용할 자동 로그인 비밀번호 필드의 리소스 이름입니다.
test_non_blocking
자동 테스트를 비동기식으로 실행합니다. Firebase Console로 이동하여 자동 테스트 결과를 확인합니다.
debug
부울 플래그입니다. 이 값을
true
로 설정하면 상세 디버그 출력이 표시됩니다.
예를 들면 다음과 같습니다.
platform :ios do desc "My awesome app" lane :distribute do build_ios_app(...) # build_ios_app is a built-in fastlane action. release = firebase_app_distribution( app: "1:123456789:ios:abcd1234", testers: "tester1@company.com, tester2@company.com", release_notes: "Lots of amazing new features to test out!" ) end end
레인을 실행하여 테스터가 빌드를 사용할 수 있도록 합니다.
fastlane <lane>
작업의 반환 값은 업로드된 출시 버전을 나타내는 해시입니다.
이 해시는 lane_context[SharedValues::FIREBASE_APP_DISTRO_RELEASE]
를 사용해서도 제공됩니다.
이 해시에서 사용 가능한 필드에 대한 자세한 내용은 REST API 문서를 참조하세요.
출시 버전 업로드 후 fastlane 플러그인은 다음 링크를 출력합니다. 다음 링크를 사용하면 바이너리를 관리하고 테스터 및 다른 개발자가 올바른 출시 버전을 사용할 수 있습니다.
- 단일 출시 버전을 표시하는 Firebase Console 링크입니다. 이 링크를 조직의 다른 개발자와 공유할 수 있습니다.
- 테스터가 출시 노트를 보고 기기에 앱을 설치할 수 있는 테스터 환경(iOS 웹 클립)의 출시 버전 링크입니다. 테스터가 링크를 사용하려면 출시 버전에 액세스할 수 있어야 합니다.
- 앱 바이너리(IPA 파일)를 직접 다운로드하고 설치하는 서명된 링크입니다. 링크는 1시간 후에 만료됩니다.
빌드를 배포한 후에는 150일 동안 Firebase 콘솔의 App Distribution 대시보드에서 사용할 수 있습니다. 빌드가 만료되기 30일 전부터 Console 및 테스트 기기의 테스터 빌드 목록 모두에 만료 알림이 표시됩니다.
이전에 앱 테스트 초대를 받지 않은 테스터는 시작 이메일 초대를 받습니다. 기존 테스터는 새 빌드를 테스트할 수 있는 이메일 알림을 받습니다. 테스트 앱을 설치하는 방법을 알아보려면 테스터로 설정을 참조하세요. Firebase Console에서 각 테스터 상태를 모니터링하여 초대 수락 여부와 앱 다운로드 여부를 확인할 수 있습니다.
(선택사항) 앱 배포에서 새 출시 버전을 만들 때마다 빌드 번호를 자동으로 증가시키려면 firebase_app_distribution_get_latest_release
작업 및 increment_build_number
작업을 사용할 수 있습니다.
다음 코드는 빌드 번호를 자동으로 증분하는 방법에 대한 예시를 보여줍니다.
lane :increment_version do
latest_release = firebase_app_distribution_get_latest_release(
app: "<your Firebase app ID>"
)
increment_build_number({ build_number: latest_release[:buildVersion].to_i + 1 })
end
이 fastlane 플러그인 기능에 대한 자세한 내용은 앱의 최신 출시 버전 정보 가져오기를 참조하세요.
4단계(선택사항): 배포 테스터 관리
Fastfile
파일을 사용하거나 fastlane 작업을 직접 실행하여 프로젝트 또는 그룹에서 테스터를 추가하고 삭제할 수 있습니다. 작업을 직접 실행하면 Fastfile
에 설정된 값이 재정의됩니다.
Firebase 프로젝트에 테스터를 추가한 후 개별 출시 버전에 테스터를 추가할 수 있습니다. Firebase 프로젝트에서 삭제된 테스터는 프로젝트의 출시 버전에 더 이상 액세스할 수 없지만 일정 기간 동안은 출시 버전에 대한 액세스 권한을 유지할 수 있습니다.
테스터가 많으면 그룹을 사용하는 것이 좋습니다.
Fastfile
사용
# Use lanes to add or remove testers from a project. lane(:add_testers) do firebase_app_distribution_add_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) add testers to this group ) end lane(:remove_testers) do firebase_app_distribution_remove_testers( emails: "foo@google.com,bar@google.com" # or file: "/path/to/testers.txt" group_alias: "qa-team" # (Optional) remove testers from this group only ) end
# Add or remove testers with the terminal
$ fastlane add_testers
$ fastlane remove_testers
fastlane 작업 실행
fastlane run firebase_app_distribution_create_group display_name:"QA Team" alias:"qa-team"
fastlane run firebase_app_distribution_add_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_remove_testers group_alias:"qa-team" emails:"foo@google.com,bar@google.com"
fastlane run firebase_app_distribution_delete_group alias:"qa-team"
또한 --emails
대신 --file="/path/to/testers.txt
를 사용하여 테스터를 지정할 수도 있습니다.
firebase_app_distribution_add_testers
및 firebase_app_distribution_remove_testers
태스크도 다음 인수가 허용됩니다.
project_name
: Firebase 프로젝트 번호입니다.group_alias
(선택사항): 지정된 경우 테스터가 지정된 그룹에 추가되거나 삭제됩니다.service_credentials_file
: Google 서비스 사용자 인증 정보 파일의 경로입니다.firebase_cli_token
: Firebase CLI의 인증 토큰입니다.
service_credentials_file
및 firebase_cli_token
은 업로드 작업에 사용되는 동일한 인수입니다.
5단계(선택사항): 앱의 최신 출시 버전 정보 가져오기
firebase_app_distribution_get_latest_release
작업을 사용하여 앱 버전 정보, 출시 노트, 생성 시간을 포함하여 앱 배포에서 앱의 최신 출시 버전에 대한 정보를 가져올 수 있습니다. 사용 사례에는 버전 자동 증가, 이전 출시 버전의 출시 노트 이월이 포함됩니다.
작업의 반환 값은 최신 출시 버전을 나타내는 해시입니다.
이 해시는 lane_context[SharedValues::FIREBASE_APP_DISTRO_LATEST_RELEASE]
를 사용해서도 제공됩니다.
이 해시에서 사용 가능한 필드에 대한 자세한 내용은 REST API 문서를 참조하세요.
매개변수
firebase_app_distribution_get_latest_release 매개변수 | |
---|---|
app
|
앱에 Firebase 구성 파일( app: "1:1234567890:ios:0a1b2c3d4e5f67890" |
googleservice_info_plist_path
|
보관처리된 제품 경로를 기준으로 한
|
firebase_cli_token
|
Firebase CLI를 사용하여 CI 환경을 인증할 때 출력되는 갱신 토큰입니다. 자세한 내용은 CI 시스템과 함께 CLI 사용을 참조하세요. |
service_credentials_file
|
Google 서비스 계정 json 파일 경로입니다. 서비스 계정 사용자 인증 정보를 사용한 인증 방법은 이전 문서를 참조하세요. |
service_credentials_json_data
|
Google 서비스 계정 json 파일 콘텐츠입니다. 서비스 계정 사용자 인증 정보를 사용한 인증 방법은 이전 문서를 참조하세요. |
debug
|
부울 플래그입니다. 이 값을 |
다음 단계
수동 또는 프로그래매틱 방식으로 기기를 더 등록하려면 추가 iOS 기기 등록을 참조하세요.
CI/CD 및 fastlane을 사용하여 QA 테스터에 Apple 앱을 배포할 때의 권장사항을 알아봅니다.