我知道我必须在这里做一些愚蠢的事情,但我正在尝试将环境变量传递给/bin/sh -c
在 Cloud Build 中运行的命令。
我的 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 中保留现有的环境变量?