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
补丁版本(VersionPatch)Bug 修复,无 API 变更4.1.67 -> 4.1.68

如何递增版本 ​

  1. 编辑 build/version.props
  2. 更新相应的组件(VersionMajor、VersionMinor 或 VersionPatch)
  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 许可证发布。