使用 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 次)。
以下请求头不受支持:
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
此选项要求设置 --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 发布一条消息:
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 的知识!🎉