跨仓库调用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
相关产品推荐
相关产品推荐

