如何解决在Google Cloud Build中将Google Cloud Secret用作环境变量
我正在使用Cloud Build将Node应用程序部署到Google Cloud Run,我想在构建过程中运行一些测试。我的测试需要一些环境变量,因此我一直遵循this guide来实现这一目标。
指南提供了以下注意事项:
注意:要在环境变量中使用密钥,您需要添加前缀 带下划线“ _”的变量名称,并使用 '('。例如:_VARIABLE_NAME = $(cat password.txt)&& echo -n \)_ VARIABLE_NAME。
但是,我不太确定如何实现此目标。
我在cloudbuild.yaml
中尝试了以下操作。
- id: Execute tests
name: node
args: ['_VAR_ONE=$(cat var-one.txt)','_VAR_TWO=$(cat var-two.txt)','jest -V']
将返回以下内容:Error: Cannot find module '/workspace/_VAR_ONE=$(cat var-one.txt)'
。
我还尝试了上述注释提到的转义符的几种变体,但它们导致相同的错误。
将秘密作为环境变量纳入我的代码的最佳方法是什么?
另外,如果我需要使用多个环境变量,那么将Cloud KMS与.env
文件一起使用会更好吗?
谢谢!
解决方法
您似乎错误地使用了entrypoint
图像提供的node
。您正在有效地运行以下命令:
node _VAR_ONE=$(cat var-one.txt) _VAR_TWO=$(cat var-two.txt) jest -V
我想谈一会儿,说这种模式在Node中不起作用,您需要先先指定环境变量,再调用node
,例如VAR_ONE=$(cat foo.txt) VAR_TWO=bar node run test
无论如何,我认为您要运行的是:
_VAR_ONE=$(cat var-one.txt) _VAR_TWO=$(cat var-two.txt) jest -V
这就是我们的操作方式-假设您有上一步,在上一步中将机密内容写到文件var-one.txt
和var-two.txt
中,这就是您要执行的操作在node
步骤中使用它,这只是从命令行运行命令时使用环境变量的标准方式:
- id: Execute tests
name: node
entrypoint: '/bin/bash'
args:
'-c','_VAR_ONE=$(cat var-one.txt) _VAR_TWO=$(cat var-two.txt) jest -V'
]
您需要确保在节点环境中使用指定的变量(即process.env._VAR_ONE
或process.env._VAR_TWO
)。我认为您不需要在此处加上_
字符,但我尚未对其进行测试以确认这一点。您可以尝试上面的方法,我认为它应该会使您更进一步。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。