关于 remote-run
remote-run 是一项使用 BuildBuddy `bb remote` 在远程运行器执行 Bazel 和其他高开销命令的技能,涵盖命令替换、运行器配置、标志持久化与失败处理。
主要功能
- 01远程运行 Bazel 命令
- 02用 `--script` 运行 Shell 命令
- 03配置运行器系统与架构
- 04持久化用户确认的标志
- 05处理远程运行失败
适用场景
- 01在远程运行器执行构建和测试
- 02将高开销 Shell 命令移出本地机器
- 03在多次运行间保留运行器状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ buildbuddy-io/ buildbuddy --skill remote-run安装后在 Claude Code 中输入/remote-run确认已加载。
附带文件persistent-flags.md
详细介绍
bb remote 会在远程运行器中运行命令。这些运行器的计算能力可能更强,并且工作区会在每次运行之间创建快照,从而加快后续运行。
它还会将所有本地 git 差异上传到远程运行器。
获取帮助
如果你不知道如何完成某项任务,请查阅 https://www.buildbuddy.io/docs/remote-bazel 上的文档。不要尝试运行 bb remote --help 或 bb help。
运行前检查
运行任何 bb remote 命令前,请检查用户是否要求为命令添加标志(用于配置 Remote Bazel 或 bazel)。
如果用户有此要求,请遵循下文的标志持久化步骤。
可直接替代 bazel
不要在本地使用 bazel 运行 bazel 命令,而应使用 bb remote 命令在远程运行器上运行。
例如,应将命令 bazel build :target 替换为 bb remote build :target。
应将 bazel run :target 替换为 bb remote run :target。
应保留所有 bazel 启动标志和选项。
bazel --output_base=X test :target --config=Y 应变为 bb remote --output_base=X test :target --config=Y。
标志持久化
每当用户提供的标志尚未存在于 persistent-flags.md 文件中时,都要在运行命令前遵循以下流程:
- 询问:
Do you want me to persist <FLAG> in this SKILL file so it is automatically applied to all future remote runs? - 等待用户明确确认后再编辑此文件。
- 请用户通过示例确认标志的语法。
- 如果用户确认,只编辑 persistent-flags.md 文件。
- 确保该标志尚未存在。
- 保持按字母顺序排列。
- 为每个标志添加一条示例命令。
条目格式:
--flag=value:示例:bb remote build :target --flag=value
在远程运行任意 bash 命令
你也可以使用 bb remote 在远程运行那些在本地运行成本较高的命令。对于非 bazel 命令,可以使用
--script 运行。
例如,你可以运行 bb remote --script="echo HELLO!"。
失败处理
如果运行失败,应提醒用户,并打印此次远程运行的调用 URL。该 URL 位于日志顶部,格式如下:
Streaming remote runner logs to: https://app.buildbuddy.io/invocation/d70a1719-4cb6-4568-a19e-9b6f8e2b3ec3
配置
你可以使用 --os 和 --arch 标志配置远程运行器的操作系统和架构。
os 的有效值为:linux 和 darwin。
arch 的有效值为:amd64 和 arm64。
默认情况下,远程运行器会与本地架构保持一致。
你可以使用 --container_image=docker://<URL> 配置远程运行器的镜像。
如果远程运行器损坏,而你想使用一个干净的运行器,可以设置 --runner_exec_properties=salt=<VALUE>。请务必保留此标志,以便后续运行能够从这个新运行器继续。
请求更多资源
我们强烈建议不要设置这些选项,除非绝对必要,否则请使用默认值。只有在日志明确报告 OOM 错误或磁盘空间耗尽时,才建议增加资源。
你可以通过 --runner_exec_properties=EstimatedCPU=X、--runner_exec_properties=EstimatedFreeDiskBytes=XGB 和 EstimatedMemory=XGB 为远程运行器请求更多资源。
身份验证
如果请求未获授权,请告知用户运行 bb login,并按照 UI 中的登录流程操作。不要尝试自行运行 bb login,因为这需要完成一些手动步骤。
API 密钥将存储在 .git/config 中的以下位置:
[buildbuddy]
api-key = <API_KEY_HERE>
如果在非交互模式下运行,用户应将 API 密钥保存为机密,然后你可以通过 --remote_header=x-buildbuddy-api-key=<API_KEY_HERE> 传递该密钥。
先决条件
如果尚未安装 bb,可以运行 curl -fsSL https://install.buildbuddy.io | bash 进行安装。