Образы для выделенного оборудования с использованием bencher run
Runner’ы на выделенном оборудовании выполняют бенчмарки, упакованные в формат OCI Image.
При использовании подкоманды CLI bencher run
выберите Image с помощью опции --image, чтобы включить удалённое выполнение на выделенном оборудовании.
При непрерывном бенчмаркинге, то есть при бенчмаркинге в CI, использование runner’ов на выделенном оборудовании может значительно снизить уровень шума в результатах ваших бенчмарков. Более того, Bencher Bare Metal можно запускать вне CI на точно тех же runner’ах на выделенном оборудовании. Это позволяет как разработчикам, так и агентам проверять производительность изменений в коде, не проходя через весь CI-процесс. Смотрите Рабочий процесс на выделенном оборудовании для полного обзора.
--image <IMAGE>
Задаёт ссылку на OCI-образ для удалённого выполнения на Runner на выделенном оборудовании
(например, my-image:tag, registry.bencher.dev/my-image:tag
или для инстансов Bencher Self-Hosted localhost:6610/my-image:tag).
Поддерживается только OCI-реестр API-сервера Bencher.
Когда задана опция --image, команда бенчмарка выполняется на удалённом Runner на выделенном оборудовании,
а не локально.
--entrypoint <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 на выделенном оборудовании с помощью callback
(вебхуков для каждого отдельного вызова bencher run).
См. Pull Requests на выделенном оборудовании для примера с GitHub Actions.
--callback-url <URL>
Необязательно: Задает URL callback для отсоединенного Job на выделенном оборудовании.
URL должен использовать https.
У организации этого проекта должен быть активный план Bencher Plus.
Чтобы задать заголовки запроса, используйте опцию --callback-header.
Чтобы задать тело запроса, используйте опцию --callback-body.
В противном случае по умолчанию используется тело ответа эндпоинта API bencher run.
Эта опция требует, чтобы были заданы опция --image и флаг --detach.
Эта опция конфликтует с опцией --github-actions.
--callback-header <NAME: VALUE>
Необязательно: Добавляет заголовок к запросу callback в формате NAME: VALUE.
Максимальный размер NAME заголовка составляет 256 байт, а максимальный размер VALUE заголовка составляет 8 КиБ.
Эту опцию можно указать несколько раз (не более 16).
Следующие заголовки не поддерживаются:
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
Эта опция требует, чтобы была задана опция --callback-url.
--callback-body <JSON>
Необязательно: Задает JSON-тело запроса callback. Это JSON-значение может использовать в строке любые из следующих переменных шаблона:
| Переменная | Раскрывается как | Значение |
|---|---|---|
{{ project.uuid }} |
Строка | UUID Проекта |
{{ project.name }} |
Строка | Название Проекта |
{{ project.slug }} |
Строка | Slug Проекта |
{{ report }} |
Объект | Отчет (не более одного раза) |
{{ report.uuid }} |
Строка | UUID отчета |
{{ job.uuid }} |
Строка | UUID Job |
{{ job.status }} |
Строка | Конечное состояние Job: processed, failed или canceled |
Максимальный размер этого шаблона JSON-значения составляет 64 КиБ. Шаблон раскрывается за один проход, и любая неизвестная переменная шаблона приводит к ошибке раскрытия.
Эта опция требует, чтобы была задана опция --callback-url.
Если опция --callback-body не указана, по умолчанию используется тело ответа эндпоинта API
bencher run ("{{ report }}").
Например, чтобы опубликовать сообщение во входящем вебхуке Slack:
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🐰 Поздравляем! Вы узнали всё об Образах для выделенного оборудования! 🎉