상위 이슈: #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 검증을 추가한다.
작업
이미 완료된 범위
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의 전환 과정에서 연결한다.
검증
완료 조건
- Firebase project 설정이 잘못된 IPA를 업로드할 수 없음
- database ID만으로 환경을 판별하지 않음
- TestFlight와 App Store가 동일한 검증 함수를 공유함
- 환경별 실제 기대값은 #745와 #746에서 독립적으로 연결할 수 있음
의존 관계
상위 이슈: #740
배경
Fastlane은 현재 IPA 내부의
FIRESTORE_DATABASE_ID,FUNCTION_API_BASE_URL, Crashlytics 활성화 여부를 검증한다. 현재 기대값은 TestFlightstaging, App Storeprod이지만 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와 공통apiURL 검증을 추가한다.작업
Info.plist에서APP_ENVIRONMENT를 검증함Info.plist에서 bundle ID가opfic.DevLog인지 검증함GoogleService-Info.plist에서PROJECT_ID를 검증함GoogleService-Info.plist에서GOOGLE_APP_ID를 검증함GoogleService-Info.plist에서BUNDLE_ID가opfic.DevLog인지 검증함FIRESTORE_DATABASE_ID의 환경별 기대값을 검증 함수 입력으로 전달함FIRESTORE_DATABASE_ID기대값을 모두(default)로 검증함FUNCTION_API_BASE_URL이 해당PROJECT_ID의 공통api를 가리키는지 검증함APP_ENVIRONMENT, Firebase 식별자, database ID와 Functions URL을 하나의 환경별 기대값 묶음으로 전달함이미 완료된 범위
Appscheme의Staging/Releaseconfiguration 빌드GoogleService-Info.plist설치APP_ENVIRONMENT=staging/prod빌드 설정 주입제외 범위
apiURL 결정Project.swift와 Fastlane의 환경별 실제 기대값 전환staging 기대값은 #745에서 연결하고 prod 기대값은 #746과 opficdev/DevLog_Firebase#53의 전환 과정에서 연결한다.
검증
ruby -c fastlane/FastfileAPP_ENVIRONMENT누락 또는 불일치 검증 실패PROJECT_ID누락 또는 불일치 검증 실패GOOGLE_APP_ID누락 또는 불일치 검증 실패PROJECT_ID에서 같은FIRESTORE_DATABASE_ID=(default)를 사용하는 두 환경의 검증 성공staging또는prodnamed database ID가 남으면 검증 실패완료 조건
의존 관계