百积木文档
开发指南生命周期插件开发

验证与发布生命周期插件

验证插件契约、Hook 重试、Runtime 隔离、属性输出和注册记录,再完成发布联调。

插件发布分为两个独立结果:插件后端已按它自己的服务所有权发布,以及平台插件注册记录已指向 该版本的稳定 Endpoint。只完成其中一项不代表插件可用。

发布前契约验证

  1. 用每个 supportedHooks 的完整 v1 请求调用 Endpoint。
  2. 验证响应同时包含 errorCodevaluesystemCurrentTime 和成功时的 data
  3. 验证 data.status 为字符串,data.properties 为对象。
  4. 验证空输出返回空 properties,而不是 null
  5. 验证未支持 Hook、非对象 pluginConfig 和缺少必需身份时明确失败。
  6. 验证错误信息不包含凭据、上游响应原文或完整敏感配置。

可重试与资源隔离

场景必须证明的结果
相同 BEFORE_DEPLOY 连续调用只存在一个外部实例,后续调用返回同一引用
第一次调用超时后重试插件先查询已发生的外部效果,不重复创建
两个 Runtime 安装同一服务实例引用、凭据和可变状态相互隔离
BEFORE_DETACH 后再绑定只解除指定 Runtime 绑定,共享外部实例未被误删
BEFORE_DELETE 重试已删除状态被视为已收敛,不因资源不存在创建新资源
ON_CONFIG_UPDATE 重试外部配置与当前输入一致,无重复副作用

属性输出

  • 每个返回属性都存在于当前 propertyDefinitions
  • 输出值符合模块属性的类型表示。
  • 插件只写回明确由它管理的属性。
  • 重试返回相同的外部引用,不用随机值或时间戳改变资源身份。
  • 错误响应不携带部分成功属性,避免调用方无法判断是否应用。

注册记录验证

  1. pluginId 稳定且不包含环境或工作区事实。
  2. executeUrl 指向已发布的完整 Endpoint,不携带凭据。
  3. protocolVersionv1supportedHooks 只包含已实现并完成回归的 Hook。
  4. defaultConfig 是非敏感 JSON 对象,不包含 token、密码、API Key 或数据库凭据。
  5. 单条查询和列表查询中的定义与预期一致。
  6. 使用实际模块兼容绑定触发至少一次完整 Hook,并同时验证平台属性和外部状态。

发布边界

插件后端按其真实所有权发布,不因为被生命周期管理服务调用就改变发布模式。插件注册只更新服务目录, 不代替后端的构建、部署、健康验证和回滚。不得在模块定义或 Bundle 版本中写入真实 Endpoint、访问 token 或数据库凭据。

发布完成后保留:

  • 插件后端的精确版本和健康验证结果。
  • 平台注册记录的查询结果。
  • 各 Hook 契约测试、重试测试和 Runtime 隔离测试结果。
  • 实际 Runtime 触发的属性写回和外部状态证据。
  • 失败时该后端自有发布链的回滚或恢复结果。

本页内容