앱 배포 및 fastlane을 사용하여 시험판 iOS 빌드를 더 빠르게 배포

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

1. 시작하기 전에

4cddd34bd261cea0.png

이 Codelab에서는 Firebase 앱 배포fastlane 플러그인을 사용하여 iOS 앱을 테스터에게 배포하고, 테스트 기기 UDID를 수집하고, 앱의 프로비저닝 프로필에 등록하여 임시 빌드를 테스터에게 신속하게 가져오는 방법을 알아봅니다. ' 손.

당신이 배울 것

  • Firebase 앱 배포 및 fastlane을 사용하여 시험판 iOS 앱(Ad Hoc)을 테스터에게 업로드하고 배포하는 방법입니다.
  • 테스터로 가입하고 테스트 기기에 배포된 앱을 다운로드하는 방법.
  • App Distribution의 fastlane 플러그인으로 테스트 장치 UDID를 내보내 테스트 장치를 빠르게 등록하는 방법.
  • 앱의 프로비저닝 프로필을 업데이트하고 배포를 위해 다시 업로드하는 방법.

필요한 것

  • Google 계정
  • XCode 11.7 이상이 설치된 Apple 컴퓨터
  • Xcode에 내장된 Ad Hoc 시험판 iOS 앱
  • 유료 Apple 개발자 계정
  • 테스트를 위한 실제 iOS 기기.

iOS 시뮬레이터 앱은 대부분의 Codelab에서 작동하지만 시뮬레이터는 릴리스를 다운로드할 수 없습니다.

앱 배포 테스터 웹 앱에 "다운로드" 버튼이 나타나는지 확인하여 설정이 제대로 작동했는지 확인할 수 있습니다.

2. 시작하기

Fastlane 설정

앱 배포는 fastlane 과 통합되어 앱의 시험판 빌드 배포를 자동화할 수 있습니다. 앱 배포는 fastlane 구성과 통합됩니다.

  1. fastlane을 설치하고 설정합니다 .
  2. 설정하는 동안 프로젝트의 루트 디렉터리에서 fastlane init 실행하고 "수동 설정"을 선택합니다. fastlane 을 구성하는 데 사용할 Fastfile , AppfilePluginfile 포함하는 fastlane 이라는 하위 디렉터리가 표시됩니다.

3. fastlane으로 앱 구축

앱 빌드

  1. ./fastlane/Appfile에서 fastlane 에 대한 일부 전역 변수를 설정합니다 ./fastlane/Appfile. 앱의 ID와 Apple ID를 포함합니다.
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
  1. 첫 번째 레인을 만들고 fastlane의 build_app 작업( gym 이라고도 함)을 사용하여 ./fastlane/Fastfile 에 다음을 추가하여 앱을 빌드합니다.
default_platform(:ios)

lane :build do
    build_app(export_method: "ad-hoc")
end
  1. 배포를 위해 앱에 서명하십시오.

이 Codelab에서는 로컬에서 서명 인증서를 생성하고 모든 것을 macOS 키체인에 저장하는 get_certificates ( cert 라고도 함)를 사용하여 자체 인증 및 프로필을 관리합니다. 그러나 일반적으로 fastlane sync_code_signing action ( match 라고도 함)을 사용하여 팀의 코드 서명 인증서 및 프로필을 안전하게 관리할 수 있습니다.

lane :build do
    get_certificates()
    build_app(export_method: "ad-hoc")
end
  1. get_provisioning_profile 작업( sigh 이라고도 함)을 사용하여 앱의 프로비저닝 프로필을 설정합니다. 이렇게 하면 테스터와 앱을 공유할 수 있습니다.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true)
    build_app(export_method: "ad-hoc")
end
  1. [선택 사항] 이전에 앱을 실행한 적이 없는 경우 다음 명령을 실행하여 Apple 개발자 콘솔에서 앱을 생성합니다.

$ fastlane produce --skip_itc

  1. 마지막으로 레인을 실행하여 앱을 빌드합니다.

Apple ID, 암호(키체인에 저장됨) 및 앱의 번들 ID를 입력하라는 메시지가 표시됩니다.

$ fastlane build

문제가 발생하면 fastlane 문제 해결 가이드를 참조하세요.

4. Firebase에 앱 업로드

이제 앱을 빌드했으므로 앱 배포에 업로드할 준비가 되었습니다.

Firebase 프로젝트 생성 및 설정

  1. Firebase에 로그인합니다.
  2. Firebase 콘솔 에서 새 프로젝트를 만들거나 추가한 다음 프로젝트 이름을 'UDID 내보내기 Codelab'으로 지정합니다.

이 프로젝트에 대해 Google Analytics를 활성화할 필요가 없습니다.

  1. 프로젝트 만들기 를 클릭합니다.

프로젝트에 iOS 앱 추가

  1. iOS 아이콘을 클릭하여 새 Firebase iOS 앱을 만들고 앱의 번들 ID를 입력합니다.

9c26c130a6c42212.png

  1. 다음 몇 단계를 건너뛴 다음 콘솔로 계속 을 클릭합니다. 나중에 SDK를 앱에 추가합니다.

이제 프로젝트 개요 페이지에서 프로젝트와 앱을 사용할 수 있습니다.

66f79cc8a97fa8e9.png

앱 배포 활성화

  1. 릴리스 및 모니터링 섹션에서 앱 배포를 클릭합니다.
  2. 약관에 동의한 후 "시작하기"를 클릭하여 앱에 대한 앱 배포를 활성화합니다.

460213326c2784ae.png

fastlane 에서 배포 설정

  1. iOS 프로젝트의 루트에서 다음 명령을 실행하여 앱 배포를 fastlane 구성에 추가합니다.

명령이 옵션을 묻는 메시지를 표시하면 옵션 3: RubyGems.org를 선택합니다.

$ fastlane add_plugin firebase_app_distribution

  1. 플러그인이 설치되었는지 확인합니다.

$ fastlane

출력에는 설치된 플러그인 목록에 fastlane-plugin-firebase_app_distribution 표시되어야 합니다.

  1. 플러그인이 설치되었는지 확인한 후 옵션 0을 선택하여 취소합니다.

Firebase 프로젝트 인증

fastlane 플러그인을 사용하려면 먼저 Firebase 프로젝트를 인증해야 합니다.

  1. 다음 명령을 실행합니다.

$ fastlane run firebase_app_distribution_login

  1. 명령이 인증 링크를 인쇄하면 브라우저에서 링크를 엽니다.
  2. 메시지가 표시되면 Google 계정에 로그인하고 Firebase 프로젝트에 대한 액세스 권한을 부여합니다.

로그인 브라우저에서 결과 코드를 복사하여 명령줄에 붙여넣습니다.

  1. 그런 다음 로그인 작업은 앱 배포 플러그인이 Firebase 인증에 사용하는 새로 고침 토큰을 인쇄합니다.

dbd61c40c4131158.png

  1. FIREBASE_TOKEN 환경 변수를 설정하여 토큰을 전달합니다.

$ export FIREBASE_TOKEN= <token>

앱 배포

이제 앱을 배포할 준비가 되었습니다.

  1. ./fastlane/Fastfile 상단에서 firebase_app_id 라는 변수를 정의합니다. <your_app_id> 생성한 앱의 Firebase 앱 ID로 바꿉니다( 프로젝트 설정 페이지에서 찾을 수 있음).

Fastfile Ruby로 작성되었으므로 Ruby 구문을 사용하여 변수를 정의합니다.

firebase_app_id = "<your_app_id>"
  1. 빌드 레인을 호출하는 distribute 라는 새 레인을 추가한 다음 firebase_app_distribution 작업을 사용하여 앱을 배포합니다.
lane :distribute do
    build
    firebase_app_distribution(
        app: firebase_app_id,
        release_notes: "Try out this app!",
    )
end
  1. 새 레인을 실행하여 앱을 빌드하고 배포를 만듭니다.

$ 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 콘솔을 새로고침하면 앱의 새 버전이 표시됩니다.

c59dc1a94de3bf3c.png

5. 앱을 다운로드하도록 테스터 초대

테스터가 Ad Hoc 빌드 테스트 초대를 수락하면 UDID를 공유할 수 있는 권한을 요청받습니다. 동의하면 앱 배포에서 기기 정보를 수집하고 이메일을 통해 알려줍니다. 이 섹션에서는 자신을 테스터로 추가하여 배포한 앱을 다운로드하고 테스트합니다.

자신을 릴리스에 테스터로 추가

  1. Fastfile 상단의 firebase_app_id 아래에 테스터를 보관할 변수를 만들고 자신의 이메일 주소와 사용하려는 기타 선택적 이메일 주소를 포함합니다.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
  1. 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
  1. 차선을 다시 실행하십시오.

$ fastlane distribute

레인을 실행하면 추가한 테스터는 앱 배포에서 새로 사용 가능한 릴리스를 알리는 초대 이메일을 받게 됩니다. Firebase 콘솔에서 이제 앱 출시에 추가한 테스터를 볼 수 있습니다.

2e0fc9603b868af8.png

이메일 주소를 포함했으므로 Firebase App Distribution에서 앱 테스트를 요청하는 이메일을 받게 됩니다. 당신은 이제 첫 번째 테스터입니다! 테스트 기기에서 테스터로 설정하려면 아래 섹션을 계속 진행하세요.

테스트 기기 등록

테스트에 초대받은 앱 버전에 액세스하려면 테스트 기기에서 Google에 로그인해야 합니다. 테스트 빌드는 Ad Hoc 릴리스이므로 Firebase 프로필을 설치하여 테스트 기기도 등록해야 합니다. 이후에 사용 가능한 릴리스는 기기의 홈 화면에 추가된 웹 클립을 사용하여 앱 배포 테스터 웹 앱에서 액세스할 수 있습니다.

  1. iOS 테스트 기기에서 Firebase 앱 배포에서 보낸 이메일을 열고 시작하기 링크를 탭합니다. Safari에서 링크를 열어야 합니다.
  2. 이제 앱 배포 테스터 웹 앱에 있습니다. 표시되는 페이지에서 Google 계정으로 로그인하고 초대 수락을 누릅니다.

d833407de251b89f.png

  1. 이제 초대받은 릴리스를 볼 수 있습니다. 릴리스 중 하나에서 장치 등록을 누릅니다.

fd141215e54a938d.png

  1. 메시지가 표시되면 Firebase 프로필을 다운로드한 다음 설정 앱에 프로필을 설치합니다.

프로필을 설치하면 Firebase에 다음 권한이 부여됩니다.

  • 디바이스 고유 디바이스 ID(UDID)를 수집하여 테스트 디바이스를 등록합니다.

Firebase는 Firebase 프로젝트의 모든 소유자와 편집자에게 테스트 기기의 UDID가 포함된 이메일을 보냅니다.

  • 테스트 장치의 홈 화면에 웹 클립을 설치합니다. 웹 클립은 모든 테스트 앱을 설치하고 액세스할 수 있는 앱 배포 테스터 웹 앱을 엽니다.

앱 배포 테스터 웹 앱에서 이제 테스트 기기가 앱 출시를 위해 등록되었습니다.

fe93d649dfa25877.png

테스트 기기의 UDID를 Firebase에 공유했으므로 이제 개발자로 다시 시작할 수 있습니다. 앱 배포 대시보드테스터 탭 에서 이제 테스터 정보가 앱 릴리스 아래에 "수락됨" 상태로 표시됩니다.

7b9f665a63a384cf.png

다음 섹션에서는 앱의 프로비저닝 프로필에 기기 UDID를 추가한 다음 테스트 기기에서 작동하는 앱 버전을 빌드합니다.

테스터 기기 UDID 내보내기

개발자는 Firebase에서 테스트 기기의 UDID가 포함된 이메일을 받게 됩니다. 옵션으로 앱 배포를 사용하면 Firebase 콘솔에서 직접 원시 텍스트 파일로 내보낼 수 있으므로 여러 개의 새 기기 UDID를 한 번에 쉽게 수집할 수 있습니다.

  1. 모든 UDID를 내보내려면 테스터 및 그룹 탭을 엽니다.

241a9936898a2fc0.png

  1. Apple UDID 내보내기 를 클릭합니다.

bcf0c26c522d9b4e.png

파일에는 테스트 장치의 UDID가 포함되어야 합니다.

Device ID            Device Name                            Device Platform
1234567890     udid.codelab.tester@gmail.com - iPhone SE 2nd Gen        ios

UDID는 다음 섹션에서 수행할 fastlane 을 사용하여 명령줄에서 내보낼 수도 있습니다.

6. 앱의 프로비저닝 프로필을 업데이트하고 다시 빌드합니다.

이제 테스트 기기 UDID를 앱의 프로비저닝 프로필에 추가하고 기기에서 작동하는 앱 버전을 다시 빌드하고 새 버전을 배포합니다.

UDID 내보내기 레인 추가

  1. Fastfile 상단에 또 다른 변수를 추가하고 테스터의 장치 UDID가 다운로드될 파일 경로로 설정합니다.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
  "your@email.com",
  "another@email.com",
]
tester_udids_file = "tester_udids.txt"
  1. 콘솔에서와 마찬가지로 앱 배포 플러그인의 UDID 내보내기 작업을 사용하여 테스터 UDID를 다운로드하는 새 레인을 설정합니다.
lane :download_udids do
    firebase_app_distribution_get_udids(
        app: firebase_app_id,
        output_file: tester_udids_file,
    )
end
  1. 다음 레인을 실행하여 UDID를 다운로드합니다.

$ fastlane download_udids

  1. 테스트 장치 UDID를 포함해야 하는 다운로드한 파일을 인쇄합니다.

$ cat tester_udids.txt

Apple 개발자 콘솔에 장치 추가

  1. fastlane의 register_devices 작업을 사용하여 프로비저닝 프로필에 추가할 수 있도록 다음 레인을 생성하여 Apple 개발자 콘솔의 장치 목록에 UDID를 추가합니다.
lane :add_new_devices do
    register_devices(devices_file: tester_udids_file)
end
  1. 그런 다음 차선을 실행하십시오.

$ fastlane add_new_devices

그러면 개발자 콘솔의 기기 목록 에 새 기기가 표시됩니다.

프로비저닝 프로필에 장치 추가

  1. 빌드할 때마다 새 장치를 강제로 선택하도록 하려면 빌드 레인의 build 프로필 단계에 force 인수를 추가합니다.
lane :build do
    get_certificates()
    get_provisioning_profile(adhoc: true, force: true)
    build_app(export_method: "ad-hoc")
end

레인을 재실행하여 빌드 및 업로드

이제 장치를 프로비저닝 프로필에 추가하고 앱을 다시 빌드한 다음 배포하기 위해 새 레인으로 distribute 레인을 업데이트합니다.

  1. 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
  1. 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가 포함되었으므로 테스트 장치에 설치할 수 있습니다.

e275f73d57cc8fb1.png

  1. 테스트 기기에서 이메일의 링크 또는 기기 홈 화면의 아이콘을 사용하여 앱 배포 테스터 웹 앱으로 돌아갑니다.

UDID Codelab 앱으로 이동하면 릴리스를 다운로드할 준비가 된 것을 볼 수 있습니다.

dad6d03b6ad78746.png

  1. 실제 기기를 사용 중이라면 다운로드를 누른 다음 앱을 설치하고 실행하세요!

7. 축하합니다

이제 시험판 테스트 프로세스를 자동화하도록 앱 배포 및 fastlane을 구성했습니다. 이제 추가 테스터를 초대하거나 그들의 UDID를 앱에 추가하려는 경우 하나의 명령( fastlane distribute 만 실행하면 됩니다.

따라서 더 이상 테스터로부터 개별적으로 UDID를 수집하거나 장치 목록을 업데이트하거나 프로파일을 프로비저닝하기 위해 Apple 개발자 콘솔로 이동하지 않아도 됩니다. XCode를 열 필요조차 없습니다!

이 워크플로는 지속적 통합 환경에서 매시간 또는 매일 실행되도록 쉽게 설정할 수 있습니다.

추가 자료