Images sur matériel dédié avec bencher run
Les Runners sur matériel dédié exécutent des benchmarks empaquetés au format d’image OCI.
Lors de l’utilisation de la sous-commande CLI bencher run,
sélectionnez une Image avec l’option --image pour activer l’exécution distante sur matériel dédié.
Lors de l’évaluation continue, c’est-à-dire l’évaluation en CI, l’utilisation de runners sur matériel dédié peut réduire considérablement le bruit dans vos résultats de benchmarks. De plus, Bencher Bare Metal peut être exécuté en dehors de la CI en utilisant exactement les mêmes runners sur matériel dédié. Cela permet aux développeurs comme aux agents de vérifier la performance de leurs modifications de code sans avoir à passer par un workflow CI complet. Consultez le Flux de travail sur matériel dédié pour un aperçu complet.
--image <IMAGE>
Définit la référence d’image OCI pour l’exécution distante sur un Runner sur matériel dédié
(par exemple my-image:tag, registry.bencher.dev/my-image:tag,
ou pour les instances Bencher Self-Hosted localhost:6610/my-image:tag).
Seul le registre OCI du serveur API de Bencher est pris en charge.
Lorsque --image est définie, la commande de benchmark s’exécute sur un Runner sur matériel dédié distant
au lieu de s’exécuter localement.
--entrypoint <ENTRYPOINT>
Remplace le point d’entrée du conteneur pour exécuter la commande de benchmark.
Cette option nécessite que l’option --image soit définie.
--env <KEY=VALUE>
Définit des variables d’environnement au format KEY=VALUE.
Peut être spécifiée plusieurs fois.
Cette option nécessite que l’option --image soit définie.
--job-timeout <SECONDS>
Définit le temps d’exécution maximal du job en secondes.
Consultez la documentation du Job pour plus de détails.
Cette option nécessite que l’option --image ou l’option --job soit définie.
--job-poll-interval <SECONDS>
Définit l’intervalle de sondage en secondes lors de l’attente de la complétion d’un Job sur matériel dédié.
Cette option nécessite que l’option --image ou l’option --job soit définie.
Cette option entre en conflit avec l’option --detach.
--detach
Se détache après avoir soumis le Job sur matériel dédié, sans attendre sa complétion.
Cette option nécessite que l’option --image soit définie.
Cette option entre en conflit avec l’option --job-poll-interval.
--job <UUID>
Optionnel : Se rattache à un Job sur matériel dédié.
La plupart du temps, cette option est utilisée lorsqu’une invocation distincte de bencher run
a déjà utilisé le drapeau --detach.
Plusieurs autres options de bencher run sont prises en compte et fonctionnent comme si vous ne vous étiez jamais détaché.
Cela vous permet d’attendre les Jobs sur matériel dédié de manière asynchrone à l’aide de callbacks
(des webhooks propres à chaque invocation de bencher run).
Voir Pull Requests sur matériel dédié pour un exemple utilisant GitHub Actions.
--callback-url <URL>
Optionnel : Spécifie une URL de callback pour un Job sur matériel dédié détaché.
L’URL doit utiliser https.
L’organisation de ce projet doit avoir un plan Bencher Plus actif.
Pour spécifier les en-têtes de la requête, utilisez l’option --callback-header.
Pour spécifier le corps de la requête, utilisez l’option --callback-body.
Sinon, le corps de la réponse du point de terminaison de l’API de bencher run est utilisé par défaut.
Cette option nécessite que l’option --image et le drapeau --detach soient définis.
Cette option entre en conflit avec l’option --github-actions.
--callback-header <NAME: VALUE>
Optionnel : Ajoute un en-tête à la requête du callback au format NAME: VALUE.
Le NAME de l’en-tête a une taille maximale de 256 octets, et la VALUE de l’en-tête a une taille maximale de 8 Kio.
Cette option peut être spécifiée plusieurs fois (16 au maximum).
Les en-têtes suivants ne sont pas pris en charge :
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
Cette option nécessite que l’option --callback-url soit définie.
--callback-body <JSON>
Optionnel : Définit le corps JSON de la requête du callback. Cette valeur JSON peut utiliser n’importe laquelle des variables de modèle suivantes dans une chaîne :
| Variable | Se développe en | Valeur |
|---|---|---|
{{ project.uuid }} |
Chaîne | UUID du Projet |
{{ project.name }} |
Chaîne | Nom du Projet |
{{ project.slug }} |
Chaîne | Slug du Projet |
{{ report }} |
Objet | Rapport (limite de 1) |
{{ report.uuid }} |
Chaîne | UUID du Rapport |
{{ job.uuid }} |
Chaîne | UUID du Job |
{{ job.status }} |
Chaîne | État final du Job : processed, failed ou canceled |
La taille maximale de ce modèle de valeur JSON est de 64 Kio. Le développement du modèle se fait en une seule passe, et toute variable de modèle inconnue fera échouer le développement.
Cette option nécessite que l’option --callback-url soit définie.
Si l’option --callback-body n’est pas spécifiée, le corps de la réponse du point de terminaison de l’API de bencher run
("{{ report }}") est utilisé par défaut.
Par exemple, pour publier un message sur un webhook entrant 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🐰 Félicitations ! Vous avez appris tout ce qu’il faut savoir sur les Images sur matériel dédié ! 🎉