cob firebase#
Firebase 초기화 3단계를 담당하는 서브커맨드 그룹입니다. 모든 서브커맨드는
--env 옵션(dev|stg|prod|all, 기본 all)으로 대상 환경을 지정합니다.
| 서브커맨드 | 설명 |
create | Firebase 프로젝트(dev/stg/prod) + 앱 일괄 생성 |
init |
flutterfire configure 실행 및 Firebase App ID를 .envrc에 추출 |
sha | Debug/Release keystore SHA-1을 Firebase Android 앱에 등록 |
환경(env) 규약#
| env | GCP suffix | .envrc 접두어 | flavor |
dev |
-dev |
DEV |
development |
stg |
-stg |
STG |
staging |
prod | (없음) | PROD | production |
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_ID | iOS 메인 / 콘솔 |
FIREBASE_{ENV}_MACOS_ID / _MACOS_CONSOLE_ID | macOS 메인 / 콘솔 |
FIREBASE_{ENV}_WEB_ID / _WINDOWS_ID | Web / Windows |
FIREBASE_{ENV}_CONSOLE_WEB_ID / _CONSOLE_WINDOWS_ID |
콘솔 Web / Windows |
FIREBASE_{ENV}_WIDGETBOOK_WEB_ID | Widgetbook 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-alias | Release keystore alias | 프로젝트명 |
--release-storepass | Release keystore 비밀번호 | (아래 우선순위로 해결) |
Debug keystore와 Release keystore에서 SHA-1을 추출해 환경별 Firebase Android
메인 앱에 등록합니다. Release keystore가 없으면 release SHA는 스킵됩니다.
Release 비밀번호 해결 우선순위:
--release-storepass CLI 옵션
.envrc의 RELEASE_STORE_PASSWORD
- 환경변수
RELEASE_STORE_PASSWORD
- 인터랙티브 prompt — tty일 때만,
COB_CI_MODE=1이면 스킵
네이밍 규약#
.envrc의 ORG_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 |
관련 명령#