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

GitHub Actions执行DVC pull时GDrive远程认证失败求助

DVC在GitHub Actions中拉取GDrive数据失败的解决方案

问题描述

我尝试了多种GitHub Actions工作流变体,但无法从DVC拉取数据。工作流代码如下:

name: auto-testing
on: [push]
jobs:
  run:
    runs-on: [ubuntu-latest]
    steps:
      - uses: actions/checkout@v2
      - uses: iterative/setup-dvc@v1
      - name: Get data
        run: |
          echo '---'
          echo GDRIVE_CREDENTIALS_DATA: $GDRIVE_CREDENTIALS_DATA
          echo '---'
          #pip list
          dvc remote default storage
          #dvc remote modify storage --local gdrive_use_service_account true
          #dvc remote modify storage --local gdrive_service_account_json_file_path .dvc/gdrive-access.json
          dvc pull
        env:
          REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          #GDRIVE_CREDENTIALS_DATA : ${{ secrets.GDRIVE_CREDENTIALS_DATA }}   
      - name: Install requirements
        run: |
          pip install -r requirements.txt
      - name: Run tests
        run: python src/test.py  

GDRIVE_CREDENTIALS_DATA已填充从Google下载的JSON文件内容,且该文件已在另外两台电脑上测试可用。尝试过使用环境变量以及将JSON文件添加到仓库的方式,均未成功,始终收到错误:

ERROR: configuration error - Failed to authenticate GDrive remote: name: drive version: v2
ERROR: Failed to authenticate GDrive remote
Learn more about configuration settings at https://man.dvc.org/remote/modify.
Error: Process completed with exit code 251.

修复步骤

  • 正确配置DVC服务账号认证
    取消工作流中相关注释,改用gdrive_service_account_json_content直接传入环境变量中的JSON内容,无需创建物理文件,避免路径和权限问题:

    - name: Get data
      run: |
        dvc remote default storage
        dvc remote modify storage --local gdrive_use_service_account true
        dvc remote modify storage --local gdrive_service_account_json_content "$GDRIVE_CREDENTIALS_DATA"
        dvc pull
      env:
        GDRIVE_CREDENTIALS_DATA: ${{ secrets.GDRIVE_CREDENTIALS_DATA }}
    
  • 确认服务账号的GDrive权限
    即使本地测试可用,GitHub Actions使用的是服务账号身份,需确保:

    • 将服务账号邮箱(JSON文件中client_email字段的值)添加到GDrive目标文件夹的共享列表,权限设置为编辑或内容管理者。
    • 检查目标文件夹是否存在组织级别的外部访问限制,确保服务账号能正常访问。
  • 验证DVC远程配置
    确认仓库内.dvc/config文件中,storage远程的url格式正确,应为gdrive://<目标文件夹ID>,文件夹ID需准确无误。

  • 检查环境变量传递
    可临时在run脚本中添加echo "$GDRIVE_CREDENTIALS_DATA"(测试完成后删除,避免泄露敏感信息),确认GDRIVE_CREDENTIALS_DATA已被正确注入环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:54:22