Skip to content

TestFlight와 App Store IPA의 Firebase 설정을 검증한다 #744

Description

@opficdev

상위 이슈: #740

배경

Fastlane은 현재 IPA 내부의 FIRESTORE_DATABASE_ID, FUNCTION_API_BASE_URL, Crashlytics 활성화 여부를 검증한다. 현재 기대값은 TestFlight staging, App Store prod이지만 Firebase project 분리 이후 두 환경은 각 project의 (default) Firestore를 사용한다.

PR #748에서 workflow가 환경별 GoogleService-Info.plist를 공통 경로에 설치하도록 구성했지만, IPA에 실제 포함된 Firebase project 식별자는 아직 검증하지 않는다. database ID만으로는 두 환경을 구분할 수 없으므로 앱 환경, Firebase project와 Functions URL을 함께 확인해야 한다.

목표

TestFlight와 App Store가 공유할 수 있는 IPA 검증기에 Firebase project 식별자, 앱 환경, (default) database와 공통 api URL 검증을 추가한다.

작업

  • IPA 내부 Info.plist에서 APP_ENVIRONMENT를 검증함
  • IPA 내부 Info.plist에서 bundle ID가 opfic.DevLog인지 검증함
  • IPA 내부 GoogleService-Info.plist에서 PROJECT_ID를 검증함
  • IPA 내부 GoogleService-Info.plist에서 GOOGLE_APP_ID를 검증함
  • IPA 내부 GoogleService-Info.plist에서 BUNDLE_IDopfic.DevLog인지 검증함
  • FIRESTORE_DATABASE_ID의 환경별 기대값을 검증 함수 입력으로 전달함
  • Firebase project 분리 이후 TestFlight와 App Store의 FIRESTORE_DATABASE_ID 기대값을 모두 (default)로 검증함
  • FUNCTION_API_BASE_URL이 해당 PROJECT_ID의 공통 api를 가리키는지 검증함
  • APP_ENVIRONMENT, Firebase 식별자, database ID와 Functions URL을 하나의 환경별 기대값 묶음으로 전달함
  • 확인되지 않은 project ID, app ID와 URL을 추측하거나 고정하지 않음
  • 누락 또는 불일치한 항목을 식별할 수 있는 오류를 출력함
  • build lane과 upload lane이 동일한 검증 함수를 사용하도록 함

이미 완료된 범위

  • App scheme의 Staging/Release configuration 빌드
  • 환경별 plist 선택과 공통 GoogleService-Info.plist 설치
  • APP_ENVIRONMENT=staging/prod 빌드 설정 주입
  • 기존 named database ID와 Functions URL 검증
  • 선택된 공통 plist를 이용한 Crashlytics dSYM 업로드

제외 범위

  • staging과 prod의 Firebase 식별자 및 공통 api URL 결정
  • Project.swift와 Fastlane의 환경별 실제 기대값 전환
  • workflow별 Firebase 환경 선택
  • 실제 IPA 업로드
  • Firebase Console 및 App Store Connect 변경

staging 기대값은 #745에서 연결하고 prod 기대값은 #746과 opficdev/DevLog_Firebase#53의 전환 과정에서 연결한다.

검증

  • ruby -c fastlane/Fastfile
  • 올바른 환경별 기대값을 전달한 IPA 검증 성공
  • APP_ENVIRONMENT 누락 또는 불일치 검증 실패
  • PROJECT_ID 누락 또는 불일치 검증 실패
  • GOOGLE_APP_ID 누락 또는 불일치 검증 실패
  • 앱과 Firebase plist의 bundle ID 불일치 검증 실패
  • database ID 또는 Functions URL 불일치 검증 실패
  • 서로 다른 PROJECT_ID에서 같은 FIRESTORE_DATABASE_ID=(default)를 사용하는 두 환경의 검증 성공
  • 전환이 끝난 환경에 staging 또는 prod named database ID가 남으면 검증 실패
  • build lane과 upload lane의 검증 경로가 일치함

완료 조건

  • Firebase project 설정이 잘못된 IPA를 업로드할 수 없음
  • database ID만으로 환경을 판별하지 않음
  • TestFlight와 App Store가 동일한 검증 함수를 공유함
  • 환경별 실제 기대값은 #745와 #746에서 독립적으로 연결할 수 있음

의존 관계

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions