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

Github Actions推送到Github Pages仓库遇403权限拒绝问题求助

GitHub Pages仓库Actions默认Token推送失败的原因及解决方案

为什么Pages仓库和普通仓库有差异?

GitHub Pages仓库(尤其是用户/组织专属的<username>.github.io仓库)的默认GITHUB_TOKEN权限与普通仓库存在区别:

  • 普通仓库的默认GITHUB_TOKEN默认拥有仓库内容读写权限,所以你的原配置能正常执行推送。
  • Pages仓库出于安全策略,默认给GITHUB_TOKEN仅分配只读权限,防止自动化操作意外篡改Pages部署内容,这就是你遇到403权限拒绝错误的核心原因。

不用自定义Token,如何用默认Token解决?

你可以通过两种方式为默认GITHUB_TOKEN赋予写入权限:

方式1:全局调整仓库的Workflow权限

  1. 打开你的Pages仓库,进入「Settings」→「Actions」→「General」
  2. 找到「Workflow permissions」区域,选择「Read and write permissions」
  3. 保存设置后,默认GITHUB_TOKEN就拥有了仓库内容写入权限,你的原配置即可正常运行。

方式2:给单个Job显式声明权限(推荐)

如果不想全局开放权限,可在特定Job中单独声明写入权限,修改后的配置如下:

name: Example
on: workflow_dispatch
jobs:
  example:
    runs-on: ubuntu-latest
    permissions:
      contents: write  # 给当前Job的GITHUB_TOKEN赋予内容写入权限
    steps:
      - uses: actions/checkout@v3
        with:
          persist-credentials: false  # 避免默认只读凭证残留干扰
      - shell: bash
        run: |
          date > 1.txt
          git config user.name github-actions
          git config user.email github-actions@github.com
          git add 1.txt
          git commit -m "Updated with current date"
          git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git

该配置会临时为目标Job的GITHUB_TOKEN赋予写入权限,完成推送操作,且不会影响仓库内其他Job的权限设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:45:40