bencher runでのベアメタルイメージ
ベアメタルRunnerは、OCI Imageフォーマットでパッケージ化されたベンチマークを実行します。
bencher run CLIサブコマンドを使用する際、
--imageオプションでImageを選択すると、リモートのベアメタル実行が有効になります。
継続的ベンチマーク、つまりCIでのベンチマークを行う際に、 ベアメタルRunnerを使用すると、ベンチマーク結果のノイズを大幅に削減できます。 さらに、Bencher Bare MetalはCIの外でも、_まったく同じ_ベアメタルRunnerを使って実行できます。 これにより、開発者とエージェントの両方が、CIワークフロー全体を経由することなく、 コード変更のパフォーマンスを確認できます。 全体の概要については、ベアメタルワークフローを参照してください。
--image <IMAGE>
リモートのベアメタルRunnerで実行するためのOCIイメージ参照を設定します
(例: my-image:tag、registry.bencher.dev/my-image:tag、
またはBencher Self-Hostedインスタンスの場合はlocalhost:6610/my-image:tag)。
Bencher APIサーバーのOCIレジストリのみがサポートされています。
--imageが設定されると、ベンチマークコマンドはローカルではなく、
リモートのベアメタルRunner上で実行されます。
--entrypoint <ENTRYPOINT>
ベンチマークコマンドを実行するためのコンテナエントリポイントを上書きします。
このオプションは、--imageオプションが設定されている必要があります。
--env <KEY=VALUE>
KEY=VALUE形式で環境変数を設定します。
複数回指定することができます。
このオプションは、--imageオプションが設定されている必要があります。
--job-timeout <SECONDS>
Jobの最大実行時間を秒単位で設定します。
詳細についてはJobドキュメントを参照してください。
このオプションは、--imageオプションまたは--jobオプションのいずれかが設定されている必要があります。
--job-poll-interval <SECONDS>
ベアメタルJobの完了を待機する際のポーリング間隔を秒単位で設定します。
このオプションは、--imageオプションまたは--jobオプションのいずれかが設定されている必要があります。
このオプションは、--detachオプションと競合します。
--detach
ベアメタルJobを送信した後、完了を待たずにデタッチします。
このオプションは、--imageオプションが設定されている必要があります。
このオプションは、--job-poll-intervalオプションと競合します。
--job <UUID>
オプション: ベアメタルJobにアタッチします。
ほとんどの場合、このオプションは、
別のbencher runの呼び出しですでに--detachフラグを使っているときに使用します。
ほかのいくつかのbencher runオプションもこの呼び出しで有効になり、デタッチしなかった場合と同じように機能します。
これにより、コールバック(bencher runの呼び出しごとのWebhook)を使用して、
ベアメタルJobを非同期に待機できます。
GitHub Actionsを使用した例については、ベアメタル上のプルリクエストを参照してください。
--callback-url <URL>
オプション: デタッチしたベアメタルJobのコールバックURLを指定します。
URLはhttpsを使用する必要があります。
このプロジェクトの組織には、有効なBencher Plusプランが必要です。
リクエストヘッダーを指定するには、--callback-headerオプションを使用します。
リクエストボディを指定するには、--callback-bodyオプションを使用します。
指定しない場合は、bencher runのAPIエンドポイントのレスポンスボディがデフォルトで使用されます。
このオプションは、--imageオプションと--detachフラグが設定されている必要があります。
このオプションは、--github-actionsオプションと競合します。
--callback-header <NAME: VALUE>
オプション: NAME: VALUE形式で、コールバックリクエストにヘッダーを追加します。
ヘッダーのNAMEの最大サイズは256バイト、ヘッダーのVALUEの最大サイズは8 KiBです。
このオプションは複数回指定できます(最大16回)。
次のヘッダーはサポートされていません:
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
このオプションは、--callback-urlオプションが設定されている必要があります。
--callback-body <JSON>
オプション: コールバックリクエストのJSONボディを設定します。 このJSON値では、文字列の中で次のテンプレート変数を使用できます:
| 変数 | 展開後の型 | 値 |
|---|---|---|
{{ project.uuid }} |
文字列 | プロジェクトのUUID |
{{ project.name }} |
文字列 | プロジェクトの名前 |
{{ project.slug }} |
文字列 | プロジェクトのスラッグ |
{{ report }} |
オブジェクト | レポート(1回まで) |
{{ report.uuid }} |
文字列 | レポートのUUID |
{{ job.uuid }} |
文字列 | JobのUUID |
{{ job.status }} |
文字列 | Jobの終了状態:processed、failed、またはcanceled |
このJSON値テンプレートの最大サイズは64 KiBです。 テンプレートの展開は1回だけ行われ、 不明なテンプレート変数があると展開は失敗します。
このオプションは、--callback-urlオプションが設定されている必要があります。
--callback-bodyオプションを指定しない場合は、
bencher runのAPIエンドポイントのレスポンスボディ("{{ report }}")がデフォルトで使用されます。
たとえば、SlackのIncoming Webhookにメッセージを投稿するには:
bencher run \ --project project-abc4567-wxyz123456789 \ --image project-abc4567-wxyz123456789:latest \ --detach \ --callback-url "$SLACK_WEBHOOK_URL" \ --callback-body '{"text": "{{ project.name }}: Bencher Job {{ job.status }}", "blocks": [{"type": "section", "text": {"type": "mrkdwn", "text": "*{{ project.name }}*: Bencher Job {{ job.status }}\n<https://bencher.dev/console/projects/{{ project.slug }}/reports/{{ report.uuid }}|View the report>"}}]}' \ bencher mock🐰 おめでとうございます!ベアメタルイメージに関するすべてを学びました!🎉