发布到 NuGet.org 使用 tag 驱动的 CI 流程。本地执行 gate + pack + tag,CI 执行实际的 NuGet 推送。
发布流程
一键发布
# ① release.sh 执行本地 gate + pack + tag./scripts/release.sh 1.2.3release.sh 内部流程:
- 运行本地 gate(编译、测试、审计)
- 执行
dotnet pack -c Release -o artifacts/ - 创建 git tag
v1.2.3 - 推送 tag 到远程
CI(.github/workflows/publish.yml)在 tag 推送时触发:
- 从 tag 名称提取版本号
- 执行
dotnet pack - 执行
dotnet nuget push推送到 NuGet.org - 需要环境变量
NUGET_API_KEY
手动发布(不推荐)
# ① 打包dotnet pack -c Release -o artifacts/
# ② 推送到 NuGet.org./scripts/publish-nuget.sh# 或手动执行dotnet nuget push artifacts/*.nupkg \ --api-key $NUGET_API_KEY \ --source https://api.nuget.org/v3/index.json版本管理
| 场景 | 版本格式 | 示例 |
|---|---|---|
| 稳定版本 | X.Y.Z | 1.0.0 |
| 预发布版本 | X.Y.Z-alpha.N | 1.1.0-alpha.3 |
| 版本覆盖 | -p:Version=X.Y.Z | 发布时使用 |
所有包版本锁定在一起——不能单独发布某个包的特定版本。
发布前检查清单
- 本地编译 0 warning 0 error
- 全部测试通过
-
scripts/vulnerability-audit.mjs无漏洞 - SBOM 已生成
-
Directory.Build.props版本号已更新 - 新增包的 README 已完成
- 新增包已加入解决方案文件夹分类
- 新增包已在根 README 包索引登记