SuperAPI AI 工具集

add-hub-template

部署与运维

查看项目

更新于 10-15 17:27

技能介绍

用途:在 hub/<name>/ 下新增或更新 Blaxel Sandbox Hub 镜像/模板,既包括用户可见模板,也包括隐藏/内部运行时镜像。编辑前先查看相关作用域的仓库说明,并可参考临近模板:基础类 hub/base-image、hub/node、hub/ts-app、hub/py-app;entrypoint 示例 hub/expo、hub/vite、hub/nextjs;隐藏/内部示例 hub/benchmark、hub/vibekit-*。同时检查 git 状态,保留无关的用户改动。

主要文件:需创建或更新 hub/<name>/Dockerfile、hub/<name>/template.json、.github/workflows/build.yaml;本地测试通常更新 docker-compose.yaml;仅对用户可见模板更新 README.md,隐藏/内部镜像不列入普通模板。

Dockerfile 规则:沿用多阶段模式,包含 ARG SANDBOX_VERSION=latest 与 FROM ghcr.io/blaxel-ai/sandbox:${SANDBOX_VERSION} AS sandbox-api 阶段,将 /sandbox-api 复制到 /usr/local/bin/sandbox-api 并 chmod +x,EXPOSE 8080,ENV HOME=/blaxel,ENTRYPOINT 指向 sandbox-api。仅当端口为模板固有时才暴露应用/开发端口,平台托管的隐藏镜像不要暴露动态应用端口。如需要 entrypoint 脚本,让 sandbox-api 继续作为控制面并测试真实启动路径。运行时依赖要显式;若 runner 支持 s3://、gs:// 或 Azure Blob,需安装并测试 rclone。

template.json 规则:使用含 name、displayName、categories、description、longDescription、url、icon、memory、ports、enterprise、coming_soon 的最小结构;隐藏/内部镜像加 "hidden": true。只在 template.json 中放稳定端口,动态端口不写入。

构建工作流:新增镜像时在 .github/workflows/build.yaml 的 on.workflow_dispatch.inputs.sandbox.options 下添加 <name>,保持大致字母序;自动构建矩阵依据 hub/ 下目录,dispatch 选项需手动维护。docker-compose 中按需添加服务,仅当端口为稳定模板端口时暴露。

校验:依次运行 jq empty hub/<name>/template.json、find hub/<name> -maxdepth 1 -name '*.sh' -print -exec sh -n {} ; 与 ruby -e 'require "yaml"; YAML.load_file(".github/workflows/build.yaml"); puts "yaml-ok"'。构建使用 docker build --platform linux/amd64 -t blaxel/<name>:test -f hub/<name>/Dockerfile .;在 Apple Silicon 上优先显式平台而非 compose build。如有 runner 或 entrypoint 脚本,需在镜像内用真实环境变量和挂载测试输入做冒烟测试,验证所需二进制存在、源物化、钩子顺序及最终命令行为;可行时启动 sandbox API 并检查 curl http://localhost:8080/health 与 POST /process(command 为 echo hello 且 waitForCompletion 为 true)。最终清单核对各项,未经用户确认不得执行任何公开动作、提交、推送、PR 或部署。