Auto-hébergement Docker
Qu’est-ce que Bencher?
Bencher est une suite d’outils de benchmarking continu. Avez-vous déjà eu une régression de performance qui a impacté vos utilisateurs ? Bencher aurait pu empêcher cela de se produire. Bencher vous permet de détecter et de prévenir les régressions de performance avant qu’elles n’arrivent en production.
- Exécuter: Exécutez vos benchmarks localement ou en CI en utilisant vos outils de benchmarking préférés. La CLI
bencher
enveloppe simplement votre harnais de benchmarking existant et stocke ses résultats. - Suivre: Suivez les résultats de vos benchmarks au fil du temps. Surveillez, interrogez et graphiquez les résultats à l’aide de la console web Bencher en fonction de la branche source, du banc d’essai et de la mesure.
- Détecter: Détectez les régressions de performances en CI. Bencher utilise des analyses de pointe et personnalisables pour détecter les régressions de performances avant qu’elles n’arrivent en production.
Pour les mêmes raisons que les tests unitaires sont exécutés en CI pour prévenir les régressions de fonctionnalités, les benchmarks devraient être exécutés en CI avec Bencher pour prévenir les régressions de performance. Les bugs de performance sont des bugs !
Bencher est open source et peut être hébergé par soi-même. Si vous êtes intéressé par l’utilisation de Bencher Cloud, consultez le tutoriel de démarrage rapide de Bencher Cloud. Ce tutoriel vous aidera à vous installer en utilisant Bencher auto-hébergé avec Docker.
🐰 Une fois que vous vous sentez à l’aise avec Bencher Self-Hosted, envisagez de consulter les ressources suivantes :
Installer Docker
Pour exécuter les serveurs d’interface utilisateur et d’API dans ce tutoriel, vous devrez avoir docker
installé.
Vérifiez si vous avez docker
installé.
Exécutez: docker --version
Vous devriez voir quelque chose comme :
Il est acceptable que votre numéro de version soit différent. Il est juste important que cette commande fonctionne.
Si ce n’est pas le cas, suivez les instructions pour installer docker
.
Installer le CLI bencher
Linux, Mac, & Unix
Pour Linux, Mac, et autres systèmes de type Unix, exécutez ce qui suit dans votre terminal :
Windows
Pour les systèmes Windows, exécutez ce qui suit dans un terminal PowerShell :
🐰 Si vous recevez une erreur qui dit
running scripts is disabled on this system
:
- Ouvrez
Powershell
en utilisantExécuter en tant qu'administrateur
- Exécutez:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Tapez:
Y
- Réexécutez ce script
Pour des options d’installation supplémentaires, consultez comment installer le CLI bencher
.
Maintenant, testons si nous avons installé le CLI bencher
.
Exécutez : bencher --version
Vous devriez voir :
Exécution de Bencher UI & API Servers
Avec docker
installé, nous pouvons maintenant exécuter les serveurs UI et API.
Exécutez : bencher up
Vous devriez voir quelque chose comme :
Encore une fois, ce n’est pas grave si votre sortie est différente. L’important est que cette commande fonctionne.
🐰 Si vous recevez une erreur de
ghcr.io
disant :"authentication required"
Essayez d’exécuter :docker logout ghcr.io
🐰 Sur Windows, si vous recevez une erreur disant :
image operating system "linux" cannot be used on this platform: operating system is not supported
Essayez exécuter :& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchLinuxEngine
Logs du serveur API Bencher
Parce que nous n’avons pas encore configuré l’email/SMTP sur le serveur API,
les codes de confirmation que vous recevrez plus tard dans le tutoriel vont être dans les journaux du serveur, comme indiqué ci-dessus.
C’est-à-dire, les informations d’authentification vont être montrées dans la sortie de bencher up
.
Définir l’Hôte Bencher
L’hôte par défaut de l’interface en ligne de commande bencher
est Bencher Cloud (c’est-à-dire https://api.bencher.dev).
Nous avons donc besoin de définir votre nom d’hôte. La manière la plus simple de le faire est avec la variable d’environnement BENCHER_HOST
.
Ouvrez une nouvelle fenêtre de terminal.
Sur Linux, Mac, et les autres systèmes de type Unix, exécutez : export BENCHER_HOST=http://localhost:61016
Sur Windows, exécutez : $env:BENCHER_HOST = "http://localhost:61016"
Si ensuite vous exécutez echo $BENCHER_HOST
ou Write-Output $env:BENCHER_HOST
respectivement.
Vous devriez voir :
Créez un compte Bencher Auto-Hébergé
Inscrivez-vous pour Bencher Auto-Hébergé
Créez un compte sur votre instance locale de Bencher Auto-Hébergé en naviguant sur : http://localhost:3000/auth/signup
Une fois que vous avez créé un compte, revenez à la fenêtre du terminal où vous avez exécuté bencher up
.
Vous devriez voir quelque chose comme :
Naviguez vers le lien Confirmer Email
dans votre navigateur ou copiez le Token de Confirmation
dans le champ Confirmez Token
sur : http://localhost:3000/auth/confirm
Après cela, vous devriez être connecté à votre compte Bencher Auto-Hébergé !
Créer un jeton API
Pour utiliser l’API Bencher, vous devrez créer un jeton API.
Allez à la console Bencher.
Passez votre souris sur votre nom dans le coin supérieur droit.
Un menu déroulant devrait apparaître. Sélectionnez Tokens
.
Une fois sur la page des jetons API, cliquez sur le bouton ➕ Ajouter
.
Ajouter un jeton API
Une fois que vous avez créé votre nouveau jeton API, vous devrez le copier dans votre presse-papiers. Dans le terminal dans lequel vous prévoyez de travailler, exportez le jeton API comme une variable d’environnement.
Sur Linux, Mac et autres systèmes de type Unix, lancez : export BENCHER_API_TOKEN=YOUR_TOKEN
Sur Windows, lancez : $env:BENCHER_API_TOKEN = "YOUR_TOKEN"
Si vous exécutez ensuite echo $BENCHER_API_TOKEN
ou Write-Output $env:BENCHER_API_TOKEN
respectivement.
Vous devriez voir :
🐰 Note : Si vous passez à un autre terminal, vous devrez exporter à nouveau le jeton API.
Créez un Projet
Maintenant que nous avons un compte d’utilisateur et un jeton API, nous pouvons créer un Projet. D’abord, nous devons savoir à quelle organisation notre nouveau projet appartiendra.
Exécutez: bencher org list
Vous devriez voir quelque chose comme:
Votre sortie devrait être légèrement différente de celle-ci:
- Le
uuid
est pseudorandom - Le
name
etslug
seront basés sur votre nom d’utilisateur - Les horodatages
created
etmodified
seront ceux de votre inscription récente
Nous pouvons maintenant créer un nouveau Projet à l’intérieur de votre Organisation.
Substituez le slug
de votre Organisation à l’argument organization
(ie YOUR_ORG_SLUG
) dans la commande ci-dessous.
Exécuter: bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
Vous devriez voir quelque chose comme:
Encore une fois, votre sortie devrait être légèrement différente que celle-ci.
Il est juste important que cette commande fonctionne.
Prenez note du champ slug
du Projet (ie save-walter-white-1234abcd
).
Exécutez un Rapport
Nous sommes enfin prêts à collecter quelques mesures de benchmark! Pour des raisons de simplicité, nous utiliserons des données fictives dans ce tutoriel.
Exécutez: bencher mock
Vous devriez voir quelque chose comme:
Votre sortie devrait être légèrement différente de celle-ci, car les données sont pseudorandom. Il est juste important que cette commande fonctionne.
Maintenant, exécutons un rapport en utilisant des données fictives de mesures de benchmark.
Substituez votre slug
de Projet à l’argument --project
(ie YOUR_PROJECT_SLUG
) dans la commande ci-dessous.
Exécutez: bencher run --project YOUR_PROJECT_SLUG "bencher mock"
Vous devriez voir quelque chose comme:
Vous pouvez maintenant consulter les résultats de chacun des benchmarks dans le navigateur.
Cliquez ou copiez et collez les liens de View results
.
Il ne devrait y avoir qu’un seul point de données pour chaque benchmark, alors ajoutons d’autres données!
D’abord, mettons notre slug de Projet en tant que variable d’environnement, de sorte que nous n’avons pas à le fournir avec le --project
à chaque exécution.
Exécutez: export BENCHER_PROJECT=save-walter-white-1234abcd
Si vous exécutez ensuite: echo $BENCHER_PROJECT
Vous devriez voir:
Ré-exécutons la même commande encore sans --project
pour générer plus de données.
Exécutez: bencher run "bencher mock"
Maintenant, générions plus de données, mais cette fois nous transmettrons nos résultats dans bencher run
.
Exécutez: bencher mock | bencher run
Parfois, vous pouvez vouloir sauvegarder vos résultats dans un fichier et que bencher run
les récupère.
Exécutez: bencher run --file results.json "bencher mock > results.json"
De même, vous pouvez avoir un processus séparé qui exécute vos benchmarks et sauvegardez vos résultats dans un fichier. Ensuite bencher run
viendra simplement les récupérer.
Exécutez: bencher mock > results.json && bencher run --file results.json
Enfin, mettons en place beaucoup de données en utilisant l’argument --iter
de bencher run
.
Exécutez: bencher run --iter 16 "bencher mock"
🐰 Astuce: Consultez les doc CLI sous-commande
bencher run
pour un aperçu complet de tout ce quebencher run
peut faire!
Générer une Alerte
Maintenant que nous avons des données historiques pour nos benchmarks, générons une Alerte! Les alertes sont générées lorsqu’un résultat de benchmark est déterminé comme une régression de performance. Alors simulons une régression de performance!
Exécutez: bencher run "bencher mock --pow 8"
Il devrait y avoir une nouvelle section à la fin de la sortie appelée View alerts
:
Vous pouvez maintenant voir les Alertes pour chaque benchmark dans le navigateur.
Cliquez ou copiez et collez les liens de View alerts
.
🐰 Astuce: Consultez les doc Seuil & Alertes pour un aperçu complet de comment sont détectées les régressions de performances!
🐰 Félicitations! Vous avez attrapé votre première régression de performance! 🎉