- firebase/
- 如何为给定项目自动创建firebase firestore数据库?
如何为给定项目自动创建firebase firestore数据库?
如何为给定项目自动创建firebase firestore数据库?,firebase,google-cloud-firestore,firebase-cli,Firebase,Google Cloud Firestore,Firebase Cli,出于CI/CD目的,我希望以代码形式生成firebase基础结构(因此,使用web控制台不是一个选项)。
我已经能够使用firebase CLI创建firebase项目:
firebase projects:create --display-name "MyApp DEV" --token ${FIREBASE_TOKEN} myapp-dev
我已经查阅了firebase参考手册,但是我找不到任何语言的命令行工具、API或AdminSDK来创建firestore数据库。
我知道可以使用fir
出于CI/CD目的,我希望以代码形式生成firebase基础结构(因此,使用web控制台不是一个选项)。
我已经能够使用firebase CLI创建firebase项目:
firebase projects:create --display-name "MyApp DEV" --token ${FIREBASE_TOKEN} myapp-dev
我已经查阅了firebase参考手册,但是我找不到任何语言的命令行工具、API或AdminSDK来创建firestore数据库。
我知道可以使用firebase数据库:instances:create
创建实时数据库,但我对该数据库不感兴趣,我想创建一个firestore数据库
我已经快速检查了gcloud
CLI,但也没有发现任何可能性
我错过什么了吗?您是否有任何解决方案/解决方法。在撰写本文时,您可以使用alpha版本的
创建firestore数据库。示例gcloud alpha firestore数据库创建--region=europe west--project
。但在此之前,您必须首先在相应的地区创建/已经创建了一个Google App Engine应用程序,例如欧洲西部。
因此,一个完整的工作示例应该是gcloud app create--region=europe west--project&&gcloud alpha firestore databases create--region=europe west--project
基于响应,我创建了从GITLAB CI部署firebase堆栈的管道
首先,您需要创建空项目来管理GCLOUD上的实体和api部署,将此api添加到此项目:
然后你需要用空规则为“经理项目”创建服务帐户,复制电子邮件地址(类似于服务)-account@manager-project.iam.gserviceaccount.com)
返回组织级别并将此电子邮件添加到IAM策略>添加用户(粘贴您创建的服务帐户电子邮件)。设置project.creator角色。返回project>service account,生成Json格式的新私钥并下载
.gitlab-ci.yml:
# This variables need to be setup in gitlab project CI/CD variables
variables:
GCLOUD_SERVICE_KEY: Content of service-account.json
PROJECT_ID : Name of new project
GCLOUD_ORGANIZATION_ID : Main organization to attach new project
FIREBASE_TOKEN : Result of command : firebase login:ci
image: google/cloud-sdk:297.0.1-alpine
deploy-firestore-project:
stage: deploy
before_script:
- apk add --update nodejs npm
- npm install -g firebase-tools
- gcloud components install alpha
- echo $GCLOUD_SERVICE_KEY > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
script:
- gcloud projects create $PROJECT_ID --organization $GCLOUD_ORGANIZATION_ID
- firebase projects:addfirebase $PROJECT_ID --token $FIREBASE_TOKEN
- gcloud app create --region=europe-west --project $PROJECT_ID
- gcloud alpha firestore databases create --region=europe-west --project $PROJECT_ID --quiet
#需要在gitlab项目CI/CD变量中设置此变量
变量:
GCLOUD_SERVICE_KEY:SERVICE-account.json的内容
项目ID:新项目的名称
GCLOUD\u ORGANIZATION\u ID:附加新项目的主组织
FIREBASE_令牌:命令结果:FIREBASE登录:ci
图片:google/CloudSDK:297.0.1-alpine
部署firestore项目:
阶段:部署
在脚本之前:
-apk添加--更新节点npm
-npm安装-g firebase工具
-gcloud组件安装alpha
-echo$GCLOUD\u SERVICE\u KEY>/tmp/$CI\u PIPELINE\u ID.json
-gcloud auth activate服务帐户--密钥文件/tmp/$CI_PIPELINE_ID.json
脚本:
-gcloud项目创建$PROJECT\u ID--组织$gcloud\u组织\u ID
-firebase项目:addfirebase$PROJECT\u ID——令牌$firebase\u令牌
-gcloud应用程序创建--区域=欧洲西部--项目$project\U ID
-gcloud alpha firestore数据库创建--区域=欧洲西部--项目$project\u ID--安静
注:
如果不运行:firebase projects:addfirebase,我在firebase仪表板中看不到我的新项目,并且我无法使用它
您可以使用相同的过程为组织的所有firestore项目创建服务帐户(取决于您的安全要求)
如果Firebase CLI不能满足您的要求,请向Firebase支持部门提交功能请求,以便他们能够了解对此的兴趣。感谢@DougStevenson的评论。您确认此功能不存在吗?在这种情况下,因为这是一个非常明显的要求,我觉得有很好的理由,我想知道。我不知道堆栈溢出是否是一个可以得到“为什么”产品是这样的答案的地方。如果你想用开放式问题直接向Firebase员工提问,我建议你发帖子到Firebase talk:Basicali,我的问题不是“为什么”,而是“如何”@DougStevenson。无论如何,感谢分享论坛链接:我在2019年6月发现了一个firebase开发人员的帖子,他说程序化firestore创建是不可能的,但可以实现。我想了解这个话题的最新情况。嗨@Jay。请检查代码定义为的基础结构:。目的是为资产创建编写脚本。在这里,我想要一个程序化的方法来创建一个项目,一个服务器帐户,一个firestore on europe数据中心和一个默认的安全规则,等等。这与数据库的内部结构无关。我会尽快尝试,我会让你知道的。谢谢分享。最后一步是为项目设置默认区域。。。Firebase继续显示未定义默认区域。。这可以通过[firebase管理api]()实现,而且这是可行的,但我目前不知道如何在我的CI中使用它。。正在进行的工作