logo
0
0
WeChat Login

fix(deps): Testcontainers 1.19.7 → 1.20.6 修复 CAP_NET_RAW + FB-02 二次沉淀#6

Merged
created 2 weeks ago
main
fix/testcontainers-cap-net-raw
Edit
OverviewCommits
2
Files changed
4
Attachments

CI 失败根因

CI 流水线运行 OpenApiExportTest / Req1OrderCreateTest 时失败:

Can not deserialize value of type Capability from String "CAP_NET_RAW":
  value not one of declared Enum instance names:
  [ALL, SYS_BOOT, ..., NET_RAW, ...]

较新的 Docker daemon(CNB 的 DinD)在 HostConfig.CapDrop 返回带 CAP_ 前缀的枚举值,而 Testcontainers 1.19.7 内嵌的 docker-javaCapability 枚举只识别不带前缀的名称。结果:容器启动成功但 inspect 调用解析崩溃,判定启动失败。

修复

testcontainers.version: 1.19.7 → 1.20.6(同大版本末版最稳健,可识别 CAP_* 前缀)。

顺带沉淀到框架

这是 FB-02 的二次验证——第一次在 macOS + OrbStack 暴露为 API 版本号协商失败,这次在 CI 的 DinD 暴露为枚举反序列化失败。同一根因族(docker-java 与 daemon 的协议漂移),之前误以为是 macOS 独有问题,事实是任何足够新的 Docker 环境都会出现

沉淀动作:

位置改动
.archived/feedback/FB-02-*.md新增"二次症状"章节 + 抽象为通用启示
cicd-pipeline/SKILL.md §硬约束新增"把 Testcontainers 当常规依赖定期升级"硬约束
cicd-pipeline/SKILL.md §踩坑新增"CI 使用较新 DinD"场景
LESSONS.md第 11 条反模式:基础设施依赖长期锁定 vs 定期升级

3 个 commit

#Commit说明
1fix(deps)Testcontainers 版本升级
2docs(framework)FB-02 二次沉淀 + cicd-pipeline 硬约束 + LESSONS 第 11 条

验证

  • ✅ 本地 Docker JDK 17 真实跑单元测试:15/15 PASS
  • ✅ lint 0 错误
  • 🟡 功能测试的 Testcontainers 启动验证依赖 CI Linux runner 完成(macOS 本地受 FB-02 原问题干扰)

下一步

合并后让 CI 二次验证功能测试能否启动容器。如果 1.20.6 仍不行,再考虑 1.21.3。

is using the squash method to merge into38689c2f
fix(deps): Testcontainers 1.19.7 → 1.20.6 修复 CAP_NET_RAW + FB-02 二次沉淀 (#6)
added 2 commits
docs(rules): LESSONS §四 修订——覆盖首次演练错误描述 + A/B 分层 + 反模式 A7
docs(meta): CHECKPOINT §四 轮次 14-e 追加——方向 F1 四 PR 经验回写档案
docs(share): workshop-share.md 新增 M9·CI 平台坑点实证清单(第 9 种治理模式)

Successfully merged and closed

branch can be safely deleted
Reviewer
None yet
Assignee
None yet
Label
None yet
Participant