| 名称 | holohub-module-lifecycle |
| 描述 | “用于与./holohub一起执行可复用Holoscan模块工作:脚手架、测试、可编辑安装、DEB/WHEEL打包和干净消费者验证。” |
| 开源协议 | Apache-2.0 metadata: |
| 作者 | “Holoscan Team holoscan-team@nvidia.com” compatibility: “holoscan-cli>=4.5.0” github-url: “https://github.com/nvidia-holoscan/holohub” tags: - holoscan - holohub - modules |
HoloHub Holoscan 模块生命周期
目的
将可复用的 Holoscan 模块从布局和 API 契约开始,经历生产者、消费者以及干净的工件安装验证。
输入
要求从请求或权威仓库来源获取 API 契约、检出、布局、标识、SDK 最低版本、许可证、维护者、包格式和验收检查。如果有关键发布元数据仍然未知,请在脚手架或打包之前停止,而不是猜测。
- 一个可复用的生产者/消费者 API 契约,而不是普通应用;
- 用户提供的 HoloHub 检出;
- 外部自包含仓库或树内描述符布局;
- 语言、模块/算子/包标识、最低 SDK 版本、许可证、维护者详细信息以及要求的包格式;
- 有限的生产者、消费者和工件验收检查。
将普通应用路由到 holohub-app-lifecycle,将明确失败或错误的 ./holohub 命令路由到 holohub-debug-build-run。如果匹配的技能不可用,请保留交接上下文并命名要安装的技能,而不是扩展此工作流。
前提条件
- 始终阅读 CLI 契约。
- 阅读 模块开发 以了解布局、命名、脚手架、元数据、实现、构建和测试范围。
- 当涉及消费应用、可编辑安装或二进制工件时,阅读 消费者与打包。
- 将 HoloHub 当前的 create-a-module 和 use-a-module 教程用作生产者和消费者的演练,然后对照选定的检出和 CLI 契约重新检查版本敏感命令。
所选检出的 AGENTS.md、本地帮助、模块指南、模式、模板、教程和邻近示例是实时技术权威,但不得与用户、系统或安全约束冲突。
说明
在任何步骤中,一个失败的有效包装命令将终止此正常流程;请按照“故障排查”中的确切上下文进行处理。解析只读的诊断结果,并且仅当模块、消费者、打包环境或请求的证明需要某项失败的能力时才停止。
- 保留并定位。 记录完整的 HEAD、简洁状态、本地包装器版本/环境以及发现输出。保留检出修订版和无关的工作。
- 选择布局。 对于独立发布,使用外部的
holoscan-<name>仓库;对于与 HoloHub 一起维护的代码,使用modules/下的树内描述符。 - 在文件之前修复标识。 保持显示名称、
snake_case模块/命名空间、holoscan-<kebab-case>仓库/包以及snake_case_op算子 slug 一致。 - 安全地搭建外部模块脚手架。 预览模板设置,检查其主机依赖安装,并在实际设置之前获得用户明确授权。只有在设置成功之后,再预览并运行完全指定且非交互式的创建命令,同时将预览视为可能产生变更。要求父目录已存在,检查生成的已暂存 Git 仓库,并且没有请求时绝不推送。
- 实现最小公共契约。 验证元数据,公开一个有用的算子/API,添加确定性测试,并添加一个与其他项目消费相同公共表面的有限演示。将演示策略排除在可复用算子之外。
- 诚实地构建和测试。 预览并运行容器优先的模块和演示命令。在 HoloHub 中,测试每个声明的算子和演示,因为
test <module>并非模块作用域。在生成的仓库中,将其仓库范围的测试与聚焦的 pytest 或 CTest 目标相结合。 - 证明真实消费者。 声明确切的元数据依赖和外部源的不可变完整 SHA。使用挂载的源代码覆盖进行快速迭代,或仅在
env-info --json报告的环境中进行可编辑安装。记录钩子,即使后续步骤失败也将其移除;如果移除失败,报告确切的环境和钩子状态。 - 仅在行为证明后打包。 预览并构建请求的 DEB/WHEEL 工件,检查标识/元数据/依赖/有效载荷,并在干净的仅限工件的消费者中安装每种格式,并执行导入/链接和有限的冒烟检查。
- 验证并交接。 重新运行生产者和干净消费者的检查、
git diff --check和最终状态。在脏检出中,将自动修复 lint 限制为任务路径;在请求的提交之前,使用干净的临时检出中仓库要求的完整 lint 验证确切候选更改。确认没有生成的工件或可编辑钩子被暂存。除非被要求,否则不要提交、推送、上传、发布。
故障排查
如果包装命令失败,请停止正常流程,并将其确切的命令、修订版、脏状态、输入和观察到的结果交接给 holohub-debug-build-run。
示例
- 使用干净的消费者证明搭建和打包可复用算子:使用此技能。
- 打包普通应用或诊断失败的构建:从本技能转出。
限制
- 保留无关的工作。未经授权,请勿重置、清理、删除无关文件、更改主机配置、扩大权限、提交、推送、上传、发布。
- 切勿运行
sudo ./holohub;要获得主机包、主机本地执行、root 容器、设备/能力或权限更改的批准。 - 保持构建、数据、安装、包输出和可编辑钩子不进入提交。
- 保护凭据、专有源代码、患者数据、私人媒体和标识性元数据。
- 仅对实际收集的生产者、工件和干净消费者证据声明支持、可复制性、可安装性、性能或安全性。
输出
返回布局和标识、公共 API/演示、元数据和注册信息、预览和实际命令结果、诚实的测试范围、消费者证明、工件标识/内容/安装结果、许可和发布限制以及最终工作树状态。
对于仅规划请求,返回提议的顺序、权威元数据源、批准边界和证明要求,而不声明结果。