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

GitHub Enterprise自托管Runner无法拉取LFS文件求助

解决GitHub Enterprise自托管Runner中action/checkout@v3拉取LFS文件失败的问题

核心原因

checkout action的lfs: true参数在自托管Runner环境下,未将传入的token正确传递给Git LFS的认证流程,导致LFS对象拉取时认证失败。而手动执行git lfs fetch时,输入的令牌会被Git凭证助手存储,后续操作可复用该凭证,因此能成功拉取。


可行解决方案

1. 为Runner配置全局Git LFS凭证

在自托管Runner的Ubuntu 20.04机器上执行以下操作,让Git LFS自动使用访问令牌认证:

  • 设置全局凭证助手:
    git config --global credential.helper store
    
  • 创建~/.git-credentials文件,写入以下内容(替换占位符):
    https://<你的访问令牌>:x-oauth-basic@<GitHub Enterprise实例域名>
    
  • 赋予文件只读权限:
    chmod 600 ~/.git-credentials
    

配置完成后,Runner上所有Git LFS操作都会自动使用该凭证,无需手动输入。

2. 在Workflow中显式处理LFS拉取

放弃使用checkout action的lfs参数,分两步完成代码检出和LFS拉取,确保令牌正确传递给LFS:

jobs:
  build:
    runs-on: self-hosted
    steps:
      - name: Checkout code without LFS
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.YOUR_ACCESS_TOKEN }} # 用于仓库克隆的认证

      - name: Fetch LFS objects
        run: |
          # 显式指定LFS端点(可选,若Runner无法自动识别)
          git config lfs.url https://<GitHub Enterprise实例域名>/<你的用户名>/<目标仓库名>.git/info/lfs
          git lfs fetch --all
        env:
          GIT_LFS_TOKEN: ${{ secrets.YOUR_ACCESS_TOKEN }} # 传递令牌给Git LFS

确保YOUR_ACCESS_TOKEN拥有仓库的repo权限(包含LFS读写权限)。

3. 检查并升级Git LFS版本

低版本Git LFS可能与GitHub Enterprise 3.8存在兼容性问题:

  • 查看当前版本:
    git lfs version
    
  • 若版本低于v3.0,执行以下命令升级(Ubuntu 20.04):
    curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
    sudo apt-get install git-lfs
    

4. 验证GitHub Enterprise的LFS配置

  • 确认目标仓库已开启LFS功能(仓库设置 → Git LFS);
  • 检查你的访问令牌是否包含repo权限(在GitHub Enterprise的令牌管理页面查看)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:47:20