Skip to content

WP4 · 端口规整 8081/9081 + 契约块刷新 + CI 推 ghcr 镜像(入口收尾) #6

@JIAQIA

Description

@JIAQIA

父 Issue:#3(M1 自拆解简报 · 入口级交付)· WP4

目标

入口级交付收尾:端口规整到基线、刷新本仓契约块、CI 推镜像入 ghcr。三者皆低风险部署/元数据收尾,统一一项。

范围(文件清单)

  1. 端口规整(基线:App=8081 / 管理=9081)
    • application.ymlserver.port: ${SERVER_PORT:8081}management.server.port: ${MANAGEMENT_SERVER_PORT:9081}(现无 server.port → 默认 8080,错)。
    • DockerfileEXPOSEHEALTHCHECK 由 8080 → 8081(liveness 探针走管理端口 9081 时一并改)。
    • docker-compose.local.ymlKeycloak 映射由 8081:8080 改为 8180:8080 —— 现与本服务 App 8081 冲突;基线 Keycloak=8180。本地 profile 连接项随之对齐。
  2. 契约块(本仓 CLAUDE.md
    • producer 由「暂无」改为 openapi/control-plane-v1 + icd/control-plane-provisioning(主仓 registry 已声明本仓为 producer)。
    • ⚠️ 顺手登记已存在的契约↔实现漂移(声明 producer 时正好碰到,不在本 PR reconcile,仅标注为 known-drift / follow-up,免得「契约块声明合规」却掩盖端点已偏):
      • 审批端点形态:契约是单端点 POST /v1/tenants/{id}/approvaldecideApprovalaction: approve|rejectreject→deleted);实现是 /approve + /reject 两端点且 reject→REGISTERED
      • /api 前缀约定:实现统一 /api/v1/...,契约是 /v1/...(server 注释「经网关路由暴露」,推定网关 strip /api,但契约/网关侧未写明——需补一条约定,否则消费方对不上)。
  3. CI 镜像(净新增,本仓无 .github
    • 新建 .github/workflows/*.yml:构建并推 ghcr.io/hashmatrixdata/control-plane:<semver>;制品仓凭据经 secret 注入、不入库(红线)。

起点(精确路径 + 真/stub/缺失)

  • 缺失server.port/management.server.port.github/ CI(确认本仓无 .github)。
  • 现状:application.yml 无端口;Dockerfile:26,29 EXPOSE/HEALTHCHECK=8080;docker-compose.local.yml:36 Keycloak 8081:8080(冲突源);CLAUDE.md 契约块 producer 写「暂无」。

预估 LOC

~90–150(多为 YAML/CI)。

测试

  • 启动后 App 8081、管理 9081;/actuator/health/readiness 绿。
  • CI workflow 构建出镜像并推 ghcr(dry-run / tag 校验)。
  • 本地 compose:Keycloak 8180、control-plane 8081 无端口冲突。

依赖

  • Blocked by:无(与 WP1/WP2 并行)。
  • Blocks:无。

可独立 ship

✅ 纯配置/文档/CI,与 WP1/WP2/WP3 功能解耦。

验收

  • 端口 8081/9081 生效、readiness 绿。
  • 镜像入 ghcr(ghcr.io/hashmatrixdata/control-plane:<semver>)。
  • 本仓 CLAUDE.md 契约块 producer 更新。
  • 已知契约↔实现漂移已登记(审批端点形态 approve/reject↔approval、/api strip 约定)——标注为 known-drift / follow-up,本 PR 不 reconcile。
  • 本地 compose 无端口冲突(Keycloak 8180)。
  • 红线自检过(CI 凭据不入库)。

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions