fastlane을 사용하여 테스터에 iOS 앱 배포

iOS 및 Android 앱의 빌드와 출시를 자동화하는 오픈소스 플랫폼인 fastlane을 사용하여 테스터에게 빌드를 배포할 수 있습니다. 이 경우 Fastfile에 정의된 간단한 지침을 따릅니다. fastlane 및 Fastfile을 설정하면 App Distribution을 fastlane 구성과 통합할 수 있습니다.

1단계: fastlane 설정

  1. fastlane을 설치 및 설정합니다.

  2. App Distribution을 fastlane 구성에 추가하려면 iOS 프로젝트의 루트에서 다음 명령어를 실행합니다.

    fastlane add_plugin firebase_app_distribution

    명령어에서 원하는 옵션을 선택하라는 메시지가 표시되면 Option 3: RubyGems.org를 선택합니다.

2단계: Firebase로 인증

fastlane 플러그인을 사용하려면 먼저 다음 방법 중 하나로 Firebase 프로젝트로 인증해야 합니다. 다른 인증 방법을 사용하지 않는 경우 기본적으로 fastlane 플러그인은 Firebase CLI에서 사용자 인증 정보를 찾습니다.

3단계: Fastfile 설정 및 앱 배포

  1. ./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_testersfirebase_app_distribution_remove_testers 태스크도 다음 인수가 허용됩니다.

  • project_name: Firebase 프로젝트 번호입니다.
  • group_alias(선택사항): 지정된 경우 테스터가 지정된 그룹에 추가되거나 삭제됩니다.
  • service_credentials_file: Google 서비스 사용자 인증 정보 파일의 경로입니다.
  • firebase_cli_token: Firebase CLI의 인증 토큰입니다.

service_credentials_filefirebase_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 구성 파일(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 파일 경로입니다. 서비스 계정 사용자 인증 정보를 사용한 인증 방법은 이전 문서를 참조하세요.

service_credentials_json_data

Google 서비스 계정 json 파일 콘텐츠입니다. 서비스 계정 사용자 인증 정보를 사용한 인증 방법은 이전 문서를 참조하세요.

debug

부울 플래그입니다. 이 값을 true로 설정하면 상세 디버그 출력이 표시됩니다.

다음 단계