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

标签 google-app-engine google-cloud-platform gitlab gitlab-ci

所以我在我的 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/

相关文章:

node.js - Google 云客户端库和用户身份验证

c# - 使用 C# 构建的 Gitlab CI

python - 使用 Jinja2 将值传递给 WTForms 字段

python - 我如何使用GAE听Google表格然后运行一组python代码?

google-app-engine - gae cloud sql事件连接未关闭(保持实例运行)

gitlab - 在 GitLab 上更新 fork 项目

gitlab - 如何在不手动添加的情况下为组中的成员授予项目访问权限?

google-app-engine - 在 GAE 中使用自定义域规范化静态站点的 URL

google-app-engine - 在应用引擎模块之间共享数据

docker - App Engine灵活环境-镜像构建时跳过Dockerfile软件包安装