This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 缓存序列化结构检测 — CI 集成说明
|
||||
# 序列化结构检测 — CI 集成说明
|
||||
|
||||
---
|
||||
|
||||
@@ -11,7 +11,7 @@ Gitea Actions 触发
|
||||
↓
|
||||
浅克隆业务仓库 tip(depth=1)+ 按需取 push 前 tip(before)
|
||||
↓
|
||||
从 Nexus 下载 cache-schema-checker.jar
|
||||
从 Nexus 下载 serialization-schema-checker.jar
|
||||
↓
|
||||
java -jar 执行(对比 before → after,累计 diff)
|
||||
↓
|
||||
@@ -46,7 +46,7 @@ mode=block 且含任意结构变更 → exit 1(流水线失败)
|
||||
|----|------|
|
||||
| Gitea Runner | 标签 `jdk11`,已安装 Java 11 |
|
||||
| Nexus 私库 | 可访问 `http://192.168.3.25:18081/nexus/repository/maven-releases` |
|
||||
| 工具 JAR | `com.codechecker:cache-schema-checker:1.0.0` 已发布 |
|
||||
| 工具 JAR | `com.codechecker:serialization-schema-checker:1.0.0` 已发布 |
|
||||
|
||||
---
|
||||
|
||||
@@ -58,18 +58,18 @@ mode=block 且含任意结构变更 → exit 1(流水线失败)
|
||||
jnpf-java-cloud/
|
||||
├── .gitea/
|
||||
│ ├── workflows/
|
||||
│ │ └── cache-schema-check.yaml # 流水线
|
||||
│ │ └── serialization-schema-check.yaml # 流水线
|
||||
│ └── config/
|
||||
│ └── cache-schema-check-config.yaml # 检测配置
|
||||
│ └── serialization-schema-check-config.yaml # 检测配置
|
||||
```
|
||||
|
||||
请以本仓库 `.gitea/workflows/cache-schema-check.yaml` 为模板同步到业务仓。
|
||||
请以本仓库 `.gitea/workflows/serialization-schema-check.yaml` 为模板同步到业务仓。
|
||||
|
||||
---
|
||||
|
||||
## 4. 流水线模板(要点)
|
||||
|
||||
完整可运行版本见:`.gitea/workflows/cache-schema-check.yaml`。
|
||||
完整可运行版本见:`.gitea/workflows/serialization-schema-check.yaml`。
|
||||
|
||||
核心逻辑摘要:
|
||||
|
||||
@@ -84,7 +84,7 @@ git fetch --depth 1 origin "$OLD_SHA" # 优先
|
||||
# 或 git fetch --deepen N # 兜底
|
||||
|
||||
# 4) 执行
|
||||
java -jar cache-schema-checker-1.0.0.jar \
|
||||
java -jar serialization-schema-checker-1.0.0.jar \
|
||||
--old-sha "$OLD_SHA" \
|
||||
--new-sha "$NEW_SHA" \
|
||||
...
|
||||
@@ -98,7 +98,7 @@ java -jar cache-schema-checker-1.0.0.jar \
|
||||
|--------|------|------|
|
||||
| `demo.yaml` (AI代码质量分析) | AI Code Review | 并行,互不影响 |
|
||||
| `code-check` (CodeChecker) | 通用变更检测 | **同模式**,可并列执行 |
|
||||
| `cache-schema-check` | 缓存结构检测 | 新增 |
|
||||
| `serialization-schema-check` | 缓存结构检测 | 新增 |
|
||||
|
||||
|
||||
---
|
||||
@@ -116,9 +116,9 @@ mvn clean deploy -DskipTests
|
||||
发布产物:
|
||||
|
||||
```text
|
||||
com/codechecker/cache-schema-checker/1.0.0/
|
||||
├── cache-schema-checker-1.0.0.jar # 可执行 fat-jar
|
||||
└── cache-schema-checker-1.0.0.pom
|
||||
com/codechecker/serialization-schema-checker/1.0.0/
|
||||
├── serialization-schema-checker-1.0.0.jar # 可执行 fat-jar
|
||||
└── serialization-schema-checker-1.0.0.pom
|
||||
```
|
||||
|
||||
---
|
||||
@@ -157,8 +157,8 @@ com/codechecker/cache-schema-checker/1.0.0/
|
||||
OLD_SHA=$(git rev-parse origin/$(git branch --show-current)~3) # 示例:假设 ahead 3
|
||||
NEW_SHA=$(git rev-parse HEAD)
|
||||
|
||||
java -jar /path/to/cache-schema-checker-1.0.0.jar \
|
||||
--config .gitea/config/cache-schema-check-config.yaml \
|
||||
java -jar /path/to/serialization-schema-checker-1.0.0.jar \
|
||||
--config .gitea/config/serialization-schema-check-config.yaml \
|
||||
--repo-root . \
|
||||
--old-sha "$OLD_SHA" \
|
||||
--new-sha "$NEW_SHA" \
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
> 版本:v0.2
|
||||
> 日期:2026-07-15
|
||||
> 状态:**方案已落地(含 Kafka),开发未启动**
|
||||
> 关联:复用 `cache-schema-checker` 的 Schema 提取、Diff、企微通知与 CI 框架
|
||||
> 关联:复用 `serialization-schema-checker` 的 Schema 提取、Diff、企微通知与 CI 框架
|
||||
> 业务样本仓:`jnpf-java-cloud`(**RocketMQ + Kafka**)
|
||||
|
||||
---
|
||||
@@ -124,7 +124,7 @@ public void handleMessage(String message) {
|
||||
|
||||
### 3.1 产品形态
|
||||
|
||||
并入现有 `cache-schema-checker`(或后续更名 `serialization-schema-checker`):
|
||||
并入现有 `serialization-schema-checker`:
|
||||
|
||||
- 同一 CLI / 流水线 / Schema Diff / 企微模板
|
||||
- 配置增加 `mq_patterns`(含 RocketMQ + Kafka)
|
||||
|
||||
36
docs/实施方案.md
36
docs/实施方案.md
@@ -104,12 +104,12 @@
|
||||
schemaCheck 仓库
|
||||
├── 开发 Java 分析工具
|
||||
├── mvn package 打 fat-jar
|
||||
├── 发布到 Nexus:com.codechecker:cache-schema-checker:{version}
|
||||
├── 发布到 Nexus:com.codechecker:serialization-schema-checker:{version}
|
||||
└── 提供默认配置模板
|
||||
|
||||
jnpf-java-cloud 仓库
|
||||
├── .gitea/workflows/cache-schema-check.yaml
|
||||
├── .gitea/config/cache-schema-check-config.yaml
|
||||
├── .gitea/workflows/serialization-schema-check.yaml
|
||||
├── .gitea/config/serialization-schema-check-config.yaml
|
||||
└── push 时下载 jar 并执行检测
|
||||
```
|
||||
|
||||
@@ -119,11 +119,11 @@ jnpf-java-cloud 仓库
|
||||
flowchart TB
|
||||
subgraph Gitea["Gitea Push Pipeline"]
|
||||
A[push 事件] --> B[浅克隆 old/new 提交]
|
||||
B --> C[下载 cache-schema-checker.jar]
|
||||
B --> C[下载 serialization-schema-checker.jar]
|
||||
C --> D[java -jar 执行检测]
|
||||
end
|
||||
|
||||
subgraph Checker["cache-schema-checker (JDK 11)"]
|
||||
subgraph Checker["serialization-schema-checker (JDK 11)"]
|
||||
D --> E[GitDiffScanner]
|
||||
E --> F[RedisWritePointDetector]
|
||||
F --> G[JavaSchemaExtractor]
|
||||
@@ -196,8 +196,8 @@ schemaCheck/
|
||||
│ ├── resources/fixtures/{tenant,lock,template}/
|
||||
│ └── java/...
|
||||
├── .gitea/
|
||||
│ ├── workflows/cache-schema-check.yaml
|
||||
│ └── config/cache-schema-check-config.yaml
|
||||
│ ├── workflows/serialization-schema-check.yaml
|
||||
│ └── config/serialization-schema-check-config.yaml
|
||||
└── target/ # 构建产物
|
||||
```
|
||||
|
||||
@@ -205,11 +205,11 @@ schemaCheck/
|
||||
|
||||
```xml
|
||||
<groupId>com.codechecker</groupId>
|
||||
<artifactId>cache-schema-checker</artifactId>
|
||||
<artifactId>serialization-schema-checker</artifactId>
|
||||
<version>1.0.0</version>
|
||||
```
|
||||
|
||||
打包为 **shaded/fat jar**,主类:`com.codechecker.cache.cli.CacheSchemaCheckerMain`
|
||||
打包为 **shaded/fat jar**,主类:`com.codechecker.cache.cli.SerializationSchemaCheckerMain`
|
||||
|
||||
---
|
||||
|
||||
@@ -218,8 +218,8 @@ schemaCheck/
|
||||
### 6.1 CLI 参数
|
||||
|
||||
```bash
|
||||
java -jar cache-schema-checker-1.0.0.jar \
|
||||
--config .gitea/config/cache-schema-check-config.yaml \
|
||||
java -jar serialization-schema-checker-1.0.0.jar \
|
||||
--config .gitea/config/serialization-schema-check-config.yaml \
|
||||
--repo-root /path/to/jnpf-java-cloud \
|
||||
--old-sha abc123 \
|
||||
--new-sha def456 \
|
||||
@@ -256,7 +256,7 @@ java -jar cache-schema-checker-1.0.0.jar \
|
||||
|
||||
#### Step 1:加载配置
|
||||
|
||||
读取 `cache-schema-check-config.yaml`,合并默认值(见 `docs/配置说明.md`)。
|
||||
读取 `serialization-schema-check-config.yaml`,合并默认值(见 `docs/配置说明.md`)。
|
||||
|
||||
#### Step 2:Git Diff 扫描
|
||||
|
||||
@@ -444,15 +444,15 @@ manual_mappings:
|
||||
| 层级 | 位置 | 职责 |
|
||||
|------|------|------|
|
||||
| 默认配置 | 工具 jar 内 `default-config.yaml` | 检测模式、忽略规则等默认值 |
|
||||
| 业务覆盖 | `jnpf-java-cloud/.gitea/config/cache-schema-check-config.yaml` | mode、notify、include_modules、manual_mappings |
|
||||
| 业务覆盖 | `jnpf-java-cloud/.gitea/config/serialization-schema-check-config.yaml` | mode、notify、include_modules、manual_mappings |
|
||||
|
||||
合并规则:**业务配置覆盖默认配置**,未声明的项沿用默认值。
|
||||
|
||||
CLI 调用:
|
||||
|
||||
```bash
|
||||
java -jar cache-schema-checker.jar \
|
||||
--config .gitea/config/cache-schema-check-config.yaml \
|
||||
java -jar serialization-schema-checker.jar \
|
||||
--config .gitea/config/serialization-schema-check-config.yaml \
|
||||
...
|
||||
```
|
||||
|
||||
@@ -482,13 +482,13 @@ notify:
|
||||
详见 `docs/CI集成说明.md`。核心流程:
|
||||
|
||||
```yaml
|
||||
# jnpf-java-cloud/.gitea/workflows/cache-schema-check.yaml(要点)
|
||||
# jnpf-java-cloud/.gitea/workflows/serialization-schema-check.yaml(要点)
|
||||
# 检出:浅克隆 tip(depth 1)
|
||||
# 检测:--old-sha = gitea.event.before,--new-sha = gitea.sha
|
||||
# 按需 fetch before 提交对象,覆盖一次 push 的多 commit 累计 diff
|
||||
```
|
||||
|
||||
完整模板见 `docs/CI集成说明.md` / `.gitea/workflows/cache-schema-check.yaml`。
|
||||
完整模板见 `docs/CI集成说明.md` / `.gitea/workflows/serialization-schema-check.yaml`。
|
||||
|
||||
---
|
||||
|
||||
@@ -600,7 +600,7 @@ notify:
|
||||
| # | 决策项 | 结论 |
|
||||
|---|--------|------|
|
||||
| 1 | 阻断范围 | `block` 模式下 **任意结构变更均阻断**(exit 1) |
|
||||
| 2 | 发布坐标 | 独立产物 `com.codechecker:cache-schema-checker:1.0.0` |
|
||||
| 2 | 发布坐标 | 独立产物 `com.codechecker:serialization-schema-checker:1.0.0` |
|
||||
| 3 | 配置归属 | **双层配置**:jar 内 `default-config.yaml` + 业务仓覆盖合并 |
|
||||
| 4 | 上线策略 | 先 `notify` ,稳定后手动切 `block` |
|
||||
| 5 | 检测范围 | **仅 `src/main/java`**,不扫描测试代码 |
|
||||
|
||||
18
docs/配置说明.md
18
docs/配置说明.md
@@ -1,8 +1,8 @@
|
||||
# 缓存序列化结构检测 — 配置说明
|
||||
# 序列化结构检测 — 配置说明
|
||||
|
||||
> **双层配置**:工具 jar 内置 `default-config.yaml`(默认) + 业务仓库 `.gitea/config/cache-schema-check-config.yaml`(覆盖)
|
||||
> 工具坐标:`com.codechecker:cache-schema-checker:1.0.0`
|
||||
> 主类:`com.codechecker.cache.cli.CacheSchemaCheckerMain`
|
||||
> **双层配置**:工具 jar 内置 `default-config.yaml`(默认) + 业务仓库 `.gitea/config/serialization-schema-check-config.yaml`(覆盖)
|
||||
> 工具坐标:`com.codechecker:serialization-schema-checker:1.0.0`
|
||||
> 主类:`com.codechecker.cache.cli.SerializationSchemaCheckerMain`
|
||||
|
||||
---
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
```text
|
||||
jar 内 default-config.yaml(工具仓维护)
|
||||
↓ 深度合并
|
||||
业务仓 cache-schema-check-config.yaml(业务仓维护)
|
||||
业务仓 serialization-schema-check-config.yaml(业务仓维护)
|
||||
↓
|
||||
最终生效配置
|
||||
```
|
||||
@@ -23,7 +23,7 @@ jar 内 default-config.yaml(工具仓维护)
|
||||
### 1.1 业务仓最小配置示例
|
||||
|
||||
```yaml
|
||||
# jnpf-java-cloud/.gitea/config/cache-schema-check-config.yaml
|
||||
# jnpf-java-cloud/.gitea/config/serialization-schema-check-config.yaml
|
||||
enabled: true
|
||||
mode: notify
|
||||
|
||||
@@ -78,7 +78,7 @@ notify:
|
||||
# 无变更时是否也发通知(一般 false)
|
||||
notify_on_clean: false
|
||||
# 消息标题前缀
|
||||
title_prefix: "[缓存结构变更]"
|
||||
title_prefix: "[序列化结构变更]"
|
||||
|
||||
# 忽略规则
|
||||
ignore:
|
||||
@@ -182,7 +182,7 @@ mode: block
|
||||
| `webhook_url` | string | `""` | 企微机器人 Webhook 完整 URL(优先) |
|
||||
| `webhook_env` | string | — | 兼容旧字段;值为 `http` 开头时当作 URL |
|
||||
| `notify_on_clean` | boolean | false | 无变更时是否通知 |
|
||||
| `title_prefix` | string | [缓存结构变更] | 消息标题前缀 |
|
||||
| `title_prefix` | string | [序列化结构变更] | 消息标题前缀 |
|
||||
|
||||
### 3.4 ignore.key_patterns
|
||||
|
||||
@@ -299,7 +299,7 @@ suppressions:
|
||||
### 5.3 示例(已解析 key)
|
||||
|
||||
```markdown
|
||||
## [缓存结构变更] jnpf-java-cloud
|
||||
## [序列化结构变更] jnpf-java-cloud
|
||||
|
||||
> **分支**: code/redis_change_detection_v1.0
|
||||
> **提交**: cedd161c → 67c8a6eb
|
||||
|
||||
Reference in New Issue
Block a user