Imagens em hardware dedicado com bencher run
Os Runners em hardware dedicado executam benchmarks empacotados no Formato de Imagem OCI.
Ao usar o subcomando CLI bencher run,
selecione uma Image com a opção --image para habilitar a execução remota em hardware dedicado.
Ao fazer Benchmarking Contínuo, que é o benchmarking no CI, o uso de runners em hardware dedicado pode reduzir drasticamente a quantidade de ruído nos resultados dos seus benchmarks. Além disso, o Bencher Bare Metal pode ser executado fora do CI usando os exatos mesmos runners em hardware dedicado. Isso permite que tanto desenvolvedores quanto agentes verifiquem o desempenho das suas alterações de código sem terem que passar por um fluxo de trabalho de CI inteiro. Veja o Fluxo de trabalho em hardware dedicado para uma visão geral completa.
--image <IMAGE>
Define a referência da imagem OCI para a execução remota no Runner em hardware dedicado
(por exemplo, my-image:tag, registry.bencher.dev/my-image:tag,
ou para instâncias do Bencher Self-Hosted localhost:6610/my-image:tag).
Apenas o registry OCI do servidor da API do Bencher é suportado.
Quando --image é definido, o comando de benchmark é executado em um Runner em hardware dedicado remoto
em vez de localmente.
--entrypoint <ENTRYPOINT>
Sobrescreve o entrypoint do contêiner para executar o comando de benchmark.
Esta opção requer que a opção --image esteja definida.
--env <KEY=VALUE>
Define variáveis de ambiente no formato KEY=VALUE.
Pode ser especificada várias vezes.
Esta opção requer que a opção --image esteja definida.
--job-timeout <SECONDS>
Define o tempo máximo de execução do job em segundos.
Veja a documentação do Job para mais detalhes.
Esta opção requer que a opção --image ou a opção --job esteja definida.
--job-poll-interval <SECONDS>
Define o intervalo de polling em segundos ao aguardar a conclusão do Job em hardware dedicado.
Esta opção requer que a opção --image ou a opção --job esteja definida.
Esta opção entra em conflito com a opção --detach.
--detach
Desanexa após enviar o Job em hardware dedicado, sem aguardar a sua conclusão.
Esta opção requer que a opção --image esteja definida.
Esta opção entra em conflito com a opção --job-poll-interval.
--job <UUID>
Opcional: Conecta-se a um Job em hardware dedicado.
Na maioria das vezes, esta opção é usada quando uma invocação separada do bencher run
já usou a flag --detach.
Várias outras opções do bencher run entram em ação e funcionam como se você nunca tivesse desanexado.
Isso permite aguardar Jobs em hardware dedicado de forma assíncrona usando callbacks
(webhooks por invocação do bencher run).
Veja Pull Requests em hardware dedicado para um exemplo usando o GitHub Actions.
--callback-url <URL>
Opcional: Especifica uma URL de callback para um Job em hardware dedicado desanexado.
A URL deve usar https.
A Organização deste Projeto deve ter um plano Bencher Plus ativo.
Para especificar os cabeçalhos da requisição, use a opção --callback-header.
Para especificar o corpo da requisição, use a opção --callback-body.
Caso contrário, o corpo da resposta do endpoint da API do bencher run é usado por padrão.
Esta opção requer que a opção --image e a flag --detach estejam definidas.
Esta opção entra em conflito com a opção --github-actions.
--callback-header <NAME: VALUE>
Opcional: Adiciona um cabeçalho à requisição do callback no formato NAME: VALUE.
O NAME do cabeçalho tem um tamanho máximo de 256 bytes, e o VALUE do cabeçalho tem um tamanho máximo de 8 KiB.
Esta opção pode ser especificada várias vezes (no máximo 16).
Os seguintes cabeçalhos não são suportados:
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
Esta opção requer que a opção --callback-url esteja definida.
--callback-body <JSON>
Opcional: Define o corpo JSON da requisição do callback. Este valor JSON pode usar qualquer uma das seguintes variáveis de template em uma string:
| Variável | Expande como | Valor |
|---|---|---|
{{ project.uuid }} |
String | UUID do Projeto |
{{ project.name }} |
String | Nome do Projeto |
{{ project.slug }} |
String | Slug do Projeto |
{{ report }} |
Objeto | Relatório (limite de 1) |
{{ report.uuid }} |
String | UUID do relatório |
{{ job.uuid }} |
String | UUID do Job |
{{ job.status }} |
String | Estado final do Job: processed, failed ou canceled |
O tamanho máximo deste template de valor JSON é 64 KiB. A expansão do template é feita em uma única passagem, e qualquer variável de template desconhecida fará a expansão falhar.
Esta opção requer que a opção --callback-url esteja definida.
Se a opção --callback-body não for especificada, o corpo da resposta do endpoint da API do bencher run
("{{ report }}") é usado por padrão.
Por exemplo, para publicar uma mensagem em um webhook de entrada do 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🐰 Parabéns! Você aprendeu tudo sobre Imagens em hardware dedicado! 🎉