复刻仓库后GitHub Actions推送GitHub Packages时403认证失败
解决复刻仓库GitHub Action推送NuGet包至GitHub Packages的403错误
问题原因
同一组织内的复刻仓库,默认生成的GITHUB_TOKEN权限范围仅局限于复刻仓库本身,即便设置了write-all,也无法获取组织级GitHub Packages的推送权限——原仓库作为包的归属仓库,Token自带对应权限,因此无此问题。
解决方案
1. 配置组织级GitHub Packages权限
进入组织的Settings → Packages → 找到目标NuGet包,在Manage access中添加复刻仓库的Workflow身份,授予Write权限。
2. 使用个人访问令牌(PAT)替代GITHUB_TOKEN
- 创建一个拥有
write:packages和repo权限的PAT; - 在复刻仓库的
Settings→Secrets and variables→Actions中添加该PAT,命名为ORG_PACKAGES_TOKEN; - 修改推送命令:
dotnet nuget push nuget\*.nupkg -k ${{secrets.ORG_PACKAGES_TOKEN}} --source https://nuget.pkg.github.com/<organisation>/index.json --skip-duplicate
3. 检查组织全局Workflow权限限制
进入组织的Settings → Actions → General,确认Workflow permissions设置为允许自定义权限,避免全局权限规则覆盖复刻仓库的write-all配置。
内容的提问来源于stack exchange,提问作者Michael Rushton
相关产品推荐
相关产品推荐

