node.js - NodeJS:如何将 CircleCI 中的环境变量包含到应用程序中
问题描述
在我的前端应用程序中,我将敏感信息存储在环境中并按如下方式使用它们:
const client_secret = process.env.CLIENT_SECRET;
在本地开发中,我使用dotenv 包传入.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
文件中并提交它们。有谁知道我可以将环境值传递给应用程序的任何方式?
我正在使用 Google Cloud Platform,并且
gcloud app deploy
命令似乎没有包含环境变量的标志。
解决方案
.env
使用 bash 脚本手动创建带有环境变量的文件
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}
推荐阅读
- python - Python 使用 itertools 按三个列表分组
- intellij-idea - 找到代码作者(注释/指责)到位
- sails.js - SailsJS - 覆盖默认控制器以添加全局规则或限制
- slack - Slack api 错误 nongranular_bot_token_not_allowed
- java - 服务完成后关闭服务
- ios - ScrollView 中的视图没有正确更新
- android - 错误 - 以下启动画面或图标文件不存在:/res/icons/android/mipmap-hdpi/ic_launcher.png
- drupal - Drupal 站点因模块安装不当而损坏
- python - 使用类方法在 init 上检索或加载数据
- javascript - Oracle APEX 中 apex.server.process 的安全性