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

使用有效GITHUB_TOKEN推送GitHub Packages失败求助

解决GitHub Actions推送NuGet包到GitHub Packages的403 Forbidden问题

以下是针对你遇到的403错误的具体排查和解决步骤:

1. 检查GITHUB_TOKEN的权限配置

默认情况下,GitHub Actions提供的GITHUB_TOKEN仅拥有contents:read的基础权限,没有推送包所需的packages:write权限。你需要手动配置权限:

  • 方法一:在仓库的「Settings → Actions → General → Workflow permissions」中,选择「Read and write permissions」,保存后重新触发Workflow。
  • 方法二:在Workflow的jobs节点下显式声明所需权限,修改后的配置如下:
jobs:
  build:
    permissions:
      packages: write
      contents: read
    runs-on: ubuntu-latest
    # 后续步骤保持不变

2. 验证NuGet包ID的命名规则

GitHub Packages对NuGet包的ID有严格要求:

  • 若推送至个人仓库:包ID需与仓库名称完全一致,或属于个人命名空间(如你的用户名.包名)。
  • 若推送至组织仓库:包ID必须以组织名为前缀(如组织名.包名)。
    如果包ID不符合规则,即使权限正确也会返回403错误,需检查.csproj中的<PackageId>配置。

3. 简化dotnet push命令

你当前的push命令同时指定了--api-key和已配置认证的源,可能导致参数冲突。可以简化命令,利用之前添加的已认证源直接推送:

dotnet nuget push ./*.nupkg --skip-duplicate --source "github"

因为添加源时已经通过username和password(即GITHUB_TOKEN)完成了认证,无需在push时重复指定--api-key。

4. 检查仓库/组织的Packages权限设置

  • 进入仓库的「Settings → Packages」,找到对应的包(若已创建),确认「Manage access」中包含当前Workflow对应的服务账号(通常是github-actions[bot]),并授予「Write」权限。
  • 若为组织仓库,还需检查组织的「Settings → Packages → Package settings」,确保允许仓库的Workflow向组织包库推送内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:46:12