模块冻结与 Bundle 交付
从项目 Git 快照创建模块版本,再由 Bundle 统一发布和安装。
创建模块版本
先检查项目 Git 状态和差异,只提交预期的 module.json 与 methods/*.json:
HTTP 方法的 methodBody 必须先按
HTTP methodBody 源契约
收敛为 snake_case;兼容读取旧字段不代表新提交可以继续写驼峰。
baijimu project checkout <projectId> --workspace-id <workspaceId> --directory <directory>
cd <directory>
git status --short
git diff -- module.json
git add -- module.json
git commit -m '<message>'
git push
commitId="$(git rev-parse HEAD)"使用返回的真实 commitId 在所属 Bundle 内冻结新的语义版本:
baijimu bundle module version create <bundle> --workspace-id <workspaceId> --project-id <projectId> \
--module-id <moduleId> \
--version <semanticVersion> \
--git-commit-id <commitId>这一步只让 module-service 生成不可变快照和安装 Artifact,不产生模块市场条目,也不 触发审核或安装。模块没有独立发布入口。
纳入 Bundle
在 Bundle 项目的本地 Git 工作树中,从目录选择已经冻结的模块版本:
baijimu bundle manifest catalog <bundle> module --workspace-id <workspaceId>
baijimu bundle manifest include <bundle> module --workspace-id <workspaceId> \
--file baijimu.bundle.json --name <exactModuleName> --version <moduleVersion>CLI 从当前 Bundle 的 Owner 目录取得 Module 身份并在线核实版本,自动写入作者清单 2.0.0 的 definition.modules。
同名时改用目录返回的 --object-id <moduleId>;这里的身份与创建、读取、冻结模块时使用的 moduleId 相同。
显示名和模块版本行 ID 都不能代替它。无需在 module.json 增加任何身份或登记字段。
首次创建作者文件、预检和旧文件迁移见项目清单。
提交更新后的源码文件,再从精确 Git 提交发布 Bundle 版本:
git add baijimu.bundle.json
git commit -m 'feat: update module version'
git push
commitId="$(git rev-parse HEAD)"
baijimu bundle version publish <bundle> --workspace-id <workspace> \
--version <bundleVersion> --git-commit-id <commitId>Bundle 发布时根据所选 Module 身份、精确版本和归属读取安装 Artifact,由平台生成内部不可变引用。 只冻结模块新版本不会 修改 Bundle,也不会升级任何已安装 Runtime。
验证
- 模块定义归属预期
bundleId。 - 模块版本的
gitCommitId与项目提交一致。 - 版本定义包含预期
module.json和方法文件。 - 作者清单选择的
moduleId + semanticVersion与 Owner 返回的对象及版本相同,在线预检通过。 - 市场审核和安装对象都是 Bundle,不存在独立模块市场记录。
- Bundle 安装后 Runtime 服务版本和方法列表正确。
- 同一模块在同一 Runtime 只能安装一次,安装重试不会生成重复记录。
- Bundle 升级后属性、外部资源标识和用户配置没有被默认值覆盖。
需要由其他用户、工具或自动化接手修改、送审和发布时,使用 Bundle 修改与发布工作流,并由执行用户独立完成 认证和权限校验。项目文档不能转移发布权限,也不能让发布者绕过审核者边界。