我正在使用Cloud Build将Node应用程序部署到Google Cloud Run,并且希望在构建过程中运行一些测试。我的测试需要一些环境变量,因此我一直遵循本指南来实现。
该指南有以下注意事项:
注意:要在环境变量中使用密钥,您需要在变量名称前添加下划线“ _”,并使用'('进行转义。例如:_VARIABLE_NAME = $(cat password.txt)&& echo -n \ )_变量名称。
但是,我不太确定如何执行此操作。我已经尝试了以下方法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
)。我认为您不需要在_
此处添加字符前缀,但我尚未对其进行测试以确认这一点。您可以尝试上述方法,我认为它应该会使您更进一步。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句