【问题标题】:NodeJS: How to include environment variable from CircleCI into the applicationNodeJS:如何将 CircleCI 中的环境变量包含到应用程序中
【发布时间】:2020-07-19 03:53:32
【问题描述】:

在我的前端应用程序中,我将敏感信息存储在环境中并按如下方式使用它们:

const client_secret = process.env.CLIENT_SECRET;

在本地开发中,我使用dotenv package 传递.env 文件中的值

CLIENT_SECRET=XXXXX

.env 文件未提交。

我在部署过程中使用了 CircleCI,并将 CLIENT_SECRET 值保存在 CircleCI 环境变量中,但是如何传递到应用程序中?

这是我的 CircleCI config.yml:

      - deploy:
          name: Deploy
          command: |
            ENVIRONMENT=${ENVIRONMENT:=test}
            VERSION=`date "+%Y-%m-%dt%H%M"`
            if [ "${ENVIRONMENT}" = "production" ]; then
                APP_FILE=app-prod.yaml
            else
                APP_FILE=app.yaml
            fi
            gcloud app deploy ${APP_FILE} --quiet --version ${VERSION}

我可以在app.yaml

env_variables:
  NODE_ENV: 'production'
  CLIENT_SECRET: XXXXX

但我不想将敏感信息包含到.yaml 文件中并提交它们。有谁知道我可以通过什么方式将环境值传递到应用程序中?

我使用的是谷歌云平台,gcloud app deploycommand 似乎没有包含环境变量的标志。

【问题讨论】:

    标签: node.js google-app-engine deployment environment-variables circleci-2.0


    【解决方案1】:

    阅读它,确实,正如您所提到的,设置环境变量的唯一“官方”方法是通过在app.yaml - this article 中设置它们来提供更多信息。考虑到这一点,我进一步搜索并从社区中找到了这个好问题 - 可访问 here - 其中提供了一些解决方法。

    例如,您提到的关于使用这些值创建第二个文件并在app.yaml 中调用它的方法很好。您可以使用.gitignore 来处理存储库中不存在的文件 - 如果您使用的是一个。另一种选择是使用 Cloud Datastore 来存储信息并在您的应用程序中使用它。这样,Datastore 将确保这些信息安全且可供您的应用程序访问,而不会在您的 App Engine 配置中公开。

    我只是想在此处添加此信息是个好主意,包括文章和问题,以防您需要更多信息! :)

    如果这些信息对您有帮助,请告诉我!

    【讨论】:

    • 感谢您的研究!数据存储似乎是完成此类工作的正确/正确方式,这似乎是 NodeJS 从数据存储中检索实体的方式:stackoverflow.com/questions/55197844/…
    • 太好了!感谢您确认并感谢您提供来自社区的其他链接!
    【解决方案2】:

    使用 bash 脚本手动创建带有环境变量的 .env 文件

    app.yaml.sh

    #!/bin/bash
    echo """
    env: flex
    runtime: nodejs
    resources:
      memory_gb: 4.0
      disk_size_gb: 10
    manual_scaling:
      instances: 1
    env_variables:
      NODE_ENV: 'test'
      CLIENT_SECRET: \"$CLIENT_SECRET\"
    """
    
    

    config.yml

        steps:
          - checkout
          - run:
              name: chmod permissions
              command: chmod -R 755 ./
          - run:
              name: Copy across app.yaml config
              command: ./app.yaml.sh > ./app.yaml
          - deploy:
              name: Deploy
              command: |
                VERSION=`date "+%Y-%m-%dt%H%M"`
                gcloud app deploy app.yaml --quiet --version ${VERSION}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 2018-05-21
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多