Skip to content

App Store를 prod Firebase 프로젝트로 전환한다 #746

Description

@opficdev

상위 이슈: #740

배경

PR #748에서 App Store workflow가 prod 원본 plist를 공통 GoogleService-Info.plist 경로에 설치하도록 구성했다. App scheme의 Release configuration, APP_ENVIRONMENT=prod와 선택된 plist를 사용하는 dSYM 업로드 구조도 준비돼 있다.

현재 iOS는 Release에서 FIRESTORE_DATABASE_ID=prodhttps://asia-northeast3-devlog-c87b6.cloudfunctions.net/prodApi/api를 사용한다. opficdev/DevLog_Firebase#53은 기존 prod database 데이터를 같은 prod project의 (default)로 이전하고 prodApi를 공통 api로 전환한다.

prod 데이터 이전과 서버 전환에 맞춰 iOS의 database ID와 Functions URL을 한 번의 전환 순서로 변경하고 App Store 산출물을 검증해야 한다.

목표

App Store 빌드가 확정된 prod Firebase project의 (default) Firestore와 공통 api만 참조하도록 구성하고 검증한다.

작업

  • staging 통합 검증 완료 여부를 확인함
  • opficdev/DevLog_Firebase#53의 prod 데이터 이전 준비, 쓰기 제어와 rollback 기준을 확인함
  • prod project의 PROJECT_ID와 iOS 앱의 GOOGLE_APP_ID 기대값을 확인함
  • prod project에 배포된 공통 api URL을 확인함
  • Project.swiftReleaseFIRESTORE_DATABASE_ID=(default)를 주입함
  • Fastlane의 App Store database 기대값을 (default)로 변경함
  • Fastlane의 App Store Functions URL을 prod 공통 api URL로 변경함
  • #744의 공통 검증기에 prod 기대값 전체를 전달함
  • database 이전, 서버 전환과 iOS 설정 변경 순서를 opficdev/DevLog_Firebase#53에 기록함
  • upload 비활성 상태로 App Store workflow build를 수행함
  • 생성된 IPA에 prod plist 하나만 포함됐는지 확인함
  • 생성된 IPA가 staging project ID, app ID 또는 Functions URL을 포함하면 실패하도록 확인함
  • 생성된 IPA가 기존 prod database ID 또는 prodApi URL을 포함하면 실패하도록 확인함
  • 별도 승인된 App Store 배포 이후 prod Auth와 custom token 로그인을 확인함
  • prod Functions API와 (default) Firestore 읽기·쓰기를 확인함
  • prod FCM token 등록과 push 수신을 확인함
  • prod Crashlytics 대시보드에서 dSYM 연결을 확인함
  • 기존 App Store Connect 앱, bundle ID, 인증서와 provisioning profile을 유지함
  • 실패 시 기존 App Store 배포 설정으로 되돌릴 기준을 기록함

이미 완료된 범위

  • appstore.ymlenvironment: prod 지정
  • App scheme과 Release configuration 사용
  • APP_ENVIRONMENT=prod 주입
  • prod plist를 사용하는 Crashlytics dSYM 업로드 경로

제외 범위

  • 별도 App Store 앱 또는 bundle ID 생성
  • 인증서 및 provisioning profile 교체
  • Firebase Functions 배포와 Firestore 데이터 이전 실행
  • 기존 단일 project staging 자원 삭제
  • 별도 승인 없는 App Store Connect 업로드 및 심사 제출

prod 서버와 iOS 전환은 opficdev/DevLog_Firebase#53과 함께 수행하고, 최종 교차 환경 검증과 rollback 확인은 #747에서 수행한다.

검증

  • upload 비활성 App Store workflow build 성공
  • IPA의 APP_ENVIRONMENT=prod 확인
  • IPA의 확정된 prod PROJECT_ID, GOOGLE_APP_ID, BUNDLE_ID 확인
  • IPA의 FIRESTORE_DATABASE_ID=(default) 확인
  • IPA의 FUNCTION_API_BASE_URL이 prod 공통 api URL과 일치함
  • staging 식별자, 기존 prod database ID 또는 prodApi URL 사용 시 검증 실패
  • dSYM 업로드 명령이 빌드에 사용된 prod plist를 참조함
  • prod Auth, Functions, Firestore, FCM과 Crashlytics 연결 확인

완료 조건

의존 관계

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