docs: 4.1 发布链勾选完成,记录 Nexus 端口/认证/查重细节与 CI #643 验证结果
ci / build-test (push) Successful in 2m37s
ci / publish (push) Successful in 1m19s

This commit is contained in:
wanghu
2026-09-02 11:42:31 +08:00
parent 64ee63c938
commit 2414f8b94b
+27 -15
View File
@@ -1,3 +1,14 @@
---
AIGC:
ContentProducer: '001191110102MAD55U9H0F10002'
ContentPropagator: '001191110102MAD55U9H0F10002'
Label: '1'
ProduceID: '0c3965b2-86bf-44ef-9ca7-c1be5394b48e'
PropagateID: '0c3965b2-86bf-44ef-9ca7-c1be5394b48e'
ReservedCode1: '841092c7-f9f4-4d86-b50c-f4b1e0e9974a'
ReservedCode2: '841092c7-f9f4-4d86-b50c-f4b1e0e9974a'
---
# yh-platform-dotnet 建设方案 v4 —— 移交文档(已做 / 未做全记录) # yh-platform-dotnet 建设方案 v4 —— 移交文档(已做 / 未做全记录)
> 版本:v4.0 | 日期:2026-08-28 | 状态:**移交文档**(接手人从此文档开始) > 版本:v4.0 | 日期:2026-08-28 | 状态:**移交文档**(接手人从此文档开始)
@@ -29,7 +40,7 @@ BasePlatformDotnet/
├── Directory.Build.props # 共享编译属性:双目标 net5.0;net8.0、LangVersion、NuGet 元数据、YhPlatformNetVersion ├── Directory.Build.props # 共享编译属性:双目标 net5.0;net8.0、LangVersion、NuGet 元数据、YhPlatformNetVersion
├── Directory.Packages.props # CPM 集中包版本(= Java BOM 等价物) ├── Directory.Packages.props # CPM 集中包版本(= Java BOM 等价物)
├── yh-platform-net.sln ├── yh-platform-net.sln
├── .gitea/workflows/ci.yml # CI:build → test → pack ├── .gitea/workflows/ci.yml # CI:build → test → pack → push(仓库根,仅 main push 触发发布)
├── src/ ├── src/
│ ├── Yh.Platform.Abstractions/ # 模型与信封(对应 yh-utils-core) │ ├── Yh.Platform.Abstractions/ # 模型与信封(对应 yh-utils-core)
│ │ ├── BoaUser.cs / BoaRoleInfo.cs / BoaGroup.cs / BoaModule.cs / BoaApp.cs / BoaAppType.cs │ │ ├── BoaUser.cs / BoaRoleInfo.cs / BoaGroup.cs / BoaModule.cs / BoaApp.cs / BoaAppType.cs
@@ -161,19 +172,18 @@ UserBase 改 /oapi 契约
## 四、未完成的工作(移交待办,按优先级) ## 四、未完成的工作(移交待办,按优先级)
### 4.1 🔴 发布链(阻塞所有消费方,预计半天) ### 4.1 🔴 发布链(阻塞所有消费方)—— ✅ 已完成(2026-09-02 实测)
- [ ] **Nexus 建仓**(需管理员):登录 `nexus.yunhaixingtong.com` → Repositories → Create → `nuget-hosted`(Version policy: Release;Deployment policy: **Disable redeploy**)→ 拿 API Key。可选:`nuget-proxy`(代理 nuget.org)+ `nuget-public`(group) - [x] **Nexus 建仓**:`nuget-hosted`(Version policy: Release;Deployment policy: **Disable redeploy**)、`nuget-group`(聚合)、`nuget.org-proxy` 均已在 Nexus 预先建好。**注意**:Nexus 实际地址带端口 `http://nexus.yunhaixingtong.com:8081`(本方案文档 URL 原缺端口);写策略枚举值为 `ALLOW_ONCE`(= Disable redeploy,禁止覆盖),已通过 REST API 确认/修正
- [ ] **版本号裁决**:当前 `YhPlatformNetVersion=1.0.0`。因 9.1 核对表 #6~#9/#12 尚未真实环境实调,**建议先发 `1.0.0-preview.1`**(改 Directory.Build.props 后重 pack),实调通过再定 1.0.0;或直接 1.0.0 接受风险 - [x] **版本号裁决**:采用 `1.0.0-preview.1`(核对表 #6~#9/#12 尚未真实环境实调,先发预发布版;实调通过后再改 Directory.Build.props 定 1.0.0)
- [ ] **推送**: - [x] **推送**(5 个包全部推送成功):
```powershell - `Yh.Platform.Abstractions / AppAuth / OpenApi / Auth / Yh.SchClass.OpenApi` 均 `1.0.0-preview.1`
dotnet nuget add source "http://nexus.yunhaixingtong.com/repository/nuget-hosted/index.json" ` - **认证方式**:Nexus 的 NuGet 推送走 **HTTP Basic(账号+密码)**,不校验 api-key(`--api-key` 传任意值即可)
--name nexus-nuget --username <账号> --password <密码> --store-password-in-clear-text - **`--skip-duplicate` 对 Nexus 无效**(重复包直接返回 400),推送脚本改为先调 Nexus REST API 查重、已存在则跳过
dotnet nuget push "d:\SoftProject\yunhai\BasePlatformDotnet\artifacts\*.nupkg" ` - [x] **推送后验证**:空项目 `dotnet add package Yh.Platform.OpenApi --version 1.0.0-preview.1` 通过 `nuget-group` 成功还原并编译;http 源需在 `nuget.config` 显式加 `allowInsecureConnections="true"`
--source nexus-nuget --api-key <APIKey> --skip-duplicate - [x] **CI push 固化**:Gitea 仓库 Secrets 配置 `NEXUS_URL` / `NEXUS_USER` / `NEXUS_PASS`;工作流已迁到**仓库根** `.gitea/workflows/ci.yml`(`BasePlatformDotnet/.gitea/` 子目录不触发),推送逻辑抽到 `.gitea/scripts/push-to-nexus.sh`(动态生成带凭据 nuget.config + 查重跳过);**CI 运行 #643 全绿**(build-test + publish,Push to Nexus 输出 `pushed=0 skipped=5 failed=0`——5 包已存在被正确跳过)
```
- [ ] **推送后验证**:空项目 `dotnet add package Yh.Platform.OpenApi` 能还原;注意 http 源在新 SDK 需 `nuget.config` 加 `allowInsecureConnections="true"` > 后续发新版本(如 1.0.0):改 `Directory.Build.props` 的 `YhPlatformNetVersion` → 推送 main → CI 自动 pack + push;同版本因 Disable redeploy 不可覆盖,务必递增版本号。
- [ ] **CI push 固化**:Gitea 仓库 Secrets 加 `NEXUS_NUGET_APIKEY`/`NEXUS_NUGET_URL`,ci.yml 的 pack 步骤后追加 push 步骤(仅 main 分支)
### 4.2 🟠 真实环境实调(依赖 UserBase 测试环境 + appKey 注册) ### 4.2 🟠 真实环境实调(依赖 UserBase 测试环境 + appKey 注册)
@@ -234,8 +244,8 @@ dotnet pack -c Release -o artifacts # 预期 4 包生成
| 信封解析 | ✅ 成功裸数据/code≠0 抛 DException(EnvelopeData 携带),fixture 锁定 | | 信封解析 | ✅ 成功裸数据/code≠0 抛 DException(EnvelopeData 携带),fixture 锁定 |
| 模型契约 | ✅ 13 POCO ⇔ 权威快照双向对拍 | | 模型契约 | ✅ 13 POCO ⇔ 权威快照双向对拍 |
| 双序列化器 | ✅ Newtonsoft(大小写不敏感)+ STJ Web 逐节点对拍 | | 双序列化器 | ✅ Newtonsoft(大小写不敏感)+ STJ Web 逐节点对拍 |
| pack 产物 | ✅ 4 包、双 TFM lib、依赖分组正确(本地验证) | | pack 产物 | ✅ 5 包(含 Yh.SchClass.OpenApi)、双 TFM lib、依赖分组正确(本地验证) |
| Nexus 发布 | ❌ 未推送(待 4.1) | | Nexus 发布 | ✅ 5 包 1.0.0-preview.1 已推送(2026-09-02);CI #643 全绿自动发布链路打通 |
| 真实环境实调 | ❌ 待 UserBase 测试环境(待 4.2,核对表 15 项中 11 过 4 待) | | 真实环境实调 | ❌ 待 UserBase 测试环境(待 4.2,核对表 15 项中 11 过 4 待) |
| 消费方实际接入 | ❌ 未开始(待 4.3 指南 + 4.1 发布) | | 消费方实际接入 | ❌ 未开始(待 4.3 指南 + 4.1 发布) |
@@ -255,3 +265,5 @@ dotnet pack -c Release -o artifacts # 预期 4 包生成
| 2026-08-28 | v2.0 | 消费方实证(GrowthHealth net5.0 + BschOpenApi 考古)、脚手架命令、四包设计、分阶段实施 | | 2026-08-28 | v2.0 | 消费方实证(GrowthHealth net5.0 + BschOpenApi 考古)、脚手架命令、四包设计、分阶段实施 |
| 2026-08-28 | v3.0 | 自检清单(工程/契约/运行)+ 15 项审计核对表 | | 2026-08-28 | v3.0 | 自检清单(工程/契约/运行)+ 15 项审计核对表 |
| 2026-08-28 | v4.0 | **移交版**:已完成(P0~P6 + 两轮缺陷修复 + 快照对拍机制 + pack 验证)与待办(发布链/实调/指南/长期项)全记录,含接手人快速上手路径 | | 2026-08-28 | v4.0 | **移交版**:已完成(P0~P6 + 两轮缺陷修复 + 快照对拍机制 + pack 验证)与待办(发布链/实调/指南/长期项)全记录,含接手人快速上手路径 |
> AI生成