Logocob

cob firebase

Firebase 프로젝트/앱 생성, flutterfire configure, SHA-1 등록

cob firebase#

Firebase 초기화 3단계를 담당하는 서브커맨드 그룹입니다. 모든 서브커맨드는 --env 옵션(dev|stg|prod|all, 기본 all)으로 대상 환경을 지정합니다.

서브커맨드설명
createFirebase 프로젝트(dev/stg/prod) + 앱 일괄 생성
init flutterfire configure 실행 및 Firebase App ID를 .envrc에 추출
shaDebug/Release keystore SHA-1을 Firebase Android 앱에 등록

환경(env) 규약#

envGCP suffix.envrc 접두어flavor
dev -dev DEV development
stg -stg STG staging
prod(없음)PRODproduction

cob firebase create#

cob firebase create --env all

환경별로 Firebase 프로젝트가 없으면 생성하고(GCP 프로젝트만 있으면 Firebase 서비스 추가), 아래 앱들을 일괄 생성합니다. firebase CLI 설치가 필요합니다.

플랫폼식별자
Android메인 / 콘솔Bundle ID / 콘솔 Bundle ID
iOS메인 / 콘솔Bundle ID / 콘솔 Bundle ID
macOS (iOS 플랫폼 재사용)메인 / 콘솔macOS Bundle ID (.mac. 삽입)
Web web, windows, console-web, console-windows, widgetbook-web display name 기반

cob firebase init#

cob firebase init --env all
cob firebase init --env dev --app-dir app/my_app
옵션설명기본값
--env, -e대상 환경all
--app-dir flutterfire configure 실행 위치 app/<project_name>

환경별로 flutterfire configure를 flavor와 함께 실행한 뒤, Firebase App ID를 조회해 .envrc에 upsert합니다. 프로젝트가 없는 환경은 경고 후 건너뜁니다 (create 선행 필요). 기록되는 변수 ({ENV} = DEV|STG|PROD):

.envrc 변수대상 앱
FIREBASE_{ENV}_ANDROID_ID / _ANDROID_CONSOLE_ID Android 메인 / 콘솔
FIREBASE_{ENV}_IOS_ID / _IOS_CONSOLE_IDiOS 메인 / 콘솔
FIREBASE_{ENV}_MACOS_ID / _MACOS_CONSOLE_IDmacOS 메인 / 콘솔
FIREBASE_{ENV}_WEB_ID / _WINDOWS_IDWeb / Windows
FIREBASE_{ENV}_CONSOLE_WEB_ID / _CONSOLE_WINDOWS_ID 콘솔 Web / Windows
FIREBASE_{ENV}_WIDGETBOOK_WEB_IDWidgetbook Web
FIREBASE_{ENV}_CONSOLE_ID / _WIDGETBOOK_ID 레거시 alias (Web ID 복사)

cob firebase sha#

cob firebase sha --env all
옵션설명기본값
--env, -e대상 환경all
--release-keystore Release keystore 경로 android/keystore/release.keystore
--release-aliasRelease keystore alias프로젝트명
--release-storepassRelease keystore 비밀번호(아래 우선순위로 해결)

Debug keystore와 Release keystore에서 SHA-1을 추출해 환경별 Firebase Android 메인 앱에 등록합니다. Release keystore가 없으면 release SHA는 스킵됩니다.

Release 비밀번호 해결 우선순위:

  1. --release-storepass CLI 옵션
  2. .envrcRELEASE_STORE_PASSWORD
  3. 환경변수 RELEASE_STORE_PASSWORD
  4. 인터랙티브 prompt — tty일 때만, COB_CI_MODE=1이면 스킵

네이밍 규약#

.envrcORG_TLD/ORG_NAME/PROJECT_NAME에서 파생됩니다. (예: im / laputa / kobic)

리소스규칙dev 예시prod 예시
GCP/Firebase 프로젝트 ID {org_tld}-{org_name}-{project_name}-{dev,stg} (prod는 suffix 생략) im-laputa-kobic-dev im-laputa-kobic
Bundle ID (메인) {org_tld}.{org_name}.{project_name}[.dev|.stg] im.laputa.kobic.dev im.laputa.kobic
Bundle ID (콘솔) {...}.{project_name}.console[.dev|.stg] im.laputa.kobic.console.dev im.laputa.kobic.console
macOS Bundle ID .mac. 세그먼트 삽입 im.laputa.mac.kobic.dev im.laputa.mac.kobic
Display name TitleCase + env 접두어 Kobic DEV Kobic

관련 명령#