如何在Circle CI中设置环境变量以在应用程序中用作process.env.FOO



例如,我设置了name: FOO value: 'bar'

我已经验证了关键值的有效性。因为所做的是:

jobs:
build:
docker: 
- image: circleci/node:10.17.0
steps:
- run: |
node something $FOO

但是,以下不起作用

现在,当我在应用程序中部署并尝试使用它时,它会返回未定义的:

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组合文件中:

myApp:
environment:
- FOO

当构建为绿色时将接受答案

看起来您正试图从Docker容器中运行的应用程序访问环境变量,但您没有在容器中设置环境变量。

如果是这种情况,您可以查看如何在正在运行的docker容器中设置环境变量,但看起来您必须停止容器,然后使用环境变量重新启动它。

你可以做一些类似的事情:

ssh $MACHINE -- 'cd /home/ && docker build -t myApp && docker stop myApp && docker run -e "FOO=$FOO"'

还可以查看docker run文档中的ENV(环境变量(部分。

最新更新