Imágenes en hardware dedicado con bencher run
Los Runners en hardware dedicado ejecutan benchmarks empaquetados en Formato de Imagen OCI.
Al usar el subcomando CLI bencher run,
selecciona una Image con la opción --image para habilitar la ejecución remota en hardware dedicado.
Cuando se realiza Benchmarking Continuo, es decir, benchmarking en CI, usar runners en hardware dedicado puede reducir drásticamente la cantidad de ruido en los resultados de tus benchmarks. Además, Bencher Bare Metal se puede ejecutar fuera de CI utilizando los exactos mismos runners en hardware dedicado. Esto permite que tanto desarrolladores como agentes verifiquen el rendimiento de sus cambios de código sin tener que pasar por un flujo de trabajo completo de CI. Consulta el Flujo de trabajo en hardware dedicado para una visión general completa.
--image <IMAGE>
Establece la referencia de imagen OCI para la ejecución remota del Runner en hardware dedicado
(por ejemplo, my-image:tag, registry.bencher.dev/my-image:tag,
o para instancias de Bencher Self-Hosted localhost:6610/my-image:tag).
Solo se admite el registro OCI del servidor de la API de Bencher.
Cuando --image está establecido, el comando de benchmark se ejecuta en un Runner remoto en hardware dedicado
en lugar de localmente.
--entrypoint <ENTRYPOINT>
Sobrescribe el entrypoint del contenedor para ejecutar el comando de benchmark.
Esta opción requiere que la opción --image esté establecida.
--env <KEY=VALUE>
Establece variables de entorno en el formato KEY=VALUE.
Se puede especificar varias veces.
Esta opción requiere que la opción --image esté establecida.
--job-timeout <SECONDS>
Establece el tiempo máximo de ejecución del job en segundos.
Consulta la documentación del Job para más detalles.
Esta opción requiere que la opción --image o la opción --job esté establecida.
--job-poll-interval <SECONDS>
Establece el intervalo de sondeo en segundos al esperar la finalización del Job en hardware dedicado.
Esta opción requiere que la opción --image o la opción --job esté establecida.
Esta opción entra en conflicto con la opción --detach.
--detach
Se desacopla después de enviar el Job en hardware dedicado, sin esperar a su finalización.
Esta opción requiere que la opción --image esté establecida.
Esta opción entra en conflicto con la opción --job-poll-interval.
--job <UUID>
Opcional: Se conecta a un Job en hardware dedicado.
La mayoría de las veces, esta opción se usa cuando una invocación separada de bencher run
ya ha usado la bandera --detach.
Varias otras opciones de bencher run vuelven a surtir efecto y funcionan como si nunca hubiera desacoplado la ejecución.
Esto le permite esperar los Jobs en hardware dedicado de forma asíncrona mediante callbacks
(webhooks por cada invocación de bencher run).
Consulte Pull Requests en hardware dedicado para ver un ejemplo con GitHub Actions.
--callback-url <URL>
Opcional: Especifica una URL de callback para un Job en hardware dedicado desacoplado.
La URL debe usar https.
La Organización de este Proyecto debe tener un plan Bencher Plus activo.
Para especificar los encabezados de la petición, use la opción --callback-header.
Para especificar el cuerpo de la petición, use la opción --callback-body.
De lo contrario, se usa por defecto el cuerpo de la respuesta del endpoint de la API de bencher run.
Esta opción requiere que la opción --image y la bandera --detach estén establecidas.
Esta opción entra en conflicto con la opción --github-actions.
--callback-header <NAME: VALUE>
Opcional: Agrega un encabezado a la petición del callback en formato NAME: VALUE.
El NAME del encabezado tiene un tamaño máximo de 256 bytes, y el VALUE del encabezado tiene un tamaño máximo de 8 KiB.
Esta opción se puede especificar varias veces (máximo 16).
Los siguientes encabezados no se admiten:
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
Esta opción requiere que la opción --callback-url esté establecida.
--callback-body <JSON>
Opcional: Establece el cuerpo JSON de la petición del callback. Este valor JSON puede usar cualquiera de las siguientes variables de plantilla dentro de una cadena:
| Variable | Se expande como | Valor |
|---|---|---|
{{ project.uuid }} |
Cadena | UUID del Proyecto |
{{ project.name }} |
Cadena | Nombre del Proyecto |
{{ project.slug }} |
Cadena | Slug del Proyecto |
{{ report }} |
Objeto | Informe (límite 1) |
{{ report.uuid }} |
Cadena | UUID del informe |
{{ job.uuid }} |
Cadena | UUID del Job |
{{ job.status }} |
Cadena | Estado final del Job: processed, failed o canceled |
El tamaño máximo de esta plantilla de valor JSON es de 64 KiB. La expansión de la plantilla se hace en una sola pasada, y cualquier variable de plantilla desconocida hará fallar la expansión.
Esta opción requiere que la opción --callback-url esté establecida.
Si no se especifica la opción --callback-body, se usa por defecto el cuerpo de la respuesta
del endpoint de la API de bencher run ("{{ report }}").
Por ejemplo, para publicar un mensaje en un webhook entrante de 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🐰 ¡Felicidades! Has aprendido todo sobre las Imágenes en hardware dedicado. 🎉