该技能是 gstack 框架下的一个运行器,用于在 Ubicloud 上创建临时虚拟机执行重型任务。
用途 在 4 核沙盒上需要一小时的完整测试套件或验证,在 standard-16 虚拟机上只需几分钟。该技能旨在提供一种带纪律的临时虚拟机运行方式:每台虚拟机名称携带所有者与 TTL;后续运行会回收过期虚拟机;创建前会进行配额预检,避免填满共享 vCPU 配额;远程命令静默挂起时会被看门狗终止并附带最后输出;仓库的验证定义以提交的配置文件为准,而非每环境一个包装脚本。
主要能力
- 通过
gstack-ubi命令(封装scripts/ubicloud/ubi-runner.sh)提供统一入口,运行$U help可列出所有命令。 - 支持
records、list --mine、usage等命令查看本机创建记录、当前所有者的虚拟机以及按所有者统计的配额占用。 run命令创建虚拟机(默认规格 standard-16,默认位置 eu-central-h1),流式传输代码检出内容(包括已跟踪文件、未被忽略的未跟踪文件和 .git),运行一次 bootstrap 脚本,在登录 shell 中执行命令,可通过--pull拉回产物,最后销毁虚拟机并以命令退出状态退出。- 支持
--env K=V传递字面环境变量、--pass NAME转发本地变量值而不打印、--keep跳过销毁用于调试。 verify命令读取仓库中提交的.gstack/ubicloud.json定义,统一执行验证流程,拒绝缺失文件的情况;支持--trust-config授予文件中列出的所有变量、-s覆盖规格、--指定不同命令。- 内建看门狗:
UBI_IDLE_TIMEOUT默认 1800 秒,UBI_RUN_TIMEOUT默认 0(无限制),UBI_HEARTBEAT默认 300 秒,用于检测挂起并输出最后 40 行。 - 配额预检:通过
UBI_QUOTA_VCPUS设置项目上限,超出时在创建前拒绝;UBI_QUOTA_WAIT可等待配额释放。 - 每次
up前自动执行reap,销毁 TTL 结束超过十分钟的虚拟机(无论所有者);名称不含 TTL 的虚拟机不会被回收。
使用方式
需要设置 UBICLOUD_API_KEY 或 UBICLOUD_API_TOKEN(项目级令牌),以及 UBI_OWNER 标识所有者。建议在启动前进行预检(records、list --mine、usage),设置 UBI_TTL_HOURS 高于最长可能运行时间(默认 4),并在启动超过一小时的任务前在对话中说明预期时长。在 Capy 上使用 bash 工具以 background 模式运行并等待操作 ID;在 Claude Code 下使用 gstack-detach 并轮询日志中的退出哨兵。
适用场景 适合需要临时大规模计算资源执行重型测试套件、构建或评估的开发团队,尤其关注资源配额管理和成本可见性的场景。
限制
需要 Ubicloud API 令牌;依赖 gstack 框架及其命令行工具;验证定义文件中的 setup 和 pull 本地路径必须是相对于 --src 的相对路径,绝对路径、~ 和 .. 会被拒绝;pass 中列出的变量只有通过 --pass 或 --trust-config 显式授予才会转发;运行器进程意外终止时虚拟机可能留存至回收器处理;标准 Ubuntu 24.04 虚拟机默认缺少 clang、python3-venv 以及浏览器测试所需的 xvfb 和 sysctl 配置,需要在 bootstrap 中处理。具体平台可用性、收费和价格信息暂未提供。