[英]Using Google Cloud Secret as environment variables in Google Cloud Build
我正在使用 Cloud Build 將我的 Node 應用程序部署到 Google Cloud Run,並且我想在構建過程中運行一些測試。 我的測試需要一些環境變量,所以我一直在遵循本指南來實現這一點。
該指南作出以下說明:
注意:要在環境變量中使用機密,您需要在變量名前加上下划線“_”並使用“(”轉義值。例如:_VARIABLE_NAME=$(cat password.txt) && echo -n \\ )_變量名。
但是,我不太確定如何實現這一點。 我在cloudbuild.yaml
嘗試了以下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
文件一起使用是否更好?
謝謝!
看起來您錯誤地使用了node
圖像提供的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
)。 我認為您不需要在此處添加_
字符前綴,但我尚未對其進行測試以確認這一點。 你可以試試上面的方法,我認為它應該會讓你走得更遠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.