Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为给定项目自动创建firebase firestore数据库?_Firebase_Google Cloud Firestore_Firebase Cli - Fatal编程技术网

如何为给定项目自动创建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中使用它。。正在进行的工作