Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将环境变量传递给CircleCI中的node.js进程_Circleci - Fatal编程技术网

将环境变量传递给CircleCI中的node.js进程

将环境变量传递给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

我使用CircleCI上下文(项目设置->环境变量)在CircleCI
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文件。我想我们快到了。(脚本已更新)