Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
J
jingxiaoguan
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 22
    • Issues 22
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • weidongying
  • jingxiaoguan
  • Issues
  • #26

Closed
Open
Opened Aug 28, 2026 by weidongying@weidongyingMaintainer

发布治理:解析服务与 contracts-db schema 版本原子校验

生产故障

上传任务 1905 在将附件合并到待核对草稿时写入 resolution_status=attached_to_unreviewed_draft,被生产库旧 CHECK 约束拒绝。代码已使用该业务状态,但迁移 018 未被生产发布流程应用。

目标设计

将解析服务代码版本与 contracts-db schema 版本作为一个发布单元:部署前验证全部必需迁移,失败时阻止服务切换;不再依赖人工逐个执行 SQL 文件。

实施范围

  • 建立有序、可追踪、幂等的 contracts-db migration runner 与 schema_version 记录。
  • 发布脚本在切换 systemd 服务前执行迁移预检和事务式迁移。
  • 解析服务启动时校验自身所需的最低 schema 版本,不满足则拒绝接收上传并给出明确诊断。
  • 发布后做 contracts-db 约束快照校验;覆盖 018 的 resolution_status 枚举。
  • 为失败任务建立安全恢复流程:保留候选包和来源,迁移成功后通过既有 retry 接口恢复。

验收

任何代码写入新状态而 schema 未升级时,发布被阻断;新上传不会产生 CheckViolation;迁移和重试在测试库与生产演练均可审计、可回滚。

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: weidongying/jingxiaoguan#26