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
相关产品推荐
相关产品推荐

