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

GitHub Actions访问GitHub Packages时dotnet restore认证异常

解决GitHub Actions中dotnet restore访问GitHub Packages的认证问题

问题场景

在GitHub Actions工作流中执行dotnet restore时,无法从GitHub Packages源拉取NuGet包,提示认证失败:

/usr/share/dotnet/sdk/8.0.100/NuGet.targets(156,5): warning : Your request could not be authenticated by the GitHub Packages service. Please ensure your access token is valid and has the appropriate scopes configured.
Retrying 'FindPackagesByIdAsync' for source 'https://nuget.pkg.github.com/user/download/package/index.json'.

以下是具体的修复方案和配置优化:


核心问题诊断

  1. 手动添加NuGet源时的硬编码用户名和token传递方式存在隐患
  2. 未利用setup-dotnet动作的内置认证能力,导致配置冗余且易出错
  3. 若跨仓库访问GitHub Packages,默认GITHUB_TOKEN无跨仓库权限

修复方案一:使用setup-dotnet自动配置认证(推荐)

移除手动添加NuGet源的步骤,直接通过setup-dotnet的参数自动配置GitHub Packages源和认证,避免手动配置错误:

修改工作流中的Setup .NET步骤:

- name: Setup .NET
  uses: actions/setup-dotnet@v3
  with:
    dotnet-version: 7.0.x
    # 替换为你的GitHub用户名/组织名
    source-urls: https://nuget.pkg.github.com/你的用户名/index.json
  env:
    NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

同时删除原工作流中的Add GitHub NuGet Source步骤,setup-dotnet会自动完成源的添加和认证配置。


修复方案二:修正手动添加源的配置

如果需要保留手动添加源的逻辑,需调整以下两点:

  1. 用动态变量${{ github.actor }}替代硬编码的user作为用户名
  2. 通过环境变量传递token,替代明文密码存储

修改Add GitHub NuGet Source步骤:

- name: Add GitHub NuGet Source
  run: |
    # 替换为你的GitHub用户名/组织名
    dotnet nuget add source https://nuget.pkg.github.com/你的用户名/index.json -n github
  env:
    NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

额外注意事项

  • 权限检查:工作流已配置packages: read权限,若访问的是其他GitHub仓库的Packages,默认GITHUB_TOKEN无跨仓库权限,需创建带read:packages权限的个人访问令牌(PAT),存入仓库Secrets后替换${{ secrets.GITHUB_TOKEN }}
  • NuGet.config冲突:若项目根目录存在NuGet.config,需确保其中的GitHub Packages源配置与工作流一致,或在工作流中通过命令覆盖原有配置
  • SDK版本匹配:错误日志显示使用了.NET 8 SDK,但工作流指定的是7.0.x,需确认setup-dotnet是否正确安装了指定版本,可添加global-json文件锁定SDK版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:56:11