Firebase 如何在云构建过程中创建环境文件

Firebase 如何在云构建过程中创建环境文件,firebase,environment-variables,google-cloud-build,Firebase,Environment Variables,Google Cloud Build,在谷歌云构建CI过程中,如何将环境变量传递给盖茨比构建任务?使用替换变量,我可以使变量在cloudbuild.json文件中可用,但这些变量需要在构建任务中可用 盖茨比使用一个.env.production文件来保存环境变量,然后使用dotenv包来获取这些变量。在我的gatsby config.js文件的顶部,我设置了环境文件的路径,如下所示: require("dotenv").config({ path: `.env.${process.env.NODE_ENV}`

在谷歌云构建CI过程中,如何将环境变量传递给盖茨比构建任务?使用替换变量,我可以使变量在
cloudbuild.json
文件中可用,但这些变量需要在构建任务中可用

盖茨比使用一个
.env.production
文件来保存环境变量,然后使用
dotenv
包来获取这些变量。在我的
gatsby config.js
文件的顶部,我设置了环境文件的路径,如下所示:

require("dotenv").config({
  path: `.env.${process.env.NODE_ENV}`,
})
在文件的后面,我使用这些变量为firebase配置
gatsby插件firebase
插件。考虑到我需要一个环境文件,我尝试在运行构建步骤之前在
cloudbuild.json
文件中创建一个环境文件

{
  "steps": [
    {
      "name": "ubuntu",
      "args": ["echo", "FIREBASE_API_KEY=$_FIREBASE_API_KEY\\nFIREBASE_AUTH_DOMAIN=$_FIREBASE_AUTH_DOMAIN\\nFIREBASE_DATABASE_URL=$_FIREBASE_DATABASE_URL\\nFIREBASE_PROJECT_ID=$_FIREBASE_PROJECT_ID\\nFIREBASE_STORAGE_BUCKET=$_FIREBASE_STORAGE_BUCKET\\nFIREBASE_MESSAGING_SENDER_ID=$_FIREBASE_MESSAGING_SENDER_ID\\nFIREBASE_APP_ID=$_FIREBASE_APP_ID\\nFIREBASE_MEASUREMENT_ID=$_FIREBASE_MEASUREMENT_ID", ">", ".env.production"]
    },
    ...More steps here...
    {
      "name": "node:14.4.0",
      "entrypoint": "npm",
      "args": ["run", "build"]
    },
    {
      "name": "node:14.4.0",
      "entrypoint": "./node_modules/.bin/firebase",
      "args": ["deploy", "--project", "$PROJECT_ID", "--token", "$_FIREBASE_TOKEN"]
    }
当我进入构建步骤时,
.env.production
文件不存在,我认为这是因为它是在ubuntu容器中创建的。如何创建可由构建步骤读取的环境文件。还是有更好的方法传递变量


谢谢,

您的第一步是错误的,您只是回显命令,而不是执行命令。像这样改变它

{
  "steps": [
    {
      "name": "ubuntu",
      "entrypoint": "bash",
      "args": ["-c", "echo FIREBASE_API_KEY=$_FIREBASE_API_KEY\\nFIREBASE_AUTH_DOMAIN=$_FIREBASE_AUTH_DOMAIN\\nFIREBASE_DATABASE_URL=$_FIREBASE_DATABASE_URL\\nFIREBASE_PROJECT_ID=$_FIREBASE_PROJECT_ID\\nFIREBASE_STORAGE_BUCKET=$_FIREBASE_STORAGE_BUCKET\\nFIREBASE_MESSAGING_SENDER_ID=$_FIREBASE_MESSAGING_SENDER_ID\\nFIREBASE_APP_ID=$_FIREBASE_APP_ID\\nFIREBASE_MEASUREMENT_ID=$_FIREBASE_MEASUREMENT_ID > .env.production"]
    },



你的第一步是错误的,你只是回显命令,而不是执行它。像这样改变它

{
  "steps": [
    {
      "name": "ubuntu",
      "entrypoint": "bash",
      "args": ["-c", "echo FIREBASE_API_KEY=$_FIREBASE_API_KEY\\nFIREBASE_AUTH_DOMAIN=$_FIREBASE_AUTH_DOMAIN\\nFIREBASE_DATABASE_URL=$_FIREBASE_DATABASE_URL\\nFIREBASE_PROJECT_ID=$_FIREBASE_PROJECT_ID\\nFIREBASE_STORAGE_BUCKET=$_FIREBASE_STORAGE_BUCKET\\nFIREBASE_MESSAGING_SENDER_ID=$_FIREBASE_MESSAGING_SENDER_ID\\nFIREBASE_APP_ID=$_FIREBASE_APP_ID\\nFIREBASE_MEASUREMENT_ID=$_FIREBASE_MEASUREMENT_ID > .env.production"]
    },



这有用吗?否则,将
“env”
添加到您的步骤中,这是否有帮助?否则,请在步骤中添加
“env”
,谢谢,这很有帮助。我回显的字符串也不正确,它都写在一行上,所以我把它换成了多个回显命令;每行1个。谢谢,这很有帮助。我回显的字符串也不正确,它都写在一行上,所以我把它换成了多个回显命令;每行1个。