gpt4 book ai didi

google-app-engine - 如何在部署阶段在 gitlab ci 中添加 .env 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:18 27 4
gpt4 key购买 nike

所以我在我的 repo 中有一个正在处理的 react/typescript 应用程序,在我的 repo 中有一个我忽略的 .env 文件,这样我的 secret 就不会暴露,还有一个 .env-example要配置的重要环境变量文件。我的问题是,由于我没有将 .env 文件推送到我的存储库,所以当我通过 google app engine 部署我的应用程序时(这是在我的 gitlab- ci.yml 文件),这些环境变量不会出现在生产环境中,我需要它们让我的应用程序正常工作,因为我在我的 webpack.config.js 文件中做了类似的事情。

const dotenv = require('dotenv').config({ path: __dirname + '/.env' });

然后

new webpack.DefinePlugin({
'process.env': dotenv.parsed
})

这是我的 .gitlab-ci 文件以供引用,以防这里有人想看。

cache:
paths:
- node_modules/

stages:
- build
- test
- deploy

Build_Site:
image: node:8-alpine
stage: build
script:
- npm install --progress=false
- npm run-script build
artifacts:
expire_in: 1 week
paths:
- build

Run_Tests:
image: node:8-alpine
stage: test
script:
- npm install --progress=false
- npm run-script test

Deploy_Production:
image: google/cloud-sdk:latest
stage: deploy
environment: Production
only:
- master
script:
- echo $DEPLOY_KEY_FILE_PRODUCTION > /tmp/$CI_PIPELINE_ID.json
- gcloud auth activate-service-account --key-file /tmp/$CI_PIPELINE_ID.json
- gcloud config set project $PROJECT_ID_PRODUCTION
- gcloud info
- gcloud --quiet app deploy
after_script:
- rm /tmp/$CI_PIPELINE_ID.json

此外,请随时批评我的 gitlab-ci.yml 文件,以便我改进它。

最佳答案

我不知道你是否还需要这个,但这就是我实现的方式,你想要的。

  1. 在您的 gitlab 存储库配置中创建您的环境变量

  2. 创建setup_env.sh:

#!/bin/bash

echo API_URL=$API_URL >> .env
echo NODE_ENV=$NODE_ENV >> .env
  1. 修改你的.gitlab-ci.yml。将下方更新到您的 before_script: 部分
  - chmod +x ./setup_env.sh
- ./setup_env.sh
  1. webpack.config.js 中使用 https://www.npmjs.com/package/dotenv
require('dotenv').config();

这会传递 webpack.config.js 文件中可用的 .env 变量。

将其添加到您的 plugins 数组(添加您需要的那些变量):

    new webpack.DefinePlugin({
'process.env.API_URL': JSON.stringify(process.env.API_URL),
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
...
})

现在您的部署应该使用您在 gitlab 设置中指定的环境变量。

关于google-app-engine - 如何在部署阶段在 gitlab ci 中添加 .env 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52540316/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com