我试图在GCP云构建中创建.env
。cloudbuild.yaml
文件
steps:
- name: 'python:3.8'
entrypoint: python3
args: ['-m', 'pip', 'install', '-t', '.', '-r', 'requirements.txt']
- name: 'python:3.8'
entrypoint: python3
args: ['touch', '.env']
env:
- 'DATABASE_HOST=$$DB_HOST'
- 'DATABASE_USER=$$DB_USER'
- 'DATABASE_PASSWORD=$$DB_PASS'
- 'DATABASE_NAME=$$DB_NAME'
- 'FIREBASE_CREDENTIALS=$$FIRE_CRED'
- name: 'python:3.8'
entrypoint: python3
args: ['./manage.py', 'collectstatic', '--noinput']
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy"]
timeout: "1600s"
我已经尝试了几种方法来做到这一点,但还没有解决。在GCP触发器中创建了我在env中使用的替换变量。
问题是
- name: 'python:3.8'
entrypoint: python3
args: ['touch', '.env']
env:
- 'DATABASE_HOST=$$DB_HOST'
- 'DATABASE_USER=$$DB_USER'
- 'DATABASE_PASSWORD=$$DB_PASS'
- 'DATABASE_NAME=$$DB_NAME'
- 'FIREBASE_CREDENTIALS=$$FIRE_CRED'
这部分代码。
提前谢谢你。
我使用args: ['./create-env.py']
代替args: ['touch', '.env']
,并将环境文件写入.env
好的,让我们从正确的基础开始。在Cloud Build中,每个步骤运行一个容器。这个运行时基于一个映像(name
)和几个参数(entrypoint
,args
,env
,…)
env
允许您在运行时环境中定义环境变量,例如
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: "echo"
args: ["$$ENV_VAR"]
env:
- 'ENV_VAR=WORKS'
将显示WORKS
。入口点echo
在参数$$ENV_VAR
中。此环境变量在运行时环境中的值等于WORKS
。
注意双引号$。需要特别说明的是,不搜索替代变量(单个$),而是搜索运行时环境变量
最后一句话:从一个步骤到另一个步骤,运行时被销毁并重新创建。只保留"/workspace
"目录。所有其他文件和env变量都将被销毁。
最后,我不确定你想要实现什么:
- 从您的env vars创建
.env
文件?我不理解你的步骤 的 - 从
.env
文件加载环境变量?如果是这样,它是无用的,因为上下文在每一步之间被卸载。
entrypoint
和args
所以,如果你需要更多的指导,解释你的代码的最终目标,我会相应地更新这个答案。