如何在云构建过程中创建环境文件
How can I create an environment file during a cloud build process
如何在 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容器中创建的。如何创建可由构建步骤读取的环境文件。还是有更好的传递变量的方法?
谢谢,
你的第一步是错误的,你只是回显命令,而不是执行命令。改成这样
{
"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"]
},
如何在 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容器中创建的。如何创建可由构建步骤读取的环境文件。还是有更好的传递变量的方法?
谢谢,
你的第一步是错误的,你只是回显命令,而不是执行命令。改成这样
{
"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"]
},