You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
현재 앱은 하나의 Firebase project devlog-c87b6 안에서 Debug/Staging은 Firestore database staging, Release는 prod를 사용하고 Functions URL도 configuration별로 구분한다.
새 staging Firebase project devlog-staging에는 (default) Firestore와 공통 api 함수가 배포됐지만 iOS의 database ID, Functions URL과 Firebase plist 연결은 아직 기존 단일 project를 가리킨다. prod도 opficdev/DevLog_Firebase#53에서 기존 prod database를 (default)로 이전한 뒤 공통 api 구조로 전환할 예정이다.
TestFlight와 App Store가 인증, Firestore, FCM, Crashlytics, Analytics와 Functions를 포함해 서로 다른 Firebase project를 사용하도록 빌드 및 배포 경로를 분리한다.
PR #748에서 단일 App 구조, 환경별 plist 설치, 앱 환경 판별과 Firebase 필수 설정 처리를 먼저 구성했다. 남은 작업은 빌드 산출물 검증, staging 연결과 검증, prod 전환과 최종 격리 검증이다.
확정 구조
App target과 bundle ID opfic.DevLog 유지
기존 App scheme 유지
Project.swift는 Application/App/Sources/Resource/GoogleService-Info.plist 단일 리소스 경로 유지
로컬 Xcode 개발, CI, TestFlight는 staging Firebase project 사용
App Store 배포는 prod Firebase project 사용
staging과 prod는 각 Firebase project의 (default) Firestore 사용
환경 구분은 database ID가 아니라 APP_ENVIRONMENT, PROJECT_ID, GOOGLE_APP_ID와 FUNCTION_API_BASE_URL의 조합으로 검증
GitHub Actions가 Fastlane 실행 전에 환경별 원본 plist 하나를 공통 GoogleService-Info.plist 경로에 설치
배경
현재 앱은 하나의 Firebase project
devlog-c87b6안에서Debug/Staging은 Firestore databasestaging,Release는prod를 사용하고 Functions URL도 configuration별로 구분한다.새 staging Firebase project
devlog-staging에는(default)Firestore와 공통api함수가 배포됐지만 iOS의 database ID, Functions URL과 Firebase plist 연결은 아직 기존 단일 project를 가리킨다. prod도 opficdev/DevLog_Firebase#53에서 기존proddatabase를(default)로 이전한 뒤 공통api구조로 전환할 예정이다.TestFlight와 App Store가 인증, Firestore, FCM, Crashlytics, Analytics와 Functions를 포함해 서로 다른 Firebase project를 사용하도록 빌드 및 배포 경로를 분리한다.
PR #748에서 단일 App 구조, 환경별 plist 설치, 앱 환경 판별과 Firebase 필수 설정 처리를 먼저 구성했다. 남은 작업은 빌드 산출물 검증, staging 연결과 검증, prod 전환과 최종 격리 검증이다.
확정 구조
opfic.DevLog유지Appscheme 유지Project.swift는Application/App/Sources/Resource/GoogleService-Info.plist단일 리소스 경로 유지(default)Firestore 사용APP_ENVIRONMENT,PROJECT_ID,GOOGLE_APP_ID와FUNCTION_API_BASE_URL의 조합으로 검증GoogleService-Info.plist경로에 설치FirebaseApp.configure()유지완료된 기반 작업
environment: staging지정environment: prod지정APP_ENVIRONMENT=staging/prod주입과 환경 판별 분리남은 작업
진행 순서
제외 범위
완료 조건
FIRESTORE_DATABASE_ID=(default)를 포함함FIRESTORE_DATABASE_ID=(default)를 포함함GoogleService-Info.plist하나만 포함됨관련 이슈