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 zuIhr Repo -> Einstellungen -> CI/CD -> Variablen -> Erweitern -> Variable hinzufügen
. Der Variablenschlüssel sollteBENCHER_API_TOKEN
und der Variablenwert sollte Ihr API-Token sein. Aktivieren Sie beide KontrollkästchenVariablen schützen
undVariable 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
- Erstellen Sie eine GitLab CI/CD-Datei.
(z.B.:
.gitlab-ci.yml
) - Erstellen Sie einen GitLab CI/CD-Job.
(z.B.:
benchmark_target_branch
) - Führen Sie
if
das Pipeline durch einenpush
auf denmain
-Branch ausgelöst wurde. Siehe die GitLab CI/CDrules
Dokumentation und GitLab CI/CD vordefinierte Variablen Dokumentation für einen kompletten Überblick. (z.B.:rules: - if: ...
) - Stellen Sie das
image
ein, in dem der Job ausgeführt wird. Siehe die GitLab CI/CDimage
Dokumentation für einen kompletten Überblick. (z.B.:image: debian:bullseye
) - Installieren Sie das Bencher CLI mithilfe des Convenience-Skripts.
(z.B.:
before_script: ...
) - Verwenden Sie das
bencher run
CLI-Unterbefehl um Ihre Benchmarks desmain
-Branchs auszuführen. Siehe denbencher run
CLI-Unterbefehl für einen kompletten Überblick. (z.B.:bencher run
) - Stellen Sie die Option
--project
auf den Projektslug ein. Siehe die--project
Docs für mehr Details. (z.B.:--project save-walter-white-1234abcd
) - Stellen Sie die Option
--token
auf die maskierteBENCHER_API_TOKEN
Umgebungsvariable ein. Siehe die--token
Docs für mehr Details. (z.B.:--token "$BENCHER_API_TOKEN"
) - Stellen Sie die Option
--branch
auf den Branch-Namen ein. Siehe Branch-Auswahl für einen kompletten Überblick. (z.B.:--branch main
) - Stellen Sie die Option
--testbed
auf den Namen des Testbeds ein. Dies sollte wahrscheinlich mit der Maschine übereinstimmen, die inimage
ausgewählt wurde. Siehe die--testbed
Docs für mehr Details. (z.B.:--testbed debian:bullseye
) - 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
) - 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
) - 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
- Erstellen oder aktualisieren Sie eine GitLab CI/CD-Datei.
(Bsp.:
.gitlab-ci.yml
) - Erstellen Sie einen GitLab CI/CD-Job.
(Bsp.:
benchmark_mr_branch
) - Führen Sie es aus
if
die Pipeline durch einmerge_request_event
ausgelöst wurde. Siehe die GitLab CI/CDrules
Dokumentation und GitLab CI/CD vordefinierte Variablen Dokumentation für einen vollständigen Überblick. (Bsp.:rules: - if: ...
) - Legen Sie das
image
fest, in dem der Job ausgeführt wird. Siehe die GitLab CI/CDimage
Dokumentation für einen vollständigen Überblick. (Bsp.:image: debian:bullseye
) - Installieren Sie die Bencher CLI mit dem Convenience-Script.
(Bsp.:
before_script: ...
) - Verwenden Sie das
bencher run
CLI-Unterbefehl, um Ihre Merge-Anforderungsbranch-Benchmarks auszuführen. Siehe denbencher run
CLI-Unterbefehl für einen vollständigen Überblick. (Bsp.:bencher run
) - Legen Sie die Option
--project
auf den Projektslug fest. Siehe die--project
Dokumentation für weitere Details. (Bsp.:--project save-walter-white-1234abcd
) - Legen Sie die Option
--token
auf die maskierteBENCHER_API_TOKEN
Umgebungsvariable fest. Siehe die--token
Dokumentation für weitere Details. (Bsp.:--token "$BENCHER_API_TOKEN"
) - 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"
) - 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"
) - 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"
) - Legen Sie die Option
--testbed
auf den Namen des Testbetts fest. Dies sollte wahrscheinlich der Maschine entsprechen, die inimage
ausgewählt wurde. Siehe die--testbed
Dokumentation für weitere Details. (Bsp.:--testbed debian:bullseye
) - 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
) - 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
) - 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! 🎉