Bundle 定义与资源选择
在数据库中维护统一 BundleDefinition,按准确修订创建不可变版本。
Bundle Service 是 Bundle 定义的唯一 Owner。当前可编辑定义和不可变发布内容都使用 BundleDefinition 23.0.0,不再区分作者格式与发布格式,也不需要 Bundle Git 仓库。 Module、前端、Hosted Service 等资源实现的源码仓库继续由各自 Owner 管理。
平台应用和 Workflow 创建版本时,服务端从数据库定义的同一次快照解析已选择的资源版本,并校验实际定义修订。资源实现源码仍由各自项目维护;无需创建 Bundle Git 项目。
结构见 BundleDefinition 23.0.0 Schema,对象关系见Bundle 定义与资源声明。CLI 工作流需要支持数据库定义的版本;默认新建与本文查询命令使用 CLI 0.166.0 及已部署的对应平台接口。
创建与编辑
baijimu bundle create --workspace-id <workspaceId> --name <name>
baijimu bundle definition read <bundle> --workspace-id <workspaceId> --json创建返回服务分配的 bundleId、初始 revision 和定义。省略 --definition 时,初始定义没有资源。
读取结果中的 data.definition 是完整定义;将它保存为本地 definition.json 作为编辑输入,并记录同一次读取的 data.revision。
本地文件不是第二份平台源事实,也不要求固定文件名或 Git 提交。
在资源 Owner 创建精确版本后,将其返回的类型、稳定资源键和版本写入 resources,再提交完整定义:
baijimu bundle definition update <bundle> --workspace-id <workspaceId> \
--expected-revision <revision> --definition @definition.json服务返回新修订号。修订冲突时重新读取并合并自己的修改,不覆盖其他人的新内容。 创建资源或资源版本不会自动纳入 Bundle;修改定义也不会自动发布或改变已经安装的资源。
唯一内容结构
{
"schemaVersion": "23.0.0",
"resources": [
{"resourceType": "MODULE", "resourceKey": "orders-module", "semanticVersion": "1.3.0"},
{"resourceType": "PLATFORM_APPLICATION", "resourceKey": "orders-console", "semanticVersion": "1.2.0"}
],
"propertyDefinition": [],
"configuration": {"resourceBindings": []}
}创建资源时必须明确指定稳定资源键,Owner 原样保存并返回。Workflow 的创建请求将 resourceKey 放在定义外;Workflow 作者定义内不得包含 code。
示例资源键用于说明结构;实际身份必须取自资源 Owner,不能根据显示名猜测或使用版本行 ID。
顶层字段为 schemaVersion、resources、propertyDefinition、configuration;后两项可省略,使用对应的空定义。
没有 definition 外壳、嵌套内容版本、dependencies、lifecyclePlugins 或管理器声明。
需要 Bundle 管理器时,按管理器关系独立设置,不发布另一个 Bundle 版本来设置关系。
resources: [] 是合法的空定义,表示没有选择资源,不表示平台稍后会自动发现或纳入资源。
每项保存 resourceType、resourceKey 和精确 semanticVersion;同一类型与资源键不能重复,不接受 latest 或版本范围。
资源类型使用已登记的开放标识;语法合法不代表目标环境已经支持。
| 资源 | resourceType |
|---|---|
| Module | MODULE |
| Skill / Agent | SKILL / AGENT |
| 平台应用 | PLATFORM_APPLICATION |
| Workflow / Timer | WORKFLOW / TIMER |
| 普通事件 / 设备事件触发器 | EVENT_TRIGGER / DEVICE_EVENT_TRIGGER |
| 独立权限 / 角色 | PERMISSION / ROLE |
Type Definition 和独立 Issue Definition Package 不进入 Bundle 的资源清单。 旧权限定义集、角色模板集必须先按各自 Owner 合同迁移为独立资源,不能直接纳入新版本。
查询所选精确版本
baijimu bundle definition selected-version <bundle> --workspace-id <workspaceId> \
--definition-revision <revision> --resource-type MODULE \
--resource-key <ownerReturnedResourceKey> --version <resourceVersion>查询绑定数据库中明确的一次定义修订,返回所选资源的精确身份、Owner 内容及配置描述;敏感默认值会脱敏。 对象未纳入该修订、版本不同或修订已变化时明确失败,不选择 latest,也不读取 Git 或安装账猜测。 通用引用数组按同一修订解析:
baijimu bundle definition references <bundle> --workspace-id <workspaceId> \
--definition-revision <revision> --references @references.json引用对象按资源 Owner 的正式合同填写;跨包来源继续需要明确的来源身份和精确版本。
创建不可变版本
baijimu bundle version create <bundle> --workspace-id <workspaceId> \
--definition-revision <revision> --version <bundleVersion>服务校验资源精确版本和归属,并在写入前再次核对定义修订。成功后,该 Bundle 版本的内容不可变;之后编辑当前定义不会改变历史版本。 版本创建不会自动提交市场或安装升级。分发与安装见版本与交付。
Git 作者入口已退役
Bundle Service 243.0.1 起,旧 Git Bundle 的创建、绑定、发布及作者引用入口已退役。当前定义只使用数据库修订;不会因错误或缺少修订回退 Git。 历史文件仅供历史格式识别,不再作为开发入口。资源自己的源码项目继续保留。 迁移和仓库归档须核对当前主线、分支及未发布内容,保留后续合法变更;不会改写历史版本或自动重放安装。