Skip to content

chore(services): generate tentacles service registry to reduce merge conflicts #445

Description

@xiaoss

背景

当前新增 service package 时,需要手工同步维护多个集中注册表文件:

  • services/package.jsonbin / files
  • services/bin/octobus-tentacles.js 的 service map
  • services/bin/*.js root wrapper

在多个 service PR 并行时,这些文件会被频繁修改,容易产生 merge conflict;即使合并成功,也可能出现遗漏、重复、不可执行位不一致、package manifest 与实际 service 目录不一致等问题。

相关现象:

需求

新增一个 service registry 生成脚本,例如:

node services/scripts/generate-service-registry.mjs

建议配套 npm scripts:

{
  "registry:generate": "node scripts/generate-service-registry.mjs",
  "registry:check": "node scripts/generate-service-registry.mjs --check"
}

建议设计

生成脚本扫描 services/ 下所有包含 service.json 的 service 目录,并基于每个 service 的声明生成或更新:

  • services/package.json 中的 bin entries
  • services/package.json 中的 files entries
  • services/bin/octobus-tentacles.js 中的 service map
  • 缺失的 services/bin/<service-name>.js root wrapper

脚本应保持稳定排序,避免无意义 diff。

--check 模式只校验生成结果是否与工作区一致,不写文件,用于 CI。

验收标准

  • 新增 services/scripts/generate-service-registry.mjs
  • 新增 registry:generateregistry:check npm scripts。
  • 执行生成脚本后,services/package.jsonservices/bin/octobus-tentacles.js 和 root wrappers 与实际 service 目录一致。
  • registry:check 可在 CI 中发现 registry 未更新、缺失 wrapper、重复 entry、不可执行位缺失等问题。
  • 后续新增 service package 时,主要改动集中在 service 自身目录,降低 services/package.json / octobus-tentacles.js 的人工合并冲突概率。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions