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

    Fields

    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