将环境变量传递给CircleCI中的node.js进程
我使用CircleCI上下文(项目设置->环境变量)在CircleCI将环境变量传递给CircleCI中的node.js进程,circleci,Circleci,我使用CircleCI上下文(项目设置->环境变量)在CircleCIconfig.yml中获取环境变量 我无法将它们传递到node.js进程process.env.SERVER\u API。它们是未定义的 我试图让他们在config.yml中传递它: docker: - image: circleci/node:14.9.0 environment: SERVER_API: $SERVER_API 它不起作用,我不知道如何通过它们 config
config.yml
中获取环境变量
我无法将它们传递到node.js进程process.env.SERVER\u API
。它们是未定义的
我试图让他们在config.yml
中传递它:
docker:
- image: circleci/node:14.9.0
environment:
SERVER_API: $SERVER_API
它不起作用,我不知道如何通过它们
config.yml
version: 2.1
executors:
node-executor:
docker:
- image: circleci/node:14.9.0
environment:
SERVER_API: $SERVER_API
commands:
gatsby-build:
steps:
- checkout
- restore_cache:
keys:
- yarn-cache-{{ checksum "yarn.lock" }}
- run:
name: Install Dependencies
command: yarn install
- save_cache:
key: yarn-cache-{{ checksum "yarn.lock" }}
paths:
- ./node_modules
- run:
name: Gatsby Build
command: yarn build
workflows:
version: 2
build-deploy:
jobs:
- release:
filters:
branches:
only:
- master
jobs:
release:
executor: node-executor
working_directory: ~/tau-guide-website
steps:
- gatsby-build
- run:
name: Deploy
command: |
#upload all the code to machine
scp -r -o StrictHostKeyChecking=no ~/tau-guide-website/public $PROJECT_FOLDER
除非显式执行,否则Circle CI构建期间存在的环境变量不会传递给部署的代码。 对于我的项目,我正在为管道使用可用的Circle CI env变量,但将它们导出到.env文件以将它们包含在最终包中。对于当前代码,我将: 从图像中删除此项:
environment:SERVER\u API:$SERVER\u API
将其他代码添加到构建步骤:
- run:
name: Gatsby Build
command: |
touch .env.production
echo "SERVER_API=$SERVER_API" > .env.production
yarn build
如果没有使用Env,请考虑阅读。你需要把dotNv引入一个依赖关系中,并在你的文件中声明如下:
require('dotenv').config({
path: `.env.${process.env.NODE_ENV}`,
})
对于我们的用例.env也包含DB凭据和机密,但它位于
.gitignore
中,并在构建过程中生成。如果我添加echo“SERVER\u IP=$SERVER\u IP”>>$PROJECT\u FOLDER/.env
,我收到错误消息/bin/bash:第1行:*********************************************************************************************************************/.env:没有这样的文件或目录
@Matt脚本中有一个小错误,我已经更新了。对于变量的首次导出,我们需要使用覆盖运算符“>”而不是附加运算符“>>”。我试图使用
运算符,但仍然遇到相同的错误。@Matt问题与此相关:。我已添加了一个脚本来解决此问题。@Matt,.env.production文件应在我们构建项目之前可用!因此,您需要在Gatsby构建步骤中生成.env.production文件。我想我们快到了。(脚本已更新)