Google Cloud Build中secretEnv无法读取Secret Manager环境变量
问题原因与解决方法
核心问题是:你的Test步骤通过docker run启动了一个新容器,Cloud Build注入到步骤环境的DJANGO_SECRET不会自动传递到这个新容器内部,而且你的Test步骤配置还存在语法错误。
修复步骤:
修正Test步骤的语法错误
你当前的Test步骤中,secretEnv配置后多了一行- GCP_INFOS,这会导致YAML解析失败,先删掉这一行。在
docker run中显式传递环境变量
需要在docker run命令里加上-e DJANGO_SECRET=$DJANGO_SECRET参数,把Cloud Build步骤环境中的DJANGO_SECRET传递到运行的测试容器内。
修正后的Test步骤配置如下:
- name: gcr.io/cloud-builders/docker args: - run - '--rm' - '-e' - 'DJANGO_SECRET=$DJANGO_SECRET' - $_AR_HOSTNAME/$PROJECT_ID/cloud-run-source-deploy/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA - bash - '-c' - | export DEBUG=true echo env python manage.py test secretEnv: ['DJANGO_SECRET'] id: Test
补充说明:
你添加的测试步骤能拿到密钥,是因为那个步骤直接在Cloud Build提供的slim容器中执行,secretEnv会直接注入到该容器的环境变量里;而Test步骤是启动了一个你自己构建的镜像容器,两个容器的环境是完全隔离的,必须通过-e参数手动传递需要的环境变量。
内容的提问来源于stack exchange,提问作者nope_that_does_not_work
相关产品推荐
相关产品推荐

