Github Actions备份Firestore遇版本及认证问题求助
Firestore备份Github Actions脚本问题排查与修复
问题概述
使用Github Actions定时备份GCP Firestore时,先后遇到两个错误:
- 初始脚本使用
google-github-actions/setup-gcloud@master,报错Unable to resolve action 'google-github-actions/setup-gcloud@master', unable to find version 'master' - 将分支改为
main或v1后,执行gcloud firestore export时出现认证错误:
ERROR: (gcloud.firestore.export) You do not currently have an active account selected.
错误原因分析
- 分支名变更:google-github-actions/setup-gcloud仓库的默认分支已从
master改为main,同时官方推荐使用版本标签(如v2)而非分支名,避免分支变动导致的兼容性问题。 - 认证未正确生效:虽然配置了
service_account_key和export_default_credentials: true,但部分gcloud命令需要明确激活服务账号才能使用凭证,或服务账号权限不足。
修复步骤
1. 使用正确的Action版本
替换setup-gcloud的引用为官方推荐的稳定版本标签(如v2.1.0),版本标签比分支名更稳定,能避免仓库分支变动带来的问题。
2. 确保服务账号权限
为用于认证的GCP服务账号添加以下权限:
- Cloud Datastore Import Export Editor:用于执行Firestore导出操作
- Storage Object Admin:用于读写备份存储桶
3. 完善认证流程
在setup-gcloud步骤后,添加明确激活服务账号的命令,确保gcloud工具使用指定的凭证。
最终修复后的脚本
name: Backup Firestore on: schedule: - cron: '41 16 * * *' env: PROJECT_ID: polydds-b712c BUCKET: gs://backup_polydts01 jobs: backup: runs-on: ubuntu-latest steps: - name: Set up gcloud CLI uses: google-github-actions/setup-gcloud@v2.1.0 with: service_account_key: ${{ secrets.GCP_SA_KEY }} project_id: ${{ env.PROJECT_ID }} export_default_credentials: true - name: Activate service account run: gcloud auth activate-service-account --key-file=${{ secrets.GCP_SA_KEY }} - name: Export Firestore data run: gcloud firestore export ${{ env.BUCKET }}
额外说明
- 直接在
setup-gcloud的project_id参数中指定项目ID,无需单独执行gcloud config set project - 确保
GCP_SA_KEY这个Github Secret已正确配置,内容为服务账号的JSON密钥文件完整内容
内容的提问来源于stack exchange,提问作者zEn feeLo
相关产品推荐
相关产品推荐

