我知道我必須在這里做一些愚蠢的事情,但我正在嘗試將環境變數傳遞給/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 中保留現有的環境變數?
uj5u.com熱心網友回復:
好吧,我想通了。
我們使用的是 TypeORM,最初使用的是 ormconfig.json 檔案。事實證明,這仍然以某種方式在系統上被拾取并覆寫所有環境變數。
發布此回復以幫助其他人,以防他們犯同樣的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411862.html
標籤:
