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.
- 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.
- 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! 🎉