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