Cloud Build secretEnv无法注入Vite环境变量致Firebase API密钥无效
Firebase Auth无效API密钥问题(仅Cloud Build构建时触发)
问题概述
我部署的Vite/React前端应用持续抛出FirebaseError: Firebase: Error (auth/invalid-api-key)错误,但本地构建预览完全正常,仅在通过Google Cloud Build构建并部署时出现该问题。
我的核心目标:通过Google Secret Manager,将Firebase Web应用配置(apiKey、authDomain等)以VITE_前缀的环境变量形式,安全注入Cloud Build的npm run build构建流程。
项目配置说明
src/lib/firebase.ts:通过读取import.meta.env.VITE_*系列环境变量初始化Firebase实例cloudbuild.yaml:使用availableSecrets块将Secret Manager中存储的密钥(如quicksend-frontend-firebase-api-key)映射为VITE_FIREBASE_API_KEY等环境变量;前端Docker构建步骤遵循GCP文档要求,通过secretEnv: ['VITE_FIREBASE_API_KEY', ...]声明需传入的密钥变量Dockerfile:仅执行npm run build命令,预期Vite会自动从构建环境中读取VITE_*变量并嵌入产物
问题现象
按上述配置完成Cloud Build构建部署后,应用运行时仍触发auth/invalid-api-key错误,说明Firebase配置未在构建阶段被正确嵌入到前端产物中。
已完成的排查步骤
- 本地构建验证:将Firebase配置硬编码到
src/lib/firebase.ts后,执行npm run build && npm run preview,应用完全正常运行 - 密钥值核对:多次对比Secret Manager存储的密钥与Firebase控制台的配置值,二者完全一致
- 权限验证:确认Cloud Build服务账号已拥有
Secret Manager Secret Accessor角色 - API密钥限制排查:临时将GCP凭据中的API密钥的应用/API限制设为“无”,问题未得到解决
- 调试验证:在Docker构建阶段添加
RUN echo $VITE_FIREBASE_API_KEY命令,发现通过secretEnv传入的变量为空;尝试改用Docker--build-arg方式传递变量,容器内仍无法获取到有效值
核心疑问
明明配置完全符合Cloud Build关于secretEnv的官方文档要求,为什么gcr.io/cloud-builders/docker步骤执行npm run build(Vite构建)时,VITE_FIREBASE_*变量为空或不可用?针对Vite在Cloud Build环境中注入构建时环境变量,是否存在特殊配置要求或已知问题?
内容的提问来源于stack exchange,提问作者Vlad Nicolas
相关产品推荐
相关产品推荐

