Bitbucket流水线中Firebase CLI使用GOOGLE_APPLICATION_CREDENTIALS认证失败求助
解决Bitbucket流水线中Firebase App Distribution服务账号认证失败的问题
核心问题定位
你直接把服务账号JSON内容赋值给GOOGLE_APPLICATION_CREDENTIALS变量是错的——这个环境变量要求的是JSON密钥文件的绝对路径,而非密钥内容本身。Firebase CLI找不到对应文件,就会 fallback 到交互式登录流程,导致报错。
分步解决步骤
- 临时生成密钥文件
在执行分发命令前,先把环境变量里的JSON内容写入临时文件,再把变量指向这个文件:echo "$GOOGLE_APPLICATION_CREDENTIALS" > /tmp/service-account-key.json export GOOGLE_APPLICATION_CREDENTIALS="/tmp/service-account-key.json" - 补全服务账号权限
除了Firebase App Distrib. Admin,还要确保账号拥有Firebase Viewer(或更高)权限,保证能访问目标Firebase项目。 - 显式指定项目ID
避免CLI自动检测项目出错,在分发命令里加上项目ID参数:firebase appdistribution:distribute <你的安装包路径> --project <Firebase项目ID> --testers <测试人员邮箱> - 升级Firebase CLI
旧版本对服务账号认证支持可能有bug,先更到最新稳定版:npm install -g firebase-tools - 强制服务账号认证(可选)
若上述步骤无效,可手动执行认证命令强制使用服务账号:firebase login:ci --token "$(gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS --format='value(access_token)')"
完整流水线示例片段
script: - echo "$GOOGLE_APPLICATION_CREDENTIALS" > /tmp/service-account-key.json - export GOOGLE_APPLICATION_CREDENTIALS="/tmp/service-account-key.json" - npm install -g firebase-tools - firebase appdistribution:distribute app/build/outputs/apk/release/app-release.apk --project my-firebase-project-id --testers testers@example.com
内容的提问来源于stack exchange,提问作者Pahom
相关产品推荐
相关产品推荐

