如何解决部署到特定的子域使用命令行 firebase 托管或指定要使用的 json
我在带有一些子域的 Firebase 托管上有一个开发和生产环境。
我在 gitlab 上的 CI/CD 可以在 dev 和 prod 上部署,具体取决于合并的分支(dev 用于 dev env 或 master 用于 prod)
我在 gitlab CI 中使用它:
script:
- npm install -g firebase-tools
- yarn
- yarn build-dev
- firebase use env-dev --token $FIREBASE_TOKEN
- firebase deploy -m "Pipe $CI_PIPELINE_ID Build $CI_BUILD_ID" --only hosting --non-interactive --token $FIREBASE_TOKEN
对于 prod,我只需要更改为使用 env-prod,它将毫无问题地部署到主域
现在对于子域,它们需要在 firebase.json 中使用:
{
"hosting": {
"site": "myproject-dashboard-prod",// can be also myproject-dashboard-dev for dev env
"public": "dist","ignore": ["firebase.json","**/.*","**/node_modules/**"],"rewrites": [
{
"source": "**","destination": "/index.html"
}
]
}
}
我的问题是,google 网站上的 hsoting API 参考在哪里?我很难找到它 因为我希望有一种方法可以直接规定到 firebase 命令中,如果谷歌允许的话,我的想法是这样的:
- firebase deploy -m "Pipe $CI_PIPELINE_ID Build $CI_BUILD_ID" --only hosting --non-interactive --token $FIREBASE_TOKEN --site myproject-dashboard-dev
这将解决我从自动化 CI/CD 部署的问题,否则我不知道如何在 json 对象中使站点动态(module.export 在这种情况下不起作用,因为它不是导入而是读取直接通过 firebase 命令)或者也许有一种方法可以确定 firebase 命令应该使用哪个 json,我可以制作其中的 2 个?
解决方法
经过一番挖掘,发现您实际上可以在 firebase.json 中使用数组,并确定应在命令行中使用哪些设置,因此您可以像这样在子域上部署到 2 env:
-firebase.json :
{
"hosting": [
{
"site": "mydomain-subdomain-prod","public": "dist","ignore": ["firebase.json","**/.*","**/node_modules/**"],"rewrites": [
{
"source": "**","destination": "/index.html"
}
]
},{
"site": "mydomain-subdomain-dev","destination": "/index.html"
}
]
}
]
}
-.gitlab-ci.yml
dev:
stage: deploy
only:
- dev
script:
- npm install -g firebase-tools
- yarn
- yarn build-dev
- firebase use mydomain-dev --token $FIREBASE_TOKEN
- firebase deploy -m "Pipe $CI_PIPELINE_ID Build $CI_BUILD_ID" --only hosting:mydomain-subdomain-dev --non-interactive --token $FIREBASE_TOKEN
prod:
stage: deploy
only:
- master
script:
- npm install -g firebase-tools
- yarn
- yarn build-prod
- firebase use mydomain-prod --token $FIREBASE_TOKEN
- firebase deploy -m "Pipe $CI_PIPELINE_ID Build $CI_BUILD_ID" --only hosting:mydomain-subdomain-prod --non-interactive --token $FIREBASE_TOKEN
这是关联的 firebase documentation
看起来站点和目标是一回事,如果firebase成员可以解释两者之间是否存在差异?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。