Logocob

cob gcp

GCP 프로젝트/서비스 계정 관리 (Fastlane SA + IAM + JSON 키)

cob gcp#

GCP 프로젝트와 서비스 계정을 관리하는 서브커맨드 그룹입니다. gcloud CLI 설치와 gcloud auth login 선행이 필요합니다.

서브커맨드설명
service-accountFastlane용 GCP 서비스 계정 + IAM role + JSON 키 생성

cob gcp service-account#

cob gcp service-account --env all
cob gcp service-account --env dev --keystore-dir android/keystore
옵션설명기본값
--env, -e 대상 환경 (dev|stg|prod|all) all
--keystore-dirJSON 키 파일 저장 경로android/keystore

환경별 실행 단계#

단계작업비고
1GCP 프로젝트 생성dev 환경은 gcloud 기본 프로젝트로 설정
2 서비스 계정 생성 {project_name}-{env}-fastlane@{PROJECT_ID}.iam.gserviceaccount.com (이미 있으면 스킵)
3API 활성화기본 서비스 4종
4IAM role 바인딩20개 role
5 JSON 키 발급 {keystore-dir}/{flavor}.json ( development.json / staging.json / production.json )

활성화되는 API (4종)#

firebaseappdistribution.googleapis.com
androidpublisher.googleapis.com
testing.googleapis.com
toolresults.googleapis.com

바인딩되는 IAM role (20개)#

분류Role
IAM roles/iam.serviceAccountAdmin, roles/iam.serviceAccountTokenCreator
Service Usage roles/serviceusage.serviceUsageConsumer , roles/serviceusage.apiKeysAdmin , roles/serviceusage.serviceUsageAdmin
Compute/Functions roles/cloudfunctions.developer, roles/run.viewer
Firebase roles/firebasedynamiclinks.admin , roles/firebasemessaging.admin , roles/firebaseperformance.admin , roles/firebasedatabase.admin , roles/firebaseappdistro.admin , roles/firebaseappcheck.admin , roles/firebaseauth.admin , roles/firebasehosting.admin , roles/firebaseabt.admin , roles/firebasecrashlytics.admin
기타 roles/cloudconfig.admin , roles/cloudsql.client , roles/storage.objectAdmin

네이밍 예시#

.envrcORG_TLD=im, ORG_NAME=laputa, PROJECT_NAME=kobic일 때:

환경GCP 프로젝트 ID서비스 계정
dev im-laputa-kobic-dev kobic-dev-fastlane@im-laputa-kobic-dev.iam.gserviceaccount.com
stg im-laputa-kobic-stg kobic-stg-fastlane@im-laputa-kobic-stg.iam.gserviceaccount.com
prod im-laputa-kobic kobic-prod-fastlane@im-laputa-kobic.iam.gserviceaccount.com

프로젝트 ID suffix는 prod에서 생략되지만, 서비스 계정 이름과 키 파일명에는 prod / production이 명시됩니다.

다음 단계#

발급된 키 파일({flavor}.json)은 cob secrets encodeFIREBASE_{ENV}_APP_DISTRIBUTION_CREDENTIALS_BASE64로 인코딩해 .envrc에 기록합니다.