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

如何在GitHub Action中使用raw.githubusercontent.com访问同账号仓库文件?

解决GitHub Action访问同账号下另一个仓库文件的问题

问题根源

  1. 默认的GITHUB_TOKEN权限仅局限于当前仓库,无法访问同账号下的其他仓库(尤其是私有仓库)。
  2. 直接在raw.githubusercontent.com的URL后拼接?token=GITHUB_TOKEN的方式不被官方支持,这种传参方式无效。

可行解决方案

方案一:用actions/checkout拉取目标仓库

这是最直观可靠的方式,直接将目标仓库拉取到当前工作流的运行环境中,之后就能像操作本地文件一样读取内容。

示例工作流代码:

- name: 拉取目标仓库
  uses: actions/checkout@v4
  with:
    repository: <你的用户名>/<目标仓库名>
    ref: <目标分支> # 例如main、dev
    path: ./target-repo # 指定拉取到当前目录下的子文件夹
    token: ${{ secrets.GITHUB_TOKEN }} # 若目标仓库是私有,需替换为有权限的PAT

- name: 读取目标文件
  run: cat ./target-repo/<目标文件名>

注意:如果目标仓库是私有,默认GITHUB_TOKEN没有跨仓库访问权限,需要创建一个带有repo权限的Personal Access Token(PAT),将其存入当前仓库的Secrets(比如命名为PRIVATE_REPO_TOKEN),然后把上述代码中的token值替换为${{ secrets.PRIVATE_REPO_TOKEN }}。

方案二:通过GitHub API获取文件内容

如果不需要拉取整个仓库,可以调用GitHub API获取文件内容,注意要在请求头中正确携带token。

示例工作流代码(使用curl和jq处理):

- name: 用API获取文件内容
  run: |
    curl -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
    https://api.github.com/repos/<你的用户名>/<目标仓库名>/contents/<目标文件名>?ref=<目标分支> | jq -r '.content' | base64 --decode > ./local-file.txt

说明:GitHub API返回的文件内容是Base64编码格式,所以需要解码后才能得到原始内容。同样,私有仓库需要确保使用的token有访问权限。

额外提醒

  • 禁止在URL中直接拼接token,这种方式既不安全,也不被官方支持。
  • 优先选择actions/checkout方案,后续对文件的修改、复制等操作会更便捷。
  • 使用PAT时遵循最小权限原则,只赋予必要的repo权限,降低泄露后的风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:35:03