1. 시작하기 전에
이 Codelab에서는 Firebase 앱 배포 및 fastlane 플러그인을 사용하여 테스터에게 iOS 앱을 배포하고, 테스트 장치 UDID를 수집하고, 이를 앱의 프로비저닝 프로필에 등록하여 임시 빌드를 테스터에게 빠르게 제공하는 방법을 알아봅니다. '손.
무엇을 배울 것인가
- Firebase 앱 배포 및 fastlane을 사용하여 테스터에게 출시 전 iOS 앱(Ad Hoc)을 업로드하고 배포하는 방법입니다.
- 테스터로 가입하고 테스트 기기에 배포된 앱을 다운로드하는 방법입니다.
- 앱 배포의 fastlane 플러그인을 사용하여 테스트 장치 UDID를 내보내 테스트 장치를 빠르게 등록하는 방법입니다.
- 앱의 프로비저닝 프로필을 업데이트하고 배포를 위해 다시 업로드하는 방법입니다.
필요한 것
- Google 계정
- XCode 11.7+가 설치된 Apple 시스템
- Xcode에 내장된 임시 시험판 iOS 앱
- 유료 Apple 개발자 계정
- 테스트를 위한 실제 iOS 장치입니다.
iOS 시뮬레이터 앱은 대부분의 Codelab에서 작동하지만 시뮬레이터는 릴리스를 다운로드할 수 없습니다.
앱 배포 테스터 웹 앱에 "다운로드" 버튼이 나타나는지 확인하여 설정이 제대로 작동했는지 확인할 수 있습니다.
2. 시작하기
fastlane 설정
앱 배포는 fastlane 과 통합되어 앱의 시험판 빌드 배포를 자동화할 수 있습니다. 앱 배포는 fastlane 구성과 통합됩니다.
- fastlane을 설치하고 설정합니다 .
- 설정 중에 프로젝트의 루트 디렉터리에서
fastlane init
실행하고 "수동 설정"을 선택하세요. fastlane 을 구성하는 데 사용할Fastfile
,Appfile
및Pluginfile
포함된fastlane
하위 디렉터리가 표시됩니다.
Firebase CLI 설치
또한 Firebase CLI를 설치해야 합니다. macOS 또는 Linux를 사용하는 경우 다음 cURL 명령을 실행할 수 있습니다.
curl -sL https://firebase.tools | bash
Windows를 사용하는 경우 독립 실행형 바이너리를 얻거나 npm
통해 설치하려면 설치 지침을 읽어보세요.
CLI를 설치한 후 firebase --version
실행하면 버전이 12.0.0
이상으로 보고되어야 합니다.
$ firebase --version 12.0.0
3. fastlane으로 앱 구축
앱 빌드
- ./fastlane/Appfile에서 fastlane 에 대한 전역 변수를 설정하세요
./fastlane/Appfile.
앱 ID와 Apple ID를 포함하세요.
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- 첫 번째 레인을 만들고 fastlane의
build_app
작업(gym
이라고도 함)을 사용하여./fastlane/Fastfile
에 다음을 추가하여 앱을 빌드하세요.
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- 배포를 위해 앱에 서명하세요.
이 Codelab에서는 로컬에서 서명 인증서를 생성하고 macOS 키체인에 모든 것을 저장하는 get_certificates
( cert
라고도 함)를 사용하여 자체 인증과 프로필을 관리합니다. 그러나 일반적으로 fastlane sync_code_signing action
( match
라고도 함)을 사용하여 팀의 코드 서명 인증서 및 프로필을 안전하게 관리하는 것이 좋습니다.
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
-
get_provisioning_profile
작업(sigh
라고도 함)을 사용하여 앱에 대한 프로비저닝 프로필을 설정합니다. 이를 통해 테스터와 앱을 공유할 수 있습니다.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [선택 사항] 이전에 앱을 실행한 적이 없다면 다음 명령을 실행하여 Apple 개발자 콘솔에서 앱을 생성하세요.
$ fastlane produce --skip_itc
- 마지막으로 레인을 실행하여 앱을 빌드합니다.
Apple ID, 비밀번호(키체인에 저장되어 있음) 및 앱의 번들 ID를 입력하라는 메시지가 표시됩니다.
$ fastlane build
문제가 발생하면 fastlane 문제 해결 가이드를 참조하세요.
4. Firebase에 앱 업로드
이제 앱을 빌드했으므로 앱 배포에 업로드할 준비가 되었습니다.
Firebase 프로젝트 만들기 및 설정
- Firebase에 로그인합니다.
- Firebase 콘솔 에서 새 프로젝트를 만들거나 추가한 다음 프로젝트 이름을 'UDID 내보내기 Codelab'으로 지정합니다.
이 프로젝트에는 Google Analytics를 활성화할 필요가 없습니다.
- 프로젝트 생성 을 클릭합니다.
프로젝트에 iOS 앱 추가
- iOS 아이콘을 클릭하여 새 Firebase iOS 앱을 만들고 앱의 번들 ID를 입력하세요.
- 다음 몇 단계를 건너뛰고 콘솔로 계속을 클릭합니다. 나중에 앱에 SDK를 추가하게 됩니다.
이제 프로젝트 개요 페이지에서 프로젝트와 앱을 사용할 수 있습니다.
앱 배포 활성화
- 릴리스 및 모니터링 섹션에서 앱 배포를 클릭합니다.
- 약관에 동의한 후 '시작하기'를 클릭하여 앱에 대한 앱 배포를 활성화하세요.
fastlane 에서 배포 설정
- iOS 프로젝트 루트에서 다음 명령을 실행하여 fastlane 구성에 앱 배포를 추가하세요.
명령이 옵션을 묻는 메시지를 표시하면 옵션 3: RubyGems.org를 선택합니다.
$ fastlane add_plugin firebase_app_distribution
- 플러그인이 설치되었는지 확인합니다.
$ fastlane
출력에는 설치된 플러그인 목록에 fastlane-plugin-firebase_app_distribution
표시되어야 합니다.
- 플러그인이 설치되었는지 확인한 후 옵션 0을 선택하여 취소하세요.
Firebase 프로젝트 인증
fastlane 플러그인을 사용하려면 먼저 Firebase 프로젝트를 인증해야 합니다.
- 다음 명령을 실행하여 CLI를 Google 계정에 연결합니다.
$ firebase login
- 명령이 인증 링크를 인쇄하면 브라우저에서 링크를 엽니다.
- 메시지가 표시되면 Google 계정에 로그인하고 Firebase 프로젝트에 액세스할 수 있는 권한을 부여하세요.
앱 배포
이제 앱을 배포할 준비가 되었습니다.
-
./fastlane/Fastfile
상단에firebase_app_id
라는 변수를 정의합니다.<your_app_id>
생성한 앱의 Firebase 앱 ID로 바꿉니다. 이는 프로젝트 설정 페이지에서 확인할 수 있습니다.
Fastfile
Ruby로 작성되었으므로 Ruby 구문을 사용하여 변수를 정의하세요.
firebase_app_id = "<your_app_id>"
- 빌드 레인을 호출하는
distribute
이라는 새 레인을 추가한 다음firebase_app_distribution
작업을 사용하여 앱을 배포합니다.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- 새 레인을 실행하여 앱을 빌드하고 배포를 생성하세요.
$ fastlane distribute
이 시점에서 Fastfile은 다음과 같아야 합니다.
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
Firebase 콘솔을 새로 고치면 앱의 새 버전이 표시됩니다.
5. 테스터를 초대하여 앱을 다운로드하세요.
테스터가 Ad Hoc 빌드 테스트 초대를 수락하면 UDID 공유 권한을 요청받게 됩니다. 동의하면 앱 배포에서 기기 정보를 수집하고 이메일을 통해 알려드립니다. 이 섹션에서는 배포한 앱을 다운로드하고 테스트하기 위한 테스터로 자신을 추가합니다.
자신을 릴리스에 테스터로 추가하세요.
- Fastfile 상단의
firebase_app_id
아래에 테스터를 보관할 변수를 만들고 자신의 이메일 주소와 시도하려는 기타 선택적 이메일 주소를 포함하세요.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- Ruby의 Array#join 메소드를 적용하여
app_testers
배열을testers
매개변수가 예상하는 쉼표로 구분된 문자열로 변환합니다. 그런 다음 결과를 firebase_app_distribution의testers
매개변수에 전달합니다firebase_app_distribution.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
이 시점에서 Fastfile은 다음과 같아야 합니다.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- 차선을 다시 달리십시오.
$ fastlane distribute
레인을 실행하면 추가한 테스터는 앱 배포로부터 새로 사용 가능한 릴리스를 알리는 초대 이메일을 받게 됩니다. 이제 Firebase 콘솔에서 앱 출시에 추가한 테스터를 볼 수 있습니다.
이메일 주소를 포함했으므로 Firebase 앱 배포로부터 앱 테스트를 요청하는 이메일을 받게 됩니다. 이제 첫 번째 테스터가 되셨습니다! 테스트 장치에서 테스터로 설정하려면 아래 섹션을 계속 진행하세요.
테스트 장치 등록
테스터로서 테스트에 초대받은 앱 출시에 액세스하려면 테스트 기기에서 Google에 로그인해야 합니다. 테스트 빌드는 임시 릴리스이므로 Firebase 프로필을 설치하여 테스트 장치도 등록해야 합니다. 이후에는 기기의 홈 화면에 추가된 웹 클립을 사용하여 앱 배포 테스터 웹 앱에서 사용할 수 있는 릴리스에 액세스할 수 있습니다.
- iOS 테스트 기기에서 Firebase 앱 배포에서 보낸 이메일을 열고 시작하기 링크를 탭하세요. Safari에서 링크를 열어보세요.
- 이제 앱 배포 테스터 웹 앱에 있습니다. 표시되는 페이지에서 Google 계정으로 로그인하고 초대 수락을 탭하세요.
- 이제 초대받은 릴리스를 볼 수 있습니다. 릴리스 중 하나에서 장치 등록을 탭합니다.
- 메시지가 표시되면 Firebase 프로필을 다운로드한 다음 설정 앱에 프로필을 설치합니다.
프로필을 설치하면 Firebase에 다음 권한이 부여됩니다.
- 디바이스의 고유 디바이스 ID(UDID)를 수집하여 테스트 디바이스를 등록합니다.
Firebase는 Firebase 프로젝트의 모든 소유자와 편집자에게 테스트 기기의 UDID가 포함된 이메일을 보냅니다.
- 테스트 장치의 홈 화면에 웹 클립을 설치합니다. 웹 클립은 모든 테스트 앱을 설치하고 액세스할 수 있는 앱 배포 테스터 웹 앱을 엽니다.
이제 앱 배포 테스터 웹 앱에서 테스트 장치가 앱 릴리스에 등록되었습니다.
이제 테스트 기기의 UDID를 Firebase에 공유했으므로 이제 개발자로 재개할 수 있습니다. 앱 배포 대시보드 의 테스터 탭 에서 테스터 정보는 이제 앱 릴리스 아래에 '수락됨' 상태로 표시됩니다.
다음 섹션에서는 앱의 프로비저닝 프로필에 기기 UDID를 추가한 다음 테스트 기기에서 작동하는 앱 버전을 빌드합니다.
테스터 장치 UDID 내보내기
개발자는 테스트 기기의 UDID가 포함된 이메일을 Firebase로부터 받게 됩니다. 옵션으로 앱 배포를 사용하면 Firebase 콘솔에서 원시 텍스트 파일로 직접 내보낼 수 있어 여러 개의 새 기기 UDID를 한 번에 쉽게 수집할 수 있습니다.
- 모든 UDID를 내보내려면 테스터 및 그룹 탭을 엽니다.
- Apple UDID 내보내기 를 클릭합니다.
파일에는 테스트 장치의 UDID가 포함되어 있어야 합니다.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
다음 섹션에서 수행할 fastlane 을 사용하여 명령줄에서 UDID를 내보낼 수도 있습니다.
6. 앱의 프로비저닝 프로필을 업데이트하고 다시 빌드하세요.
이제 테스트 장치 UDID를 앱의 프로비저닝 프로필에 추가하고, 장치에서 작동하는 앱 버전을 다시 빌드하고, 새 버전을 배포합니다.
UDID 내보내기 레인 추가
- Fastfile 상단에 다른 변수를 추가하고 테스터의 장치 UDID가 다운로드될 파일 경로로 설정합니다.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- 콘솔에서 했던 것처럼 앱 배포 플러그인의 UDID 내보내기 작업을 사용하여 테스터 UDID를 다운로드하는 새 레인을 설정합니다.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- UDID를 다운로드하려면 다음 레인을 실행하세요.
$ fastlane download_udids
- 테스트 장치 UDID가 포함되어야 하는 다운로드한 파일을 인쇄합니다.
$ cat tester_udids.txt
Apple 개발자 콘솔에 장치 추가
- 다음 레인을 생성하여 Apple 개발자 콘솔의 장치 목록에 UDID를 추가하면 fastlane의
register_devices
작업을 사용하여 프로비저닝 프로필에 추가할 수 있습니다.
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- 그런 다음 차선을 실행하십시오.
$ fastlane add_new_devices
그러면 개발자 콘솔의 기기 목록 에 새 기기가 표시됩니다.
프로비저닝 프로필에 장치 추가
- 빌드할 때마다 강제로 새 장치를 선택하도록 하려면 빌드 레인의
build
프로필 단계에force
인수를 추가하세요.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
레인을 다시 실행하여 빌드하고 업로드하세요.
이제 프로비저닝 프로필에 디바이스를 추가하고 앱을 다시 빌드한 다음 배포하기 위해 distribute
레인을 새 레인으로 업데이트합니다.
-
distribute
에서 새 레인을 호출합니다.
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
-
distribute
레인을 실행합니다.
$ fastlane distribute
이 시점에서 Fastfile은 다음과 같아야 합니다.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
테스트 장치에서 릴리스를 다운로드하세요.
이제 앱에 테스트 장치 UDID가 포함되었으므로 이를 테스트 장치에 설치할 수 있습니다.
- 테스트 장치에서 이메일의 링크나 장치 홈 화면의 아이콘을 사용하여 앱 배포 테스터 웹 앱으로 돌아갑니다.
UDID Codelab 앱으로 이동하면 릴리스를 다운로드할 준비가 된 것을 확인할 수 있습니다.
- 실제 기기를 사용 중이라면 다운로드를 누른 후 앱을 설치하고 실행하세요!
7. 축하합니다
이제 사전 출시 테스트 프로세스를 자동화하기 위해 앱 배포 및 fastlane을 구성했습니다. 이제 추가 테스터를 초대하거나 앱에 UDID를 추가하려는 경우 fastlane distribute
명령 하나만 실행하면 됩니다.
따라서 더 이상 테스터로부터 UDID를 개별적으로 수집하거나 Apple 개발자 콘솔로 이동하여 장치 목록이나 프로비저닝 프로필을 업데이트할 필요가 없습니다. XCode를 열 필요조차 없습니다!
이 워크플로우는 지속적인 통합 환경에서 매시간 또는 매일 실행되도록 쉽게 설정할 수 있습니다.
추가 읽기
- iOS용 인앱 SDK를 포함한 Firebase 앱 배포 기능을 살펴보세요.
- Fastlane 에 대해 자세히 알아보기
-
match
로 팀의 코드 서명을 관리하세요 - fastlane을 CI에 통합하세요