部署到特定的子域。使用命令行 firebase 托管或指定要使用的 json
Deploy to a particular subdomain. using command line firebase hosting or specifying a json to use
我在带有一些子域的 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 命令中进行规定,如果 google 允许的话,我的想法是这样的:
- 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 环境:
-firebase.json :
{
"hosting": [
{
"site": "mydomain-subdomain-prod",
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
{
"site": "mydomain-subdomain-dev",
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"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
看起来site和target是一回事,有firebase的会员能解释一下这两者有什么区别吗?
我在带有一些子域的 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 命令中进行规定,如果 google 允许的话,我的想法是这样的:
- 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 环境:
-firebase.json :
{
"hosting": [
{
"site": "mydomain-subdomain-prod",
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
},
{
"site": "mydomain-subdomain-dev",
"public": "dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{
"source": "**",
"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
看起来site和target是一回事,有firebase的会员能解释一下这两者有什么区别吗?