如何在新 shell 中保留现有环境变量
How to retain existing env variables in a new shell
我知道我一定是在做一些愚蠢的事情,但我正在尝试将环境变量传递给 Cloud Build 中 /bin/sh -c
下的 运行 命令。
我的 Cloud Build 文件如下所示:
- id: db-migrate
name: node:16.13.0
dir: 'packages/backend'
entrypoint: '/bin/sh'
args:
- '-c'
- '(/workspace/cloud_sql_proxy -dir=/workspace -instances=$_DB_CONNECTION=tcp:127.0.0.1:5432 & sleep 2) && yarn db:migrate'
env:
- 'DB_HOST=127.0.0.1'
- 'DB_USER=$_DB_USER'
- 'DB_PASSWORD=$_DB_PASSWORD'
- 'DB_NAME=$_DATABASE'
我的 Cloud Build Trigger 设置了替换,当我查看构建详细信息时,它显示环境变量已设置。
但是命令 yarn db:migrate
就像没有设置环境变量一样。我相信这是因为它们没有从机器传递到命令。
知道我做错了什么吗?
这里的问题是,当我们调用 bin/sh 时,它会创建一个新的 shell,并带有它自己的环境变量。当我通读 SH/Dash 上的手册时,我将把这个问题留在这里:
如何在新 shell 中保留现有环境变量?
好的,我明白了。
我们使用的是 TypeORM,最初使用的是 ormconfig.json 文件。事实证明,这仍然以某种方式在系统上被拾取并且正在覆盖所有环境变量。
发布此回复以帮助其他人以防他们犯同样的错误。
我知道我一定是在做一些愚蠢的事情,但我正在尝试将环境变量传递给 Cloud Build 中 /bin/sh -c
下的 运行 命令。
我的 Cloud Build 文件如下所示:
- id: db-migrate
name: node:16.13.0
dir: 'packages/backend'
entrypoint: '/bin/sh'
args:
- '-c'
- '(/workspace/cloud_sql_proxy -dir=/workspace -instances=$_DB_CONNECTION=tcp:127.0.0.1:5432 & sleep 2) && yarn db:migrate'
env:
- 'DB_HOST=127.0.0.1'
- 'DB_USER=$_DB_USER'
- 'DB_PASSWORD=$_DB_PASSWORD'
- 'DB_NAME=$_DATABASE'
我的 Cloud Build Trigger 设置了替换,当我查看构建详细信息时,它显示环境变量已设置。
但是命令 yarn db:migrate
就像没有设置环境变量一样。我相信这是因为它们没有从机器传递到命令。
知道我做错了什么吗?
这里的问题是,当我们调用 bin/sh 时,它会创建一个新的 shell,并带有它自己的环境变量。当我通读 SH/Dash 上的手册时,我将把这个问题留在这里: 如何在新 shell 中保留现有环境变量?
好的,我明白了。
我们使用的是 TypeORM,最初使用的是 ormconfig.json 文件。事实证明,这仍然以某种方式在系统上被拾取并且正在覆盖所有环境变量。
发布此回复以帮助其他人以防他们犯同样的错误。