Wie man Bencher in GitLab CI/CD verwendet


Je nach Ihrem Anwendungsfall können Sie das kontinuierliche Benchmarking in GitLab CI/CD für Ihre einrichten:

🐰 Stellen Sie sicher, dass Sie einen API-Token erstellt haben und setzen Sie ihn als maskierte Variable mit dem Namen BENCHER_API_TOKEN, bevor Sie weitermachen! Navigieren Sie zu Ihr Repo -> Einstellungen -> CI/CD -> Variablen -> Erweitern -> Variable hinzufügen. Der Variablenschlüssel sollte BENCHER_API_TOKEN und der Variablenwert sollte Ihr API-Token sein. Aktivieren Sie beide Kontrollkästchen Variablen schützen und Variable maskieren.

Zielbranch

Ein Grundpfeiler des Statistischen Kontinuierlichen Benchmarkings ist eine historische Basislinie für Ihren Zielbranch zu haben. Diese historische Basislinie kann dann verwendet werden, um Leistungsregressionen in Merge Requests zu erkennen.

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. Erstellen Sie eine GitLab CI/CD-Datei. (z.B.: .gitlab-ci.yml)
  2. Erstellen Sie einen GitLab CI/CD-Job. (z.B.: benchmark_target_branch)
  3. Führen Sie if das Pipeline durch einen push auf den main-Branch ausgelöst wurde. Siehe die GitLab CI/CD rules Dokumentation und GitLab CI/CD vordefinierte Variablen Dokumentation für einen kompletten Überblick. (z.B.: rules: - if: ...)
  4. Stellen Sie das image ein, in dem der Job ausgeführt wird. Siehe die GitLab CI/CD image Dokumentation für einen kompletten Überblick. (z.B.: image: debian:bullseye)
  5. Installieren Sie das Bencher CLI mithilfe des Convenience-Skripts. (z.B.: before_script: ...)
  6. Verwenden Sie das bencher run CLI-Unterbefehl um Ihre Benchmarks des main-Branchs auszuführen. Siehe den bencher run CLI-Unterbefehl für einen kompletten Überblick. (z.B.: bencher run)
  7. Stellen Sie die Option --project auf den Projektslug ein. Siehe die --project Docs für mehr Details. (z.B.: --project save-walter-white-1234abcd)
  8. Stellen Sie die Option --token auf die maskierte BENCHER_API_TOKEN Umgebungsvariable ein. Siehe die --token Docs für mehr Details. (z.B.: --token "$BENCHER_API_TOKEN")
  9. Stellen Sie die Option --branch auf den Branch-Namen ein. Siehe Branch-Auswahl für einen kompletten Überblick. (z.B.: --branch main)
  10. Stellen Sie die Option --testbed auf den Namen des Testbeds ein. Dies sollte wahrscheinlich mit der Maschine übereinstimmen, die in image ausgewählt wurde. Siehe die --testbed Docs für mehr Details. (z.B.: --testbed debian:bullseye)
  11. Stellen Sie die Option --adapter auf den gewünschten Benchmark-Harness-Adapter ein. Siehe Benchmark-Harness-Adapter für einen kompletten Überblick. (z.B.: --adapter json)
  12. Stellen Sie die Option --err ein, um den Befehl fehlschlagen zu lassen, wenn ein Alert generiert wird. Siehe Schwellenwerte & Alarme für einen kompletten Überblick. (z.B.: --err)
  13. Geben Sie die Benchmark-Befehlsargumente an. Siehe Benchmark-Befehl für einen kompletten Überblick. (z.B.: bencher mock)

Merge Requests

Um Leistungsregressionen in Merge Requests zu erkennen, müssen Sie Ihre Benchmarks auf MRs ausführen. Das untenstehende Beispiel sollte nur für Branches innerhalb des gleichen Repositorys verwendet werden.

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. Erstellen oder aktualisieren Sie eine GitLab CI/CD-Datei. (Bsp.: .gitlab-ci.yml)
  2. Erstellen Sie einen GitLab CI/CD-Job. (Bsp.: benchmark_mr_branch)
  3. Führen Sie es aus if die Pipeline durch ein merge_request_event ausgelöst wurde. Siehe die GitLab CI/CD rules Dokumentation und GitLab CI/CD vordefinierte Variablen Dokumentation für einen vollständigen Überblick. (Bsp.: rules: - if: ...)
  4. Legen Sie das image fest, in dem der Job ausgeführt wird. Siehe die GitLab CI/CD image Dokumentation für einen vollständigen Überblick. (Bsp.: image: debian:bullseye)
  5. Installieren Sie die Bencher CLI mit dem Convenience-Script. (Bsp.: before_script: ...)
  6. Verwenden Sie das bencher run CLI-Unterbefehl, um Ihre Merge-Anforderungsbranch-Benchmarks auszuführen. Siehe den bencher run CLI-Unterbefehl für einen vollständigen Überblick. (Bsp.: bencher run)
  7. Legen Sie die Option --project auf den Projektslug fest. Siehe die --project Dokumentation für weitere Details. (Bsp.: --project save-walter-white-1234abcd)
  8. Legen Sie die Option --token auf die maskierte BENCHER_API_TOKEN Umgebungsvariable fest. Siehe die --token Dokumentation für weitere Details. (Bsp.: --token "$BENCHER_API_TOKEN")
  9. Legen Sie die Option --branch auf den Namen des MR-Branches fest mit einer GitLab CI/CD vordefinierten Variable. Siehe Branch-Auswahl für einen vollständigen Überblick. (Bsp.: --branch "$CI_COMMIT_REF_NAME")
  10. Legen Sie die Option --branch-start-point auf den Startpunkt des MR-Zielbranches fest mit einer GitLab CI/CD vordefinierten Variable. Siehe Branch-Auswahl für einen vollständigen Überblick. (Bsp.: --branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME")
  11. Legen Sie die Option --branch-start-point-hash auf den Startpunkthash des MR-Zielbranches fest mit einer GitLab CI/CD vordefinierten Variable. Siehe Branch-Auswahl für einen vollständigen Überblick. (Bsp.: --branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA")
  12. Legen Sie die Option --testbed auf den Namen des Testbetts fest. Dies sollte wahrscheinlich der Maschine entsprechen, die in image ausgewählt wurde. Siehe die --testbed Dokumentation für weitere Details. (Bsp.: --testbed debian:bullseye)
  13. Legen Sie die Option --adapter auf den gewünschten Benchmark-Harness-Adapter fest. Siehe Benchmark-Harness-Adapter für einen vollständigen Überblick. (Bsp.: --adapter json)
  14. Setzen Sie das --err Flag, um den Befehl fehlschlagen zu lassen, wenn ein Alarm ausgelöst wird. Siehe Schwellenwerte & Alarme für einen vollständigen Überblick. (Bsp.: --err)
  15. Geben Sie die Benchmark-Befehlsargumente an. Siehe Benchmark-Befehl für einen vollständigen Überblick. (Bsp.: bencher mock)


🐰 Glückwunsch! Du hast gelernt, wie man Bencher in GitLab CI/CD verwendet! 🎉


Weiter geht’s: Übersicht über das Benchmarking ➡

🤖 Dieses Dokument wurde automatisch von OpenAI GPT-4 generiert. Es ist möglicherweise nicht korrekt und kann Fehler enthalten. Wenn Sie Fehler finden, öffnen Sie bitte ein Problem auf GitHub.


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