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

跨仓库调用GitHub Actions推送代码权限报错的解决方案求助

跨仓库调用GitHub可复用工作流的权限问题解决方案

问题原因

跨仓库调用可复用工作流时,被调用工作流默认使用**调用方仓库(repo2)**的GITHUB_TOKEN,该令牌仅拥有调用方仓库的权限,无法对目标仓库(repo1)执行写入操作,因此推送代码时触发403权限错误。

解决方案

通过触发目标仓库(repo1)的workflow_dispatch事件执行版本更新,让工作流使用repo1自身的github-actions[bot]令牌,确保拥有repo1的写入权限。

步骤1:配置repo1的工作流权限

进入repo1的Settings → Actions → General:

  • 在Workflow permissions区域,选择Read and write permissions
  • 勾选Allow GitHub Actions to create and approve pull requests
  • 在Repository access区域,设置允许repo2访问(可选择组织内所有仓库,或手动添加repo2)

步骤2:修改repo2的调用工作流

将原直接调用可复用工作流的代码,替换为触发repo1的workflow_dispatch事件:

call-repo1:
  runs-on: ubuntu-latest
  steps:
    - name: Trigger repo1 version update workflow
      uses: actions/github-script@v6
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}
        script: |
          await github.rest.actions.createWorkflowDispatch({
            owner: 'myorg',
            repo: 'repo1',
            workflow_id: 'update-version.yml',
            ref: 'develop',
            inputs: {
              branch: 'develop',
              milestone: "${{ github.event.issue.milestone.title }}"
            }
          })

步骤3:保留repo1原工作流不变

repo1的update-version.yml无需修改,因为通过workflow_dispatch触发时,工作流会使用repo1自身的GITHUB_TOKEN,拥有repo1的写入权限,推送代码时不会再出现权限问题。

说明

该方案完全依赖GitHub内置的github-actions[bot],无需额外创建个人访问令牌,确保跨仓库调用时的权限逻辑与手动触发/同仓库调用一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:40:56