簡體   English   中英

在 Google Cloud Build 中使用 Google Cloud Secret 作為環境變量

[英]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.txtvar-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_ONEprocess.env._VAR_TWO )。 我認為您不需要在此處添加_字符前綴,但我尚未對其進行測試以確認這一點。 你可以試試上面的方法,我認為它應該會讓你走得更遠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM