mcpField
R
remote-run-curl

remote-run-curl

github.com/buildbuddy-io云与 DevOps798763 次安装今天更新
代码仓库

关于 remote-run-curl

remote-run-curl 是一项通过 curl 调用 BuildBuddy Run API 的技能,用于在远程运行器中执行命令。它涵盖工作区快照、运行状态与日志获取,以及环境和平台属性配置。

主要功能

  1. 01通过 Run API 执行远程命令
  2. 02可克隆 GitHub 仓库并指定分支或提交
  3. 03轮询运行状态并获取日志
  4. 04配置环境变量与平台属性
  5. 05支持工作区快照以加快后续运行

适用场景

  1. 01在远程运行器上执行 Bazel 构建
  2. 02运行需要更多计算资源的命令
  3. 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 文件中尚未包含的字段时,请在启动远程运行之前遵循以下工作流程:

  1. 询问:Do you want me to persist <FIELD> in this SKILL file so it is automatically applied to all future remote runs?
  2. 在编辑此文件之前,等待用户明确确认。
  3. 如果用户确认,只编辑 persistent-fields.md 文件。
  4. 确保该字段尚未存在。
  5. 按字母顺序排列。

条目格式:

  • { "KEY": "VALUE" }:示例:{"wait_until": "COMPLETED"}

评论

支持 Markdown