Firestore · Storage 보안 규칙 · 인덱스 · 보안 규칙 테스트 · 개발 서버 구성 스크립트
This commit is contained in:
Executable
+73
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
# FANUZU Firebase 프로젝트 개설 — 별첨 3 B-1 「저희 계정으로 먼저 개설」.
|
||||
#
|
||||
# 사전 조건: `firebase login` 을 한 번 해 두어야 합니다(브라우저가 열립니다).
|
||||
#
|
||||
# cd firebase && npx firebase login
|
||||
# ./setup-project.sh
|
||||
#
|
||||
# 하는 일
|
||||
# 1. 프로젝트 개설 (이미 있으면 건너뜁니다)
|
||||
# 2. Android · iOS 앱 등록
|
||||
# 3. 설정 파일 두 개를 제자리에 내려받기
|
||||
# 4. Firestore 규칙·인덱스 배포
|
||||
#
|
||||
# **Cloud Functions 배포는 하지 않습니다.** Blaze 요금제 전환이 필요하고(D-10),
|
||||
# 그건 결제 수단이 걸린 결정이라 발주사 회신 대상입니다.
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
export PATH="$PWD/node_modules/.bin:$PATH"
|
||||
|
||||
PROJECT_ID="${FANUZU_PROJECT_ID:-fanuzu-dev-b020d}"
|
||||
ANDROID_ID="${FANUZU_ANDROID_ID:-kr.co.fanuzu.app}"
|
||||
IOS_ID="${FANUZU_IOS_ID:-kr.co.fanuzu.app}"
|
||||
|
||||
if ! firebase login:list 2>&1 | grep -q '@'; then
|
||||
echo "먼저 로그인하십시오: npx firebase login" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "▸ 프로젝트 $PROJECT_ID"
|
||||
firebase projects:list --json 2>/dev/null | grep -q "\"$PROJECT_ID\"" \
|
||||
|| firebase projects:create "$PROJECT_ID" --display-name "FANUZU Dev"
|
||||
|
||||
echo "▸ Android 앱 $ANDROID_ID"
|
||||
firebase apps:list ANDROID --project "$PROJECT_ID" --json 2>/dev/null | grep -q "\"packageName\": *\"$ANDROID_ID\"" \
|
||||
|| firebase apps:create ANDROID "FANUZU Android" \
|
||||
--package-name "$ANDROID_ID" --project "$PROJECT_ID"
|
||||
|
||||
echo "▸ iOS 앱 $IOS_ID"
|
||||
firebase apps:list IOS --project "$PROJECT_ID" --json 2>/dev/null | grep -q "\"bundleId\": *\"$IOS_ID\"" \
|
||||
|| firebase apps:create IOS "FANUZU iOS" \
|
||||
--bundle-id "$IOS_ID" --project "$PROJECT_ID"
|
||||
|
||||
echo "▸ 설정 파일 내려받기"
|
||||
# 앱이 둘 이상(레거시 kr.co.sweech.fancake 잔존)이라 첫 행이 아니라 패키지명으로 고른다.
|
||||
ANDROID_APP=$(firebase apps:list ANDROID --project "$PROJECT_ID" --json 2>/dev/null \
|
||||
| python3 -c "import json,sys;print(next(a['appId'] for a in json.load(sys.stdin)['result'] if a.get('packageName')=='$ANDROID_ID'))")
|
||||
IOS_APP=$(firebase apps:list IOS --project "$PROJECT_ID" --json 2>/dev/null \
|
||||
| python3 -c "import json,sys;print(next(a['appId'] for a in json.load(sys.stdin)['result'] if a.get('bundleId')=='$IOS_ID'))")
|
||||
|
||||
firebase apps:sdkconfig ANDROID "$ANDROID_APP" --project "$PROJECT_ID" \
|
||||
--out ../android/app/google-services.json
|
||||
firebase apps:sdkconfig IOS "$IOS_APP" --project "$PROJECT_ID" \
|
||||
--out ../ios/Runner/GoogleService-Info.plist
|
||||
|
||||
echo "▸ Firestore 규칙·인덱스 배포"
|
||||
firebase deploy --only firestore --project "$PROJECT_ID"
|
||||
|
||||
cat <<'DONE'
|
||||
|
||||
끝났습니다. 남은 것 둘.
|
||||
|
||||
1. Firebase 콘솔에서 Authentication → Sign-in method →
|
||||
「이메일/비밀번호」와 「Google」을 켜 주십시오. CLI 로는 켤 수 없습니다.
|
||||
Google 을 켜야 google-services.json 에 oauth_client 가 채워집니다.
|
||||
2. Android SHA-1 지문 등록도 CLI 에 명령이 없습니다. 콘솔의
|
||||
프로젝트 설정 → 내 앱 → Android 앱 → 「디지털 지문 추가」로 넣으십시오.
|
||||
절차와 현재 등록값은 BUILD.md 「Firebase 앱 등록」에 있습니다.
|
||||
3. Cloud Functions 배포는 Blaze 요금제 전환(D-10) 뒤에 합니다.
|
||||
|
||||
설정 파일 두 개는 .gitignore 에 걸려 있어 저장소에 올라가지 않습니다.
|
||||
DONE
|
||||
Reference in New Issue
Block a user