使用 bencher run 的裸机 Images


裸机 Runner 执行以 OCI 镜像格式打包的基准测试。 使用 bencher run CLI 子命令时, 通过 --image 选项选择一个 Image 以启用远程裸机执行。

进行持续基准测试时,也就是在 CI 中进行基准测试时, 使用裸机 Runner 可以大幅减少基准测试结果中的噪声。 此外,Bencher Bare Metal 可以在 CI 之外使用_完全相同_的裸机 Runner 运行。 这使开发者和 agent 都可以检查其代码变更的性能, 而无需走完整的 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 选项会照常接手并生效,就像您从未分离过一样。 这使您可以使用回调异步等待裸机 Job (即每次 bencher run 调用各自的 Webhook)。

有关使用 GitHub Actions 的示例,请参见裸机上的 Pull Requests。

--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 次)。

以下请求头不受支持:

  • Connection
  • Content-Length
  • Host
  • Keep-Alive
  • Proxy-Connection
  • TE
  • Trailer
  • Transfer-Encoding
  • Upgrade

此选项要求设置 --callback-url 选项。

--callback-body <JSON>


可选:设置回调请求的 JSON 正文。 此 JSON 值可以在字符串中使用以下任意模板变量:

变量 展开为 值
{{ project.uuid }} 字符串 项目 UUID
{{ project.name }} 字符串 项目名称
{{ project.slug }} 字符串 项目 slug
{{ report }} 对象 报告(最多使用 1 次)
{{ report.uuid }} 字符串 报告 UUID
{{ job.uuid }} 字符串 Job UUID
{{ job.status }} 字符串 Job 的终止状态:processed、failed 或 canceled

此 JSON 值模板的最大大小为 64 KiB。 模板展开只进行一遍, 任何未知的模板变量都会导致展开失败。

此选项要求设置 --callback-url 选项。 如果未指定 --callback-body 选项, 则默认使用 bencher run API 端点的响应正文("{{ report }}")。

例如,要向 Slack 传入 Webhook 发布一条消息:

Terminal window
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


🐰 恭喜!您已经学会了所有关于裸机 Images 的知识!🎉


继续学习:分支 & 起始点 ➡

🤖 该文档由 AI 自动翻译。 它可能不准确并且可能包含错误。 如果您发现任何错误,请在 GitHub 上提出问题.


Published: Sun, April 5, 2026 at 6:00:00 AM UTC | Last Updated: Sun, September 27, 2026 at 12:00:00 AM UTC