GitHub Actions推送NuGet包后无法在仓库查看的问题
解决GitHub Actions推送NuGet包后在Packages板块不显示的问题
以下是几个可能导致问题的原因及对应的修复方案:
1. YAML语法错误(缩进和拼写问题)
你的工作流代码存在两处关键语法问题:
- 拼写错误:推送源地址中的
orginization应为正确的组织名称拼写(比如organization,需和你GitHub上的组织名完全匹配) - 缩进错误:
Checkout和Build步骤的缩进不符合YAML规范,YAML对缩进要求严格,必须保证同一层级的缩进一致(建议统一使用2或4个空格)
2. 缺少必要的权限配置
GitHub Actions默认权限不足以推送包到GitHub Packages,需要在工作流中显式配置权限:
在jobs上方添加permissions字段,授予读写Packages的权限:
permissions: contents: read packages: write
3. API密钥使用不当
不要硬编码API密钥,应该使用GitHub自动生成的GITHUB_TOKEN变量,它会自动继承你配置的权限,既安全又能避免权限不足的问题。
修正后的完整工作流代码
name: ci.main permissions: contents: read packages: write jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Build run: > dotnet pack package \ -p:Version=1.0.0 \ -c Release \ -o ./location \ --include-source - name: Push run: > dotnet nuget push \ ./location/*.nupkg \ --source "https://nuget.pkg.github.com/[你的组织名]/index.json" \ --api-key ${{ secrets.GITHUB_TOKEN }} \ --skip-duplicate
额外检查项
- 确认推送源地址中的组织名和GitHub上的完全一致
- 查看工作流执行日志,检查
Push步骤是否有报错(比如401未授权、404源不存在等) - 如果是仓库级NuGet包,确认包ID和仓库名称匹配,或在
dotnet pack时通过-p:RepositoryUrl指定目标仓库地址 - 进入组织的Packages页面,检查是否有对应包被设置为隐藏状态
内容的提问来源于stack exchange,提问作者iluv_dev
相关产品推荐
相关产品推荐

