
OpenSandbox Helm 发布流程与E2E验证从打包到上线的完整链路【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandboxOpenSandbox 是一个面向 AI Agent 的安全、快速、可扩展的沙箱运行时Sandbox Runtime。本文将带你完整看懂它Helm Chart 发布流程与E2E 验证机制从创建发布标签、验证 Chart 包完整性到在 Kind 集群里真实安装并跑通沙箱全生命周期最终标记为production-ready正式发布。无论你是想深入了解其质量保障体系还是想参考一套可落地的 Helm 发布实践这篇指南都能帮你快速上手。OpenSandbox Helm 发布全景6 个关键步骤OpenSandbox 的 Helm 发布不是打个 tag 就完事而是一条环环相扣的流水线。核心脚本都集中在 scripts/release/ 目录每一步都有明确的脚本负责步骤做什么对应脚本① 创建发布标签规范化 tag、自动生成 Release Notescreate-release.sh② 源码可达性验证确认发布 commit 来自主干verify-release-ref.sh③ Chart 包校验版本、lint、渲染、内嵌子图检查verify-helm-package.sh④ Kind 集群冒烟安装精确的 .tgz 并检查控制面健康smoke-helm-release.sh⑤ 沙箱生命周期 E2E创建→执行→清理验证全链路run-helm-release-e2e.sh⑥ 正式发布草稿发布→资产校验→公开publish-helm-release.sh完整的发布自动化背景标签规则、审批模型、Release Notes 格式见官方文档docs/community/release-automation.md。如何创建发布标签一条命令搞定 dry-run 预览Helm Chart 的发布采用tag 驱动模式标签命名规范为helm/opensandbox/版本号不带v前缀例如scripts/release/create-release.sh --target helm/opensandbox --version 0.2.2 --push这条命令背后做了四件大事标签规范校验SDK/Server 类目标使用target/vversionHelm/Docker 类目标使用target/version脚本自动区分防止手滑打错自动生成分类 Release Notes扫描上一个 tag 到 HEAD 之间的提交按feat:/fix:/BREAKING CHANGE自动归类到 ✨ Features、 Bug Fixes、⚠️ Breaking Changes、 Misc 四个区块并附上贡献者列表路径过滤降噪helm/opensandbox目标只统计 kubernetes/charts/opensandbox 目录下的变更避免无关提交污染发布说明安全默认值不加--push绝不推送标签--dry-run模式可预览完整计算结果且零副作用找不到上一个标签时直接失败避免发布区间错误。值得强调的是双人控制Two-person control机制非 dry-run 发布需要另一个维护者在release环境审批且触发者不能审批自己的部署——发起发布的人和批准发布的人必须是两个人。发布前验证源码可达性与 Chart 包完整性源码可达性检查verify-release-ref.sh 会在发布前拉取origin/main用git merge-base --is-ancestor确认发布 commit 必须来自主干分支杜绝从随机分支发布野版本。Chart 包结构校验verify-helm-package.sh 则像一个质检员对已打包的.tgz做静态检查三重版本一致性Chart 名、Chart version、appVersion 必须与期望值完全一致当前 Chart 定义见 Chart.yamlhelm lint模板语法与配置规范检查默认渲染验证执行helm template确认渲染出的主镜像 tag 与 appVersion 匹配内嵌子图完整性OpenSandbox 是一体式All-in-OneChart必须内嵌 opensandbox-controller、opensandbox-server、opensandbox-node-agent 三个子图缺一不可渲染安全断言默认渲染结果中不允许出现--containerd-socket-path等可选危险参数。Kind 集群 E2E 冒烟把发布包真正装进集群静态校验只是纸面功夫smoke-helm-release.sh 才是重头戏——它把发布工作流打包出来的那个精确 .tgz而不是源码重新构建的产物装进一个临时 Kind 集群逐项验证。冒烟测试覆盖的验证点相当密集可以归纳为四类环境准备创建唯一命名的 Kind 集群默认锁定 Kubernetes v1.30.13强制要求linux/amd64节点所有镜像先拉取并记录RepoDigest与镜像 IDdigest 镜像由集群直接拉取确保记录在案的镜像身份与实际运行的镜像身份一一对应安装与就绪helm install精确包等待batchsandboxes、pools、sandboxsnapshots三个 CRD 全部 Establishedcontroller 与 server 两个 Deployment 完成 rolloutAPI 行为断言通过 port-forward 访问 Server/health必须返回healthy/version必须与内嵌 server 图的 appVersion 一致无 API Key 请求返回 401 MISSING_API_KEY错误 Key 返回 401 INVALID_API_KEY正确 Key 才返回 200 且响应结构合法稳定性复查rollout 成功后再等 15 秒二次检查 Pod专门捕捉延迟崩溃和就绪状态回退。即使全部通过测试结束后脚本仍会完整收集诊断产物Pod 日志、CRD 清单、Helm 状态、events 等并安全销毁自己创建的集群保证 CI 环境零残留。沙箱生命周期 E2E从创建到清理的全链路验证冒烟环境就绪后run-helm-release-e2e.sh 通过uv run pytest执行两个核心用例test_01_sandbox_lifecycle_and_health沙箱完整生命周期与健康检查test_02_basic_command_execution在沙箱内真实执行命令并验证输出。E2E 过程中还有一个隐藏的运行时观察者runtime observer它每 1 秒轮询一次沙箱命名空间独立于测试用例本身记录证据——必须观察到至少一个ReadyTrue 的 BatchSandbox必须观察到至少一个运行 Podexecd-installerinit 容器退出码为 0、sandbox容器 ready 且无重启、镜像 ID 已解析两者的sandbox ID 必须能对上证明CR 层与Pod 层是同一条沙箱记录测试清理后BatchSandbox 和运行时 Pod 数量必须回落到0不允许资源泄漏。这相当于给发布包能否真正跑起一个沙箱上了双保险测试断言一层、独立观察记录一层任何一层缺失都会判定发布失败。正式发布从 Draft Release 到 production-ready最后一步由 publish-helm-release.sh 完成它对资产一致性的偏执程度堪称教科书级别先以 Draft草稿状态创建 Release上传opensandbox-version.tgz与SHA256SUMS两个资产往返校验重新下载已上传资产逐字节比对 SHA-256、文件大小、资产 ID确认上传的与发布的是同一份字节发布后再次全量复检Release 标题、Notes 中的版本/commit/校验和等关键字段、资产元信息全部重新核对任何漂移直接中止写入发布状态若精确包通过了 Kind 运行时门禁 → 标记production-readyRelease Notes 会记录所有被测镜像的引用、Registry Digest 与镜像 ID独立子图controller / server / node-agent发布则标记package-verified只做包级验证不宣称运行时可用。也就是说只有那个被 E2E 实测过的 .tgz 才能被称为生产可用而 Release Notes 本身就是可追溯的证据链来源 tag、commit、校验工作流 run ID、镜像身份一应俱全。用户侧验证如何确认 Helm Chart 没被篡改作为使用者安装前也有一套轻量验证手段sha256sum -c SHA256SUMS # 校验包字节 gh attestation verify opensandbox-0.2.2.tgz \ --repo opensandbox-group/OpenSandbox \ --signer-workflow opensandbox-group/OpenSandbox/.github/workflows/publish-helm-chart.yml \ --source-ref refs/tags/helm/opensandbox/0.2.2Chart 包与校验文件均附带 Sigstore 无密钥keyless签名与 provenance 溯源详细命令见 docs/community/release-verification.md。普通用户日常只需执行sha256sum -c SHA256SUMS即可快速确认完整性。发布相关路径速查资源相对路径一体化 Chart 定义kubernetes/charts/opensandbox/Chart.yamlChart 使用文档kubernetes/charts/opensandbox/README.md发布自动化说明docs/community/release-automation.md发布物验签指南docs/community/release-verification.md全部发布脚本scripts/release/E2E 用例Pythontests/python/Kubernetes 部署文档docs/kubernetes/deployment.md总结OpenSandbox 的 Helm 发布流程把信任拆解成了可验证的步骤标签规范 → 源码可达 → 包完整性 → 真实集群安装 → 生命周期 E2E → 字节级发布核对。其中production-ready状态的含金量来自一个关键设计——验证的是发布出去的那个精确 .tgz而不是源码的另一个构建。这套打包即验证、发布即可追溯的完整链路值得所有做 Helm 发布的项目参考借鉴。【免费下载链接】OpenSandboxSecure, Fast, and Extensible Sandbox runtime for AI agents.项目地址: https://gitcode.com/GitHub_Trending/ope/OpenSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考