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-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.
- Erstellen oder aktualisieren Sie eine GitLab CI/CD-Datei.
(z.B.:
.gitlab-ci.yml
) - Erstellen Sie einen GitLab CI/CD-Job.
(z.B.:
benchmark_mr_branch
) - Führen Sie den Job nur aus, wenn die Pipeline durch ein
merge_request_event
ausgelöst wurde. Sehen Sie sich die GitLab CI/CDrules
Dokumentation und die GitLab CI/CD vordefinierte Variablen Dokumentation für einen vollständigen Überblick an. (z.B.:rules: - if: ...
) - Legen Sie das
image
fest, in dem der Job ausgeführt wird. Sehen Sie sich die GitLab CI/CDimage
Dokumentation für einen vollständigen Überblick an. (z.B.:image: debian:bullseye
) - Installieren Sie die Bencher CLI mithilfe des Convenience-Skripts.
(z.B.:
before_script: ...
) - Verwenden Sie das
bencher run
CLI-Unterkommando, um Ihre Merge-Request-Branch-Benchmarks auszuführen. Sehen Sie sich dasbencher run
CLI-Unterkommando für einen vollständigen Überblick an. (z.B.:bencher run
) - 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
) - Setzen Sie die
--token
Option auf die maskierteBENCHER_API_TOKEN
Umgebungsvariable. Sehen Sie sich die--token
Dokumentation für weitere Details an. (z.B.:--token "$BENCHER_API_TOKEN"
) - 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"
) - 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"
) - 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"
) - 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
) - Setzen Sie die
--testbed
Option auf den Namen des Testbeds. Dies sollte wahrscheinlich mit der inimage
ausgewählten Maschine übereinstimmen. Sehen Sie sich die--testbed
Dokumentation für weitere Details an. (z.B.:--testbed debian:bullseye
) - 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
) - 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
) - 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! 🎉