You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipeline中使用GOOGLE_APPLICATION_CREDENTIALS部署至Firebase

解决Azure DevOps Pipeline中Firebase部署的服务账号认证问题

核心思路

Firebase已弃用login:ci令牌认证,需改用Google服务账号密钥。由于Azure DevOps仅支持存储字符串型密钥,我们可以将服务账号的JSON密钥内容作为秘密变量存储,在Pipeline运行时动态生成临时JSON文件,再通过环境变量让Firebase CLI识别该密钥。

具体步骤

  1. 存储服务账号密钥到Azure DevOps

    • 打开已生成的Google服务账号JSON密钥文件,复制全部内容。
    • 登录Azure DevOps进入你的项目:
      • 若要全局复用,前往库 > 变量组,创建新变量组并添加秘密变量(命名如FIREBASE_SERVICE_ACCOUNT_KEY),将复制的JSON内容粘贴到变量值中。
      • 若仅当前管道使用,直接在管道编辑页的变量选项卡中添加秘密变量。
  2. 在YAML Pipeline中处理密钥并部署
    根据你使用的代理虚拟机系统(Linux/Windows),选择对应的脚本逻辑,动态生成临时密钥文件并配置环境变量:

Linux代理(ubuntu-latest)示例YAML

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '18.x'
  displayName: '安装Node.js'

- script: |
    npm install -g firebase-tools
  displayName: '安装Firebase CLI'

- script: |
    # 创建临时目录存放密钥文件
    mkdir -p .firebase
    # 将秘密变量中的JSON字符串写入临时文件
    echo "$(FIREBASE_SERVICE_ACCOUNT_KEY)" > .firebase/service-account-key.json
    # 设置环境变量指向密钥文件
    export GOOGLE_APPLICATION_CREDENTIALS=$(pwd)/.firebase/service-account-key.json
    # 执行Firebase部署(可指定项目ID)
    firebase deploy --project your-firebase-project-id
    # 清理临时文件
    rm -rf .firebase
  displayName: '部署至Firebase'
  env:
    # 引用Azure DevOps中的秘密变量
    FIREBASE_SERVICE_ACCOUNT_KEY: $(FIREBASE_SERVICE_ACCOUNT_KEY)

Windows代理(windows-latest)示例YAML

trigger:
- master

pool:
  vmImage: 'windows-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '18.x'
  displayName: '安装Node.js'

- script: |
    npm install -g firebase-tools
  displayName: '安装Firebase CLI'

- powershell: |
    # 创建临时目录存放密钥文件
    New-Item -ItemType Directory -Force -Path .firebase
    # 将秘密变量中的JSON字符串写入临时文件
    $env:FIREBASE_SERVICE_ACCOUNT_KEY | Out-File -FilePath .firebase/service-account-key.json -Encoding utf8
    # 设置环境变量指向密钥文件
    $env:GOOGLE_APPLICATION_CREDENTIALS = Join-Path (Get-Location) ".firebase/service-account-key.json"
    # 执行Firebase部署(可指定项目ID)
    firebase deploy --project your-firebase-project-id
    # 清理临时文件
    Remove-Item -Path .firebase -Recurse -Force
  displayName: '部署至Firebase'
  env:
    # 引用Azure DevOps中的秘密变量
    FIREBASE_SERVICE_ACCOUNT_KEY: $(FIREBASE_SERVICE_ACCOUNT_KEY)

关键注意事项

  • 确保变量设置为秘密变量,Azure DevOps会自动加密存储,且不会在运行日志中明文显示。
  • 部署完成后务必清理临时密钥文件,避免敏感信息残留。
  • 若你的Firebase项目需指定部署范围,可在firebase deploy命令后添加--only参数(如--only hosting)。

内容的提问来源于stack exchange,提问作者J4N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:15:36