remote-run-curl について
remote-run-curl は、curl から BuildBuddy Run API を呼び出し、リモートランナーでコマンドを実行するスキルです。ワークスペースのスナップショット、実行状態とログ、ランナーの環境やプラットフォーム設定を扱います。
主な機能
- 01Run 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 フラグをリクエストに追加してください。
リモート実行の開始
Run API は curl リクエストで呼び出せます。
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 で取得できます。ログはリアルタイムでストリーミングされ、リモート実行と並行して取得できます。
呼び出し ID は Run 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/GetLog
GetLog のレスポンスに next_page_token が含まれている場合は、すべてのログチャンクを取得するまで、トークンを page_token フィールドに渡して GetLog を呼び出し続けてください。
呼び出しメタデータの取得
呼び出しメタデータは 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"}