百积木文档
开发指南平台应用、模块与 Bundle 开发模块开发

模块冻结与 Bundle 交付

从项目 Git 快照创建模块版本,再由 Bundle 统一发布和安装。

创建模块版本

先检查项目 Git 状态和差异,只提交预期的 module.jsonmethods/*.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。

验证

  1. 模块定义归属预期 bundleId
  2. 模块版本的 gitCommitId 与项目提交一致。
  3. 版本定义包含预期 module.json 和方法文件。
  4. 作者清单选择的 moduleId + semanticVersion 与 Owner 返回的对象及版本相同,在线预检通过。
  5. 市场审核和安装对象都是 Bundle,不存在独立模块市场记录。
  6. Bundle 安装后 Runtime 服务版本和方法列表正确。
  7. 同一模块在同一 Runtime 只能安装一次,安装重试不会生成重复记录。
  8. Bundle 升级后属性、外部资源标识和用户配置没有被默认值覆盖。

需要由其他用户、工具或自动化接手修改、送审和发布时,使用 Bundle 修改与发布工作流,并由执行用户独立完成 认证和权限校验。项目文档不能转移发布权限,也不能让发布者绕过审核者边界。

本页内容