Azure Pipelines中通过GOOGLE_APPLICATION_CREDENTIALS认证Firebase失败
解决方案
1. 修复服务账户JSON文件生成问题
用echo输出密钥时,换行符和特殊字符会被破坏,导致JSON格式无效。改用printf写入文件:
printf "%s" "$(firebase-credentials)" > $(Pipeline.Workspace)/service-account.json
或者使用Azure官方的文件写入任务更可靠:
- task: FileTransform@2 displayName: Write service account JSON inputs: folderPath: $(Pipeline.Workspace) fileType: json targetFiles: service-account.json content: $(firebase-credentials)
2. 显式完成Firebase服务账户认证
Firebase CLI不会自动读取GOOGLE_APPLICATION_CREDENTIALS完成认证,需要显式执行登录命令生成token:
# 生成认证token FIREBASE_TOKEN=$(firebase login:ci --service-account $(Pipeline.Workspace)/service-account.json) # 使用token执行后续命令 firebase projects:list --token $FIREBASE_TOKEN firebase appdistribution:distribute "<<REDACTED-PATH>>" --app "<<REDACTED-APP-ID>>" --groups "<<REDACTED-GROUP-NAME>>" --release-notes "<<REDACTED-RELEASE-NOTES>>" --token $FIREBASE_TOKEN
3. 验证服务账户权限
确保服务账户在Google Cloud控制台的IAM页面拥有以下权限:
- Firebase App Distribution Admin
- Firebase Viewer/Editor(根据部署需求选择)
4. 确保环境变量全局生效
如果后续步骤需要使用GOOGLE_APPLICATION_CREDENTIALS,用Azure Pipeline的变量设置命令替代export:
echo "##vso[task.setvariable variable=GOOGLE_APPLICATION_CREDENTIALS]$(Pipeline.Workspace)/service-account.json"
内容的提问来源于stack exchange,提问作者Scott Richards
相关产品推荐
相关产品推荐

