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

GitHub流水线检出私有仓库提示repository not found如何解决?

问题根因

你当前使用的secrets.GITHUB_TOKEN是GitHub Actions自动为当前运行流水线的仓库生成的临时令牌,默认仅具备当前仓库的访问权限,无法跨仓库拉取同组织下的其他私有仓库。GitHub出于安全考虑,权限不足时统一返回404 not found而非403权限错误,避免泄露私有仓库的存在性,因此会触发「repository not found」报错。

解决方案

方案1:创建具备私有仓库访问权限的Personal Access Token(通用方案)

  • 登录GitHub账号,进入【Settings】-【Developer settings】-【Personal access tokens】,生成新的PAT,勾选repo完整权限域;如果你的组织开启了SAML SSO校验,还需要为该PAT单独授权目标组织的访问权限
  • 进入运行流水线的仓库,打开【Settings】-【Secrets and variables】-【Actions】,新建一个密钥,命名为ORG_REPO_TOKEN,值填写你刚刚生成的PAT
  • 修改流水线配置,替换token字段的取值,同时建议将actions/checkout升级到v4版本避免兼容问题,修改后代码如下:
build:
  runs-on: ubuntu-latest
  steps:  
    - name: Checkout pickezy backend
      uses: actions/checkout@v4
      with:
       repository: Madurad/jenkinsfiles
       token: ${{ secrets.ORG_REPO_TOKEN }}
       ref: master

方案2:配置同组织跨仓库访问权限(仅同组织内仓库适用,安全性更高)

无需额外生成PAT,通过GitHub内置权限配置即可实现:

  • 进入你要拉取的目标私有仓库(Madurad/jenkinsfiles)的设置页面,打开【Settings】-【Actions】-【General】
  • 找到【Access】配置项,选择「Accessible from repositories in the '你的组织名称' organization」,保存设置
  • 回到运行流水线的仓库,在流水线yaml开头添加全局权限配置,为默认GITHUB_TOKEN开通内容读取权限:
permissions:
  contents: read
其他排查项

如果按上述方案配置后仍有报错,可依次排查以下问题:

  • 确认repository字段的仓库路径拼写完全正确,GitHub仓库路径大小写敏感
  • 确认配置的ref分支(此处为master)确实存在于目标私有仓库中,部分仓库的默认分支为main
  • 如果你的组织开启了IP白名单限制,需要将GitHub Actions的官方IP段加入组织的访问白名单

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:54:03