【问题标题】:How can I create an environment file during a cloud build process如何在云构建过程中创建环境文件
【发布时间】:2020-11-03 00:26:53
【问题描述】:

如何在 Google Cloud Build CI 流程中将环境变量传递给 Gatsby 构建任务?使用替换变量,我可以使变量在 cloudbuild.json 文件中可用,但这些变量需要在构建任务中可用。

Gatsby 使用.env.production 文件来保存环境变量,然后可以使用dotenv 包获取这些环境变量。在我的gatsby-config.js 文件的顶部,我将环境文件的路径设置如下:

require("dotenv").config({
  path: `.env.${process.env.NODE_ENV}`,
})

在文件的下方,我使用这些变量为 Firebase 配置 gatsby-plugin-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 容器中创建的。如何创建构建步骤可以读取的环境文件。或者有没有更好的方法来传递变量?

谢谢,

【问题讨论】:

标签: firebase environment-variables google-cloud-build


【解决方案1】:

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

{
  "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"]
    },


【讨论】:

  • 谢谢,有帮助。我回显的字符串也不正确,它们都写在一行上,所以我把它换成了多个回显命令;每行 1 个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多