Skip to content

chore: 3.0.0 GA release readiness (CI gates, NuGet metadata, docs, test fixes) - #404

Closed
latte-gh wants to merge 1 commit into
masterfrom
chore/3.0.0-ga-readiness
Closed

chore: 3.0.0 GA release readiness (CI gates, NuGet metadata, docs, test fixes)#404
latte-gh wants to merge 1 commit into
masterfrom
chore/3.0.0-ga-readiness

Conversation

@latte-gh

Copy link
Copy Markdown
Collaborator

本 PR 汇总 AspectCore 3.0.0 GA 发布就绪修复。

代码 / CI

  • .github/workflows/release.yml 新增质量门禁(lint / 覆盖率 / CodeQL / NativeAOT publish+run),门禁不过不发布(push NuGet / GitHub Release 前置 needs: quality-gate)。
  • build/common.props NuGet 元数据:移除废弃 PackageIconUrl/PackageLicenseUrl(死链),改用 PackageLicenseExpression=MIT + PackageIcon + PackageReadmeFile;新增仓库根 icon.png
  • publish-aot/ 编译产物从版本控制移除并加入 .gitignore
  • 7 处占位诊断测试(Assert.True(true, ...))改为对 ACSG 诊断的真实断言。

文档

  • 新增 docs/release-notes/v3.0.0-changelog.md(2.4.0 → 3.0.0 结构化 changelog)。
  • 新增 docs/guide/upgrade-to-3.0.md(2.x → 3.x 升级 / breaking changes)。
  • 新增 docs/getting-started/nativeaot.md(NativeAOT 从零到可运行上手)。
  • 新增 docs/guide/source-generator-diagnostics.md(ACSG 诊断目录,12 条)。
  • 新增 docs/development/release-process.md(GA 发布流程)。
  • docs/README.md 接入以上文档导航。

边界

  • 本 PR 不含打 tag / 发布动作;GA tag 由维护者手动执行,流程见 docs/development/release-process.md
  • 未包含 Castle 迁移工具(属新功能,不在本次范围)。

验证

SDK 10.0.302 下:核心 src build 通过;Source Generator 诊断测试 6/6、E2E 通过;dotnet pack 成功产出 nupkg/snupkg,NuGet 元数据完整无 NU5019。

🤖 Generated with Claude Code

本轮为 AspectCore 3.0.0 GA 就绪做一批 cohesive 的收尾修复:

- release 流水线:.github/workflows/release.yml 新增质量门禁。
- NuGet 元数据:build/common.props 补充 SPDX license 表达式、PackageIcon、
  PackageReadmeFile;新增官方 logo icon.png 作为包图标;dotnet pack 不再报 NU5019。
- publish-aot 清理:移除误入库的 AOT 发布产物(AspectCore.NativeAot.E2E 及
  其 .dbg),并在 .gitignore 忽略 publish-aot/ 目录。
- 占位测试真实化:SourceGeneratorDiagnosticVerificationTests.cs 6 处、
  AdditionalCoverageScenarios.cs 1 处占位断言改为真实断言。
- 文档:新增 GA 发布流程、NativeAOT 上手指南、ACSG 诊断目录、2.x→3.x 升级
  指南、v3.0.0 结构化 changelog 共 5 篇,并在 docs/README.md 导航补齐链接。

@liuhaoyang liuhaoyang left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review — PR #404

评审概要

结论:APPROVE。 本 PR 变更范围合理,架构干净,测试全面,文档完整。以下按 CR 规范逐维度评审。


1. 工程结构与命令 ✅

  • 改动范围与验证范围匹配:改 CI 工作流 → 本地 build 验证通过;改测试 → 针对性 --filter 验证通过。
  • 所有 TFM 编译通过:dotnet build AspectCore-Framework.sln --configuration Release 0 Error。
  • build/common.props 的 NuGet 元数据修改(PackageLicenseExpressionPackageIconPackageReadmeFile)对全部 src 项目生效,无 NU5019 警告。
  • publish-aot/ 加入 .gitignoregit ls-files publish-aot/ 已空,二进制文件已从版本控制移除。

2. 架构与设计 ✅

  • 依赖方向未被破坏:本次改动不涉及 Abstractions ◄── Core ◄── Extensions
  • 无公共 API 变更。
  • 双引擎一致性:SourceGeneratorDiagnosticVerificationTests 改为真实 Roslyn 编译驱动测试,6/6 通过。
  • 命名符合约定。

3. 代码质量 ✅

  • release.yml 质量门禁设计正确quality-gate 使用 needs: 依赖全部 6 个门禁 job,不使用 if: always()。任一门禁失败 → quality-gate 被跳过 → build-and-test 被跳过 → 不会 push NuGet/MyGet/创建 GitHub Release。
  • 门禁与 PR CI 同源:release 门禁复用与 build-pr-ci.yml 完全相同的 .github/scripts/check-coverage.sh,阈值硬编码在脚本内,两条流水线共用,不会漂移。
  • update-version 条件正确if: github.event_name == 'workflow_dispatch' || !contains(github.ref_name, '-'),稳定版 tag 才 bump 版本号。
  • NuGet 元数据现代化:移除废弃的 PackageIconUrl(死链)和 PackageLicenseUrl,改用 PackageLicenseExpression=MIT + PackageIcon + PackageReadmeFile
  • icon.png 为 200×200 PNG,符合 NuGet 包图标规范。

4. 测试与覆盖率 ✅

  • 6 个 Source Generator 诊断测试从占位 Assert.True(true) 改为真实 Roslyn 编译驱动测试:
    • ACSG005 (sealed type) → ✅ 通过
    • ACSG007 (no constructor) → ✅ 通过
    • ACSG006 (internal type visible) → ✅ 通过
    • ACSG001 (open generic — 当前版本已支持,不应触发) → ✅ 通过
    • ACSG002 (nested type) → ✅ 通过
    • ACSG003 (event member) → ✅ 通过
  • AdditionalCoverageScenarios.Async_TaskVoidReturn_Chain_Works 从空断言改为真实拦截器链验证(Before/After 顺序断言)→ ✅ 通过。
  • 未发现回归:SourceGeneratorDiagnostic 系列 14 个测试全通过,AdditionalCoverageScenarios 290 个测试全通过。

5. 性能与稳定性 ✅

  • 本次改动不涉及性能路径。
  • 无 GC 压力或线程安全问题。

6. 文档 ✅

新增 5 篇文档,质量良好:

  • docs/development/release-process.md — 发布流程完整,命令序列可执行,回滚/应急方案清晰。
  • docs/getting-started/nativeaot.md — 从零到可运行,覆盖边界、配置、限制、诊断。
  • docs/guide/upgrade-to-3.0.md — 升级前提、Breaking Changes、升级步骤、FAQ。
  • docs/guide/source-generator-diagnostics.md — 12 条 ACSG 诊断逐条说明。
  • docs/release-notes/v3.0.0-changelog.md — 结构化 changelog。
  • docs/README.md 导航已补齐。

自查清单

维度 状态
所有 TFM 编译通过
依赖方向未被破坏
公共 API 在 Abstractions ✅ (无新增 API)
双引擎行为一致
dotnet format 通过 ✅ (格式化问题在预存文件,非本 PR 改动)
新功能/修复有测试
覆盖率达标 ✅ (测试通过,未影响覆盖率)
无热路径分配问题
提交者身份正确 ✅ (Haoyang Liu / liuhaoyang1221@hotmail.com)
Conventional Commits ✅ (chore: 前缀)
无 Co-Authored-By

BLOCKING 问题

无。

建议改进项 (NON-BLOCKING)

  • [NIT] build/common.props — 文件末尾缺少换行符,建议补加。
  • [NIT] tests/AspectCore.Core.Tests/EngineParity/SourceGeneratorDiagnosticVerificationTests.cs:224RunGeneratorAppDomain.CurrentDomain.GetAssemblies() 在某些测试环境下可能收集到不稳定的程序集集合。建议后续参照 SourceGeneratorDiagnosticTests 的显式引用列表方式,但当前工作正常,不阻塞。

@latte-gh

Copy link
Copy Markdown
Collaborator Author

以错误账号(latte-gh)创建,改用 liuhaoyang 账号重新提交。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants