Comment utiliser Bencher dans GitLab CI/CD


Selon votre cas d’utilisation, vous pouvez configurer le Benchmarking Continu dans GitLab CI/CD pour votre :

🐰 Assurez-vous d’avoir crĂ©Ă© un jeton d’API et de l’avoir dĂ©fini comme une variable masquĂ©e nommĂ©e BENCHER_API_TOKEN avant de continuer ! Naviguez vers Votre DĂ©pĂŽt -> ParamĂštres -> CI/CD -> Variables -> DĂ©plier -> Ajouter une variable. La clĂ© de la variable doit ĂȘtre BENCHER_API_TOKEN et la valeur de la variable doit ĂȘtre votre jeton d’API. Cochez les cases ProtĂ©ger la variable et Masquer la variable.

Branche Cible

La pierre angulaire du Benchmarking Continu Statistique est d’avoir une base historique pour votre branche cible. Cette base historique peut ensuite ĂȘtre utilisĂ©e pour dĂ©tecter les rĂ©gressions de performance dans les Demandes de Fusion.

benchmark_target_branch:
rules:
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"
when: always
image: debian:bullseye
before_script:
- curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
script:
- |
bencher run \
--project save-walter-white-1234abcd \
--token "$BENCHER_API_TOKEN" \
--branch main \
--testbed debian:bullseye \
--adapter json \
--err \
bencher mock
  1. Créez un fichier CI/CD GitLab. (ex: .gitlab-ci.yml)
  2. Créez un travail CI/CD GitLab. (ex: benchmark_target_branch)
  3. Exécutez if le pipeline a été déclenché par un push sur la branche main. Consultez la documentation des rules CI/CD GitLab et la documentation des variables prédéfinies CI/CD GitLab pour un aperçu complet. (ex: rules: - if: ...)
  4. DĂ©finissez l’image dans laquelle le travail sera exĂ©cutĂ©. Consultez la documentation de l’image CI/CD GitLab pour un aperçu complet. (ex: image: debian:bullseye)
  5. Installez le CLI Bencher en utilisant le script pratique. (ex: before_script: ...)
  6. Utilisez la sous-commande CLI bencher run pour exécuter vos benchmarks de la branche main. Consultez la sous-commande CLI bencher run pour un aperçu complet. (ex: bencher run)
  7. DĂ©finissez l’option --project comme slug du Projet. Consultez la documentation de --project pour plus de dĂ©tails. (ex: --project save-walter-white-1234abcd)
  8. DĂ©finissez l’option --token comme variable d’environnement masquĂ©e BENCHER_API_TOKEN. Consultez la documentation de --token pour plus de dĂ©tails. (ex: --token "$BENCHER_API_TOKEN")
  9. DĂ©finissez l’option --branch comme nom de la Branche. Consultez la sĂ©lection de branche pour un aperçu complet. (ex: --branch main)
  10. DĂ©finissez l’option --testbed comme nom du Banc d’essai. Cela devrait probablement correspondre Ă  la machine sĂ©lectionnĂ©e dans image. Consultez la documentation de --testbed pour plus de dĂ©tails. (ex: --testbed debian:bullseye)
  11. DĂ©finissez l’option --adapter comme l’adaptateur de harnais de benchmark dĂ©sirĂ©. Consultez les adaptateurs de harnais de benchmark pour un aperçu complet. (ex: --adapter json)
  12. Définissez le drapeau --err pour faire échouer la commande si une Alerte est générée. Consultez Seuils & Alertes pour un aperçu complet. (ex: --err)
  13. Spécifiez les arguments de commande de benchmark. Consultez la commande de benchmark pour un aperçu complet. (ex: bencher mock)

Demandes de Fusion

Pour dĂ©tecter une rĂ©gression de performance dans les Demandes de Fusion, vous devrez exĂ©cuter vos benchmarks sur les MRs. L’exemple ci-dessous ne doit ĂȘtre utilisĂ© que pour les branches au sein du mĂȘme dĂ©pĂŽt.

benchmark_mr_branch:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
image: debian:bullseye
before_script:
- curl --proto '=https' --tlsv1.2 -sSfL https://bencher.dev/download/install-cli.sh | sh
script:
- |
bencher run \
--project save-walter-white-1234abcd \
--token "$BENCHER_API_TOKEN" \
--branch "$CI_COMMIT_REF_NAME" \
--branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" \
--branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA" \
--testbed debian:bullseye \
--adapter json \
--err \
bencher mock
  1. Créer ou mettre à jour un fichier GitLab CI/CD. (ex : .gitlab-ci.yml)
  2. Créer un travail GitLab CI/CD. (ex : benchmark_mr_branch)
  3. Exécuter if le pipeline a été déclenché par un merge_request_event. Voir la documentation des rÚgles GitLab CI/CD et la documentation des variables prédéfinies GitLab CI/CD pour un aperçu complet. (ex : rules: - if: ...)
  4. DĂ©finir l’image dans laquelle le travail sera exĂ©cutĂ©. Voir la documentation de l’image GitLab CI/CD pour un aperçu complet. (ex : image: debian:bullseye)
  5. Installer le CLI Bencher en utilisant le script pratique. (ex : before_script: ...)
  6. Utiliser la sous-commande CLI bencher run pour exécuter vos benchmarks de la branche de demande de fusion. Voir la sous-commande CLI bencher run pour un aperçu complet. (ex : bencher run)
  7. DĂ©finir l’option --project au slug du projet. Voir la documentation de l’option --project pour plus de dĂ©tails. (ex : --project save-walter-white-1234abcd)
  8. DĂ©finir l’option --token Ă  la variable d’environnement BENCHER_API_TOKEN masquĂ©e. Voir la documentation de l’option --token pour plus de dĂ©tails. (ex : --token "$BENCHER_API_TOKEN")
  9. DĂ©finir l’option --branch au nom de la branche MR en utilisant une variable prĂ©dĂ©finie GitLab CI/CD. Voir sĂ©lection de branche pour un aperçu complet. (ex : --branch "$CI_COMMIT_REF_NAME")
  10. DĂ©finir l’option --branch-start-point au point de dĂ©part de la branche cible MR en utilisant une variable prĂ©dĂ©finie GitLab CI/CD. Voir sĂ©lection de branche pour un aperçu complet. (ex : --branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME")
  11. DĂ©finir l’option --branch-start-point-hash au hash du point de dĂ©part de la branche cible MR en utilisant une variable prĂ©dĂ©finie GitLab CI/CD. Voir sĂ©lection de branche pour un aperçu complet. (ex : --branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA")
  12. DĂ©finir l’option --testbed au nom du banc d’essai. Cela devrait probablement correspondre Ă  la machine sĂ©lectionnĂ©e dans image. Voir la documentation de l’option --testbed pour plus de dĂ©tails. (ex : --testbed debian:bullseye)
  13. DĂ©finir l’option --adapter Ă  l’adaptateur de harnais de benchmark souhaitĂ©. Voir adaptateurs de harnais de benchmark pour un aperçu complet. (ex : --adapter json)
  14. Définir le drapeau --err pour échouer la commande si une Alert est générée. Voir Seuils & Alertes pour un aperçu complet. (ex : --err)
  15. Spécifier les arguments de la commande de benchmark. Voir commande de benchmark pour un aperçu complet. (ex : bencher mock)


🐰 FĂ©licitations ! Vous avez appris Ă  utiliser Bencher dans GitLab CI/CD ! 🎉


Continuez : Vue d’ensemble sur le Benchmarking ➡

đŸ€– Ce document a Ă©tĂ© automatiquement gĂ©nĂ©rĂ© par OpenAI GPT-4. Il peut ne pas ĂȘtre prĂ©cis et peut contenir des erreurs. Si vous trouvez des erreurs, veuillez ouvrir une issue sur GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Mon, April 1, 2024 at 7:00:00 AM UTC