Skip to content

发布

SmartSql 将所有库包作为协调的集合发布到 nuget.org。本页介绍版本管理系统、CI/CD 发布流水线以及已发布的 NuGet 包完整列表。

一览

方面详情
注册表nuget.org
版本来源build/version.props
当前版本4.1.68
CI 触发条件GitHub release 创建
构建命令dotnet pack -c Release -o ./nuget
推送命令dotnet nuget push "./nuget/*.nupkg"
许可证Apache-2.0

版本管理

所有 SmartSql 包共享单一版本号,在 build/version.props 中集中管理:

xml
<Project>
  <PropertyGroup>
    <VersionMajor>4</VersionMajor>
    <VersionMinor>1</VersionMinor>
    <VersionPatch>68</VersionPatch>
    <VersionPrefix>$(VersionMajor).$(VersionMinor).$(VersionPatch)</VersionPrefix>
  </PropertyGroup>
</Project>

VersionPrefix 属性由三个组件计算得出,并通过 Directory.Build.props(导入 build/version.props)自动应用到每个项目。

版本策略

组件递增时机示例
主版本(VersionMajor破坏性 API 变更4.x.x -> 5.0.0
次版本(VersionMinor新功能,向后兼容4.1.x -> 4.2.0
补丁版本(VersionPatchBug 修复,无 API 变更4.1.67 -> 4.1.68

如何递增版本

  1. 编辑 build/version.props
  2. 更新相应的组件(VersionMajorVersionMinorVersionPatch
  3. 提交更改
  4. 创建 GitHub release(这会触发发布流水线)
mermaid
flowchart LR
    subgraph version["Version Update Flow"]
        style version fill:#161b22,stroke:#30363d,color:#e6edf3
        Edit["Edit<br>build/version.props"] --> Commit["Commit"]
        Commit --> Release["Create GitHub<br>Release"]
        Release --> CI["CI Pipeline<br>packs & publishes"]
    end

发布流水线

CI/CD 概览

发布通过 GitHub Actions 完全自动化。工作流在创建 GitHub release 时触发。

mermaid
flowchart TD
    subgraph pipeline["NuGet Publishing Pipeline"]
        style pipeline fill:#161b22,stroke:#30363d,color:#e6edf3
        Trigger["GitHub Release Created"] --> Checkout["Checkout repository"]
        Checkout --> Setup["Setup .NET 6.0 SDK"]
        Setup --> Pack["dotnet pack -c Release -o ./nuget"]
        Pack --> Push["dotnet nuget push<br>'./nuget/*.nupkg'<br>to api.nuget.org"]
        Push --> Live["Packages available<br>on nuget.org"]
    end

工作流详情

发布工作流(.github/workflows/package-publish.yml)执行以下步骤:

步骤命令描述
设置actions/setup-dotnet@v2,SDK 6.0.x安装 .NET SDK
打包dotnet pack -c Release -o ./nuget以 Release 模式构建和打包所有项目
推送dotnet nuget push "./nuget/*.nupkg" -s https://api.nuget.org/v3/index.json -k NUGET_API_KEY将所有包上传到 nuget.org

所需密钥

密钥用途
NUGET_API_KEY用于发布到 nuget.org 的 API 密钥(在仓库密钥中设置)

发布内容

dotnet pack 命令为每个库项目(非测试、非示例项目)生成一个 .nupkg。所有包使用来自 build/version.props 的相同版本。每个包的 PackageId 默认为 AssemblyName(与项目名称匹配)。

NuGet 包

核心包

描述NuGet
SmartSql核心 ORM 库NuGet

扩展包

描述NuGet
SmartSql.DIExtensionASP.NET Core DI 集成NuGet
SmartSql.DyRepository动态仓库代理生成NuGet
SmartSql.OptionsOptions 模式配置NuGet
SmartSql.AOPAOP 事务支持NuGet
SmartSql.Extensions通用扩展NuGet
SmartSql.ScriptTag脚本标签支持NuGet
SmartSql.DataConnector数据连接器服务NuGet

缓存包

描述NuGet
SmartSql.Cache.RedisRedis 缓存提供程序NuGet
SmartSql.Cache.Sync缓存同步NuGet
SmartSql.DistributedCache分布式缓存抽象NuGet

批量插入包

描述NuGet
SmartSql.Bulk基础批量插入抽象NuGet
SmartSql.Bulk.SqlServerSQL Server 批量插入NuGet
SmartSql.Bulk.MsSqlServerMS SQL Server 批量插入NuGet
SmartSql.Bulk.MySqlMySQL 批量插入NuGet
SmartSql.Bulk.MySqlConnectorMySQL(MySqlConnector)批量插入NuGet
SmartSql.Bulk.PostgreSqlPostgreSQL 批量插入NuGet

同步包

描述NuGet
SmartSql.InvokeSync数据同步基础NuGet
SmartSql.InvokeSync.KafkaKafka 同步传输NuGet
SmartSql.InvokeSync.RabbitMQRabbitMQ 同步传输NuGet

数据库提供程序包

描述NuGet
SmartSql.OracleOracle 数据库提供程序NuGet
SmartSql.TypeHandlerJSON 和自定义类型处理器NuGet
SmartSql.TypeHandler.PostgreSqlPostgreSQL 类型处理器NuGet

构建元数据

Directory.Build.props 文件配置应用于每个包的共享元数据:

属性描述
AuthorsAhoo Wang; ncc包作者
PackageLicenseExpressionApache-2.0许可证标识符
PackageRequireLicenseAcceptanceTrue安装时要求接受许可证
DescriptionSmartSql = MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + Dynamic Repository包描述
PackageTagsorm, sql, read-write-separation, cache, redis, dotnet-core, cross-platform, high-performance, distributed-computing, zookeeper搜索标签
PublishRepositoryUrltrueSourceLink:发布仓库 URL
EmbedUntrackedSourcestrueSourceLink:嵌入未跟踪的源文件

SourceLink 通过 Microsoft.SourceLink.GitHub 包启用,允许使用者从调试器中进入 SmartSql 源代码。

发布清单

创建 GitHub release 以触发发布之前:

  1. 更新版本 -- 在 build/version.props
  2. 运行所有测试 -- dotnet test
  3. 以 Release 模式构建 -- dotnet build SmartSql.sln -c Release
  4. 本地打包 -- dotnet pack -c Release -o ./nuget
  5. 验证包内容 -- 检查 .nupkg 文件
  6. 提交版本更改
  7. 创建 GitHub release -- 标签与版本匹配(例如 4.1.68
  8. CI 流水线自动打包和发布所有包
mermaid
sequenceDiagram
autonumber
    participant Dev as Developer
    participant GH as GitHub
    participant CI as GitHub Actions
    participant NuGet as nuget.org

    Dev->>Dev: Update build/version.props
    Dev->>Dev: dotnet test
    Dev->>GH: Push version commit
    Dev->>GH: Create Release (tag: 4.1.68)
    GH->>CI: Trigger package-publish workflow
    CI->>CI: dotnet pack -c Release
    CI->>NuGet: dotnet nuget push *.nupkg
    NuGet-->>CI: Published
    CI-->>GH: Workflow complete

交叉引用

参考资料

来源描述
.github/workflows/package-publish.ymlNuGet 发布工作流
.github/workflows/integration-test.ymlCI 测试工作流(发布前运行)
build/version.props版本管理
Directory.Build.props共享包元数据和 SourceLink

基于 MIT 许可证发布。