出于 CI/CD 目的,我想将我的 Firebase 基础设施生成为代码(因此无法使用 Web 控制台(。
我已经能够使用 Firebase CLI 创建 firebase 项目:
firebase projects:create --display-name "MyApp DEV" --token ${FIREBASE_TOKEN} myapp-dev
我已经查看了 Firebase 参考手册,但找不到任何语言的命令行工具、API 或管理员 SDK 来创建 firestore 数据库。 我知道可以用firebase database:instances:create <instanceName>
创建一个实时数据库,但是,同样,我对这个数据库不感兴趣,我想创建一个Firestore数据库。
我已经快速检查了 CLIgcloud
但也没有发现任何可能性。
我错过了什么吗?您有任何解决方案/解决方法吗?
在撰写本文时,您可以使用 gcloud for firestore 的 alpha 版本
来创建 firestore 数据库。示例gcloud alpha firestore databases create --region=europe-west --project <PROJECT_ID>
.但在此之前,您必须首先在相应区域中创建/已创建Google App Engine应用程序,例如示例europe-west
。 所以应该gcloud app create --region=europe-west --project <PROJECT_ID> && gcloud alpha firestore databases create --region=europe-west --project <PROJECT_ID>
一个完整的工作示例
基于MBA_Phoenix响应,我创建了管道来从 GITLAB CI 部署 Firebase 堆栈。
首先需要创建空项目来管理GCLOUD上的实体和api部署,将此API添加到此项目中:
- https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com
- https://console.developers.google.com/apis/api/appengine.googleapis.com/
然后,您需要为具有空规则的"经理项目"创建服务帐户,复制电子邮件地址(类似于 service-account@manager-project.iam.gserviceaccount.com(。
返回到组织级别,将此电子邮件添加到 IAM 策略>添加用户(粘贴您创建的服务账户电子邮件(。设置项目创建者角色。返回到项目>服务帐户,以 Json 格式生成新的私钥并下载它。
.gitlab-ci.yml :
# 此变量需要在 gitlab 项目 CI/CD 变量中设置 变量: GCLOUD_SERVICE_KEY:service-account.json 的内容 PROJECT_ID : 新项目名称 GCLOUD_ORGANIZATION_ID : 附加新项目的主要组织 FIREBASE_TOKEN:命令的结果:火力基地登录:ci 图片:谷歌/云-SDK:297.0.1-阿尔卑斯山 部署-消防-项目: 阶段:部署 before_script: - APK添加 --更新节点JS npm - npm install -g firebase-tools - GCLOUD 组件安装 alpha - echo $GCLOUD_SERVICE_KEY>/tmp/$CI_PIPELINE_ID.json - gcloud auth activate-service-account --key-file/tmp/$CI_PIPELINE_ID.json 脚本: - gcloud 项目创建 $PROJECT_ID --组织 $GCLOUD_组织_ID - Firebase 项目:addfirebase $PROJECT_ID --token $FIREBASE_TOKEN - gcloud 应用程序创建 --区域=欧洲西部 --项目 $PROJECT_ID - gCloud Alpha Firestore 数据库创建 --区域=欧洲西部 --项目 $PROJECT_ID --quiet
注意:
- 如果您不运行:firebase projects:addfirebase 我在 Firebase 仪表板中看不到我的新项目,也无法使用它。
- 您可以使用相同的过程为组织的所有 Firestore 项目创建服务帐户(取决于您的安全要求(。