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

使用GitHub应用安装令牌在GitHub Packages发布NuGet包遇阻

使用GitHub App安装令牌通过dotnet publish发布NuGet包到跨组织GitHub Packages

这个场景是支持的,但不能直接将GitHub App安装令牌作为--api-key参数传给dotnet publish,问题出在NuGet客户端与GitHub Packages的认证逻辑差异上。

问题根源

GitHub Packages的NuGet源依赖**基本认证(用户名+密码)**完成推送,而dotnet publish的--api-key参数是针对NuGet.org这类使用API密钥认证的源设计的。虽然你的安装令牌可以直接通过Bearer认证调用Packages API,但NuGet客户端的推送流程不支持这种方式,必须走基本认证流程。

正确实现步骤

方式1:提前配置NuGet源

在工作流中先添加目标组织的NuGet源并配置凭据,再执行发布:

# 添加目标组织的NuGet源,用户名固定为x-access-token,密码为GitHub App安装令牌
dotnet nuget add source --name github-cross-org https://nuget.pkg.github.com/目标组织名/index.json --username x-access-token --password ${{ secrets.GITHUB_APP_INSTALL_TOKEN }} --store-password-in-clear-text

# 执行发布,指定已配置的源名称
dotnet publish -c Release -p:PublishNuGet=true -p:NuGetSource=github-cross-org

方式2:发布时直接指定凭据参数

无需提前配置源,直接在dotnet publish命令中传入认证信息:

dotnet publish -c Release -p:PublishNuGet=true \
  -p:NuGetSource=https://nuget.pkg.github.com/目标组织名/index.json \
  -p:NuGetUsername=x-access-token \
  -p:NuGetPassword=${{ secrets.GITHUB_APP_INSTALL_TOKEN }}

注意事项

  • 确保GitHub App安装令牌已被授予目标组织的packages:write权限,且令牌在工作流执行时处于有效期内(默认有效期1小时,可在生成时调整)。
  • --store-password-in-clear-text参数是必要的,因为GitHub Actions环境中无法使用加密存储的凭据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:13:20