如何在 Circle CI 中设置环境变量以在应用程序中用作 process.env.FOO
How to set environment variable in Circle CI to use in application as process.env.FOO
例如我设置了 name: FOO value: 'bar'
.
我已验证键值有效。因为 的作用是:
jobs:
build:
docker:
- image: circleci/node:10.17.0
steps:
- run: |
node something $FOO
但是,以下不起作用:
现在,当我部署并尝试在我的应用程序中使用它时,它 returns 未定义:
console.log(process.env.FOO); // returns undefined
我尝试在 config.yml 文件中的 'environment' 键下设置它:
jobs:
build:
docker:
- image: circleci/node:10.17.0
environment:
- FOO # note, don't use $FOO
steps:
- run: |
node something $FOO
ssh $MACHINE -- 'cd /home/ && docker build -t myApp . docker restart myApp'
但还是没有变化。
我是否应该将变量传递给 ssh 命令中的构建脚本?
有什么想法吗?
根据 Delena 的提示更新
保持 ./circle-ci/config.yml
为:
jobs:
build:
docker:
- image: circleci/node:10.17.0
environment:
FOO: $FOO
然后在 docker-compose 文件中:
myApp:
environment:
- FOO
将在构建为绿色时接受答案
看起来您正在尝试从在 Docker 容器中运行的应用访问环境变量,但您并未在容器中设置环境变量。
如果是这种情况,您可以查看 How to set an environment variable in a running docker container,但看起来您必须停止容器并使用环境变量重新启动它。
你可以这样做:
ssh $MACHINE -- 'cd /home/ && docker build -t myApp && docker stop myApp && docker run -e "FOO=$FOO"'
另请查看 docker run
文档中的 ENV (environment variables) 部分。
例如我设置了 name: FOO value: 'bar'
.
我已验证键值有效。因为 的作用是:
jobs:
build:
docker:
- image: circleci/node:10.17.0
steps:
- run: |
node something $FOO
但是,以下不起作用:
现在,当我部署并尝试在我的应用程序中使用它时,它 returns 未定义:
console.log(process.env.FOO); // returns undefined
我尝试在 config.yml 文件中的 'environment' 键下设置它:
jobs:
build:
docker:
- image: circleci/node:10.17.0
environment:
- FOO # note, don't use $FOO
steps:
- run: |
node something $FOO
ssh $MACHINE -- 'cd /home/ && docker build -t myApp . docker restart myApp'
但还是没有变化。
我是否应该将变量传递给 ssh 命令中的构建脚本?
有什么想法吗?
根据 Delena 的提示更新
保持 ./circle-ci/config.yml
为:
jobs:
build:
docker:
- image: circleci/node:10.17.0
environment:
FOO: $FOO
然后在 docker-compose 文件中:
myApp:
environment:
- FOO
将在构建为绿色时接受答案
看起来您正在尝试从在 Docker 容器中运行的应用访问环境变量,但您并未在容器中设置环境变量。
如果是这种情况,您可以查看 How to set an environment variable in a running docker container,但看起来您必须停止容器并使用环境变量重新启动它。
你可以这样做:
ssh $MACHINE -- 'cd /home/ && docker build -t myApp && docker stop myApp && docker run -e "FOO=$FOO"'
另请查看 docker run
文档中的 ENV (environment variables) 部分。