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-Anfragen

Um Leistungsregressionen in Merge Requests zu erfassen, müssen Sie Ihre Benchmarks auf MRs ausführen. Das folgende Beispiel sollte nur für Branches im gleichen Repository 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" \
--branch-reset \
--testbed debian:bullseye \
--adapter json \
--err \
bencher mock
  1. Erstellen oder aktualisieren Sie eine GitLab CI/CD-Datei. (z.B.: .gitlab-ci.yml)
  2. Erstellen Sie einen GitLab CI/CD-Job. (z.B.: benchmark_mr_branch)
  3. Führen Sie den Job nur aus, wenn die Pipeline durch ein merge_request_event ausgelöst wurde. Sehen Sie sich die GitLab CI/CD rules Dokumentation und die GitLab CI/CD vordefinierte Variablen Dokumentation für einen vollständigen Überblick an. (z.B.: rules: - if: ...)
  4. Legen Sie das image fest, in dem der Job ausgeführt wird. Sehen Sie sich die GitLab CI/CD image Dokumentation für einen vollständigen Überblick an. (z.B.: image: debian:bullseye)
  5. Installieren Sie die Bencher CLI mithilfe des Convenience-Skripts. (z.B.: before_script: ...)
  6. Verwenden Sie das bencher run CLI-Unterkommando, um Ihre Merge-Request-Branch-Benchmarks auszuführen. Sehen Sie sich das bencher run CLI-Unterkommando für einen vollständigen Überblick an. (z.B.: bencher run)
  7. Setzen Sie die --project Option auf den Project Slug. Sehen Sie sich die --project Dokumentation für weitere Details an. (z.B.: --project save-walter-white-1234abcd)
  8. Setzen Sie die --token Option auf die maskierte BENCHER_API_TOKEN Umgebungsvariable. Sehen Sie sich die --token Dokumentation für weitere Details an. (z.B.: --token "$BENCHER_API_TOKEN")
  9. Setzen Sie die --branch Option auf den MR-Branch-Namen unter Verwendung einer vordefinierten GitLab CI/CD-Variable. Sehen Sie sich die Branch-Auswahl für einen vollständigen Überblick an. (z.B.: --branch "$CI_COMMIT_REF_NAME")
  10. Setzen Sie die --branch-start-point Option auf den Startpunkt des Ziel-Branchs des MRs unter Verwendung einer vordefinierten GitLab CI/CD-Variable. Sehen Sie sich die Branch-Auswahl für einen vollständigen Überblick an. (z.B.: --branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME")
  11. Setzen Sie die --branch-start-point-hash Option auf den Hash des Startpunktes des Ziel-Branchs des MRs unter Verwendung einer vordefinierten GitLab CI/CD-Variable. Sehen Sie sich die Branch-Auswahl für einen vollständigen Überblick an. (z.B.: --branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA")
  12. Setzen Sie die --branch-reset Flag, um den Branch immer auf den Startpunkt zurückzusetzen. Dies verhindert ein Abdriften von Benchmark-Daten. Sehen Sie sich die Branch-Auswahl für einen vollständigen Überblick an. (z.B.: --branch-reset)
  13. Setzen Sie die --testbed Option auf den Namen des Testbeds. Dies sollte wahrscheinlich mit der in image ausgewählten Maschine übereinstimmen. Sehen Sie sich die --testbed Dokumentation für weitere Details an. (z.B.: --testbed debian:bullseye)
  14. Setzen Sie die --adapter Option auf den gewünschten Benchmark-Harness-Adapter. Sehen Sie sich die Benchmark-Harness-Adapter für einen vollständigen Überblick an. (z.B.: --adapter json)
  15. Setzen Sie die --err Flag, um den Befehl fehlschlagen zu lassen, wenn eine Warnung generiert wird. Sehen Sie sich die Thresholds & Alerts für einen vollständigen Überblick an. (z.B.: --err)
  16. Geben Sie die Argumente des Benchmark-Befehls an. Sehen Sie sich den Benchmark-Befehl für einen vollständigen Überblick an. (z.B.: 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