关于 remote-run-curl
remote-run-curl 是一项通过 curl 调用 BuildBuddy Run API 的技能,用于在远程运行器中执行命令。它涵盖工作区快照、运行状态与日志获取,以及环境和平台属性配置。
主要功能
- 01通过 Run API 执行远程命令
- 02可克隆 GitHub 仓库并指定分支或提交
- 03轮询运行状态并获取日志
- 04配置环境变量与平台属性
- 05支持工作区快照以加快后续运行
适用场景
- 01在远程运行器上执行 Bazel 构建
- 02运行需要更多计算资源的命令
- 03检查远程执行的日志和退出状态
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ buildbuddy-io/ buildbuddy --skill remote-run-curl安装后在 Claude Code 中输入/remote-run-curl确认已加载。
附带文件persistent-fields.md
详细介绍
Run API 会在远程运行器中运行命令。这些运行器的计算能力可能更强,并且工作区会在各次运行之间创建快照,从而加快后续运行。
任何 bash 命令都可以在远程运行器中运行,但 bazel 命令可能最能受益于靠近我们的缓存服务器以及工作区快照。
获取帮助
如果你不知道如何完成某项任务,请查阅 https://www.buildbuddy.io/docs/remote-bazel 上的文档。不要尝试运行 bb remote --help 或 bb help。
运行前检查
在发起远程运行之前,请检查用户是否要求在请求中添加任何字段。
如果有,请按照下方的字段持久化步骤操作。
将任何持久化 API 字段或 Bazel 标志添加到请求中。
发起远程运行
可以通过 curl 请求调用 Run API。
对于 bazel 命令,请确保在 steps 字段中保留完整命令,包括启动标志和选项。
若要克隆 GitHub 仓库并在该工作区中运行 steps,请设置 repo、branch 和/或 commit_sha 字段。如果这些步骤不需要 GitHub 工作区,则此项为可选。
默认情况下,Run API 会在远程运行器启动后返回。你可以使用 GetInvocation API 轮询运行是否完成。如果希望 Run API 等待命令完成,请在请求中添加 "wait_until": "COMPLETED"。
支持多行步骤。
请求示例:
curl --data '{
"repo": "[email protected]:<REPO_NAME>.git",
"branch": "<BRANCH_NAME>",
"steps": [{"run": "bazel build :target"}],
"wait_until": "COMPLETED"
}' \
--header "x-buildbuddy-api-key: ${BUILDBUDDY_API_KEY?}" \
--header "Content-Type: application/json" \
https://app.buildbuddy.io/api/v1/Run
从响应中解析 invocationId,并将 https://app.buildbuddy.io/invocation/<INVOCATION_ID> 分享给用户,以便他们查看远程运行的日志。
查看远程日志
可以使用 GetLog API 获取远程运行的日志。日志会实时流式传输,也可以在远程运行期间并行获取。
应从 Run API 的结果中解析调用 ID。
请求示例:
curl -d '{
"selector": {"invocation_id":"<INVOCATION_ID>"}
}' \
-H "x-buildbuddy-api-key: ${BUILDBUDDY_API_KEY}" \
-H "Content-Type: application/json" \
https://app.buildbuddy.io/api/v1/GetLog
如果 GetLog 响应中包含 next_page_token,请继续调用 GetLog 并将该令牌传入 page_token 字段,直到获取所有日志块。
获取调用元数据
可以使用 GetInvocation API 获取调用元数据。元数据包括运行完成后的退出代码,以及运行是否成功完成。
所有步骤都必须成功完成,调用才会被视为成功。如果任何步骤失败,后续步骤将不会运行。
curl -d '{
"selector": {"invocation_id":"<INVOCATION_ID>"}
}' \
-H "x-buildbuddy-api-key: ${BUILDBUDDY_API_KEY}" \
-H "Content-Type: application/json" \
https://app.buildbuddy.io/api/v1/GetInvocation
配置
可以通过 env 字段为远程运行器设置环境变量。该字段需要以映射作为输入。
其他配置可以通过 platform_properties 字段设置,该字段同样需要映射。
OSFamily 的有效值为 linux 和 darwin。
Arch 的有效值为 amd64 和 arm64。
container-image 字段需要类似 docker://<URL> 的 Docker URL。
如果远程运行器损坏,而你希望使用一个干净的运行器,可以将属性 salt 设置为新值。请务必保留此标志,以便后续运行从这个新运行器继续。
申请更多资源
我们强烈建议除非绝对必要,否则不要设置这些值,而是使用默认值。只有当日志明确报告内存不足(OOM)错误或磁盘耗尽时,才建议增加资源。
可以通过属性 EstimatedCPU、EstimatedFreeDiskBytes 和 EstimatedMemory 为远程运行器申请更多资源。磁盘和内存字段的值应采用 XGB 语法。
身份验证
用户可以在 BuildBuddy UI 的 Settings 页面获取 API 密钥。如果在非交互模式下运行,用户应将 API 密钥保存为机密。
字段持久化
每当用户提供 persistent-fields.md 文件中尚未包含的字段时,请在启动远程运行之前遵循以下工作流程:
- 询问:
Do you want me to persist <FIELD> in this SKILL file so it is automatically applied to all future remote runs? - 在编辑此文件之前,等待用户明确确认。
- 如果用户确认,只编辑
persistent-fields.md文件。 - 确保该字段尚未存在。
- 按字母顺序排列。
条目格式:
{ "KEY": "VALUE" }:示例:{"wait_until": "COMPLETED"}