Comment utiliser Bencher dans GitLab CI/CD
Depending on your use case, you can set up Continuous Benchmarking in GitLab CI/CD for your:
Make sure you have created an API token
and set it as a masked variable named BENCHER_API_TOKEN
before continuing on!
Navigate to Your Repo -> Settings -> CI/CD -> Variables -> Expand -> Add variable
.
The variable key should be BENCHER_API_TOKEN
and the variable value should be your API token.
Check both the Protect variable
and Mask variable
boxes.
Branche Cible
Un pilier du Benchmarking Continu Statistique est dâavoir une base historique pour votre branche cible. Cette base historique peut alors ĂȘtre utilisĂ©e pour dĂ©tecter les rĂ©gressions de performance dans les demandes de fusion.
- Créez un fichier GitLab CI/CD.
(ex :
.gitlab-ci.yml
) - Créez un job GitLab CI/CD.
(ex :
benchmark_target_branch
) - Exécutez
if
le pipeline a été déclenché par unpush
sur la branchemain
. Consultez la documentationrules
de GitLab CI/CD et la documentation des variables prédéfinies de GitLab CI/CD pour un aperçu complet. (ex :rules: if: ...
) - DĂ©finissez lâ
image
dans laquelle le job sâexĂ©cutera. Consultez la documentationimage
de GitLab CI/CD pour un aperçu complet. (ex :image: debian:bullseye
) - Installez le Bencher CLI Ă lâaide du script pratique.
(ex :
before_script: ...
) - Utilisez la sous-commande CLI
bencher run
pour exécuter vos benchmarks de la branchemain
. Consultez la sous-commande CLIbencher run
pour un aperçu complet. (ex :bencher run
) - DĂ©finissez lâoption
--project
sur le slug du projet. Consultez la documentation--project
pour plus de détails. (ex :--project save-walter-white-1234abcd
) - DĂ©finissez lâoption
--token
sur la variable dâenvironnement masquĂ©eBENCHER_API_TOKEN
. Consultez la documentation--token
pour plus de détails. (ex :--token "$BENCHER_API_TOKEN"
) - DĂ©finissez lâoption
--branch
sur le nom de la branche. Consultez la documentation--branch
pour un aperçu complet. (ex :--branch main
) - DĂ©finissez lâoption
--testbed
sur le nom du banc dâessai. Cela doit probablement correspondre Ă la machine sĂ©lectionnĂ©e dansimage
. Consultez la documentation--testbed
pour plus de détails. (ex :--testbed debian:bullseye
) - DĂ©finissez le seuil pour la branche
main
, le banc dâessaidebian:bullseye
, et la mesure delatency
:- DĂ©finissez lâoption
--threshold-measure
sur la mesure intégréelatency
qui est générée parbencher mock
. Consultez la documentation--threshold-measure
pour plus de détails. (ex :--threshold-measure latency
) - DĂ©finissez lâoption
--threshold-test
sur un test t de Student (t_test
). Consultez la documentation--threshold-test
pour un aperçu complet. (ex :--threshold-test t_test
) - DĂ©finissez lâoption
--threshold-max-sample-size
sur la taille dâĂ©chantillon maximale de64
. Consultez la documentation--threshold-max-sample-size
pour plus de détails. (ex :--threshold-max-sample-size 64
) - DĂ©finissez lâoption
--threshold-upper-boundary
sur la limite supérieure de0.99
. Consultez la documentation--threshold-upper-boundary
pour plus de détails. (ex :--threshold-upper-boundary 0.99
) - DĂ©finissez le flag
--thresholds-reset
pour que seul le seuil spécifié soit actif. Consultez la documentation--thresholds-reset
pour un aperçu complet. (ex :--thresholds-reset
)
- DĂ©finissez lâoption
- DĂ©finissez le flag
--err
pour que la commande échoue si une alerte est générée. Consultez la documentation--err
pour un aperçu complet. (ex :--err
) - DĂ©finissez lâoption
--adapter
sur le format JSON de Bencher Metric (json
) Bencher Metric Format JSON (json
) qui est généré parbencher mock
. Consultez les adaptateurs de harnais de benchmark pour un aperçu complet. (ex :--adapter json
) - Spécifiez les arguments de commande du benchmark.
Consultez la commande du benchmark pour un aperçu complet.
(ex :
bencher mock
)
Demandes de Fusion
Pour dĂ©tecter une rĂ©gression de performance dans les Demandes de Fusion, vous devrez exĂ©cuter vos benchmarks sur les MRs. Lâexemple ci-dessous ne doit ĂȘtre utilisĂ© que pour les branches au sein du mĂȘme dĂ©pĂŽt.
- Mettez Ă jour le fichier GitLab CI/CD.
(ex :
.gitlab-ci.yml
) - Créez un travail GitLab CI/CD.
(ex :
benchmark_mr_branch
) - Exécutez si le pipeline a été déclenché par un
merge_request_event
. Consultez la documentation desrĂšgles
GitLab CI/CD et la documentation des variables prédéfinies GitLab CI/CD pour un aperçu complet. (ex :rules: if: ...
) - DĂ©finissez lâ
image
dans laquelle le travail sera exécuté. Consultez la documentation desimages
GitLab CI/CD pour un aperçu complet. (ex :image: debian:bullseye
) - Installez lâoutil Bencher CLI en utilisant le script pratique.
(ex :
before_script: ...
) - Utilisez la sous-commande CLI
bencher run
pour exécuter vos benchmarks de branche de demande de fusion. Consultez la sous-commande CLIbencher run
pour un aperçu complet. (ex :bencher run
) - DĂ©finissez lâoption
--project
sur le slug du Projet. Consultez la documentation--project
pour plus de détails. (ex :--project save-walter-white-1234abcd
) - DĂ©finissez lâoption
--token
sur la variable dâenvironnement masquĂ©eBENCHER_API_TOKEN
. Consultez la documentation--token
pour plus de détails. (ex :--token "$BENCHER_API_TOKEN"
) - DĂ©finissez lâoption
--branch
sur le nom de la branche MR en utilisant une variable prédéfinie GitLab CI/CD. Consultez la documentation--branch
pour un aperçu complet. (ex :--branch "$CI_COMMIT_REF_NAME"
) - DĂ©finissez le Point de DĂ©part pour la Branchement MR :
- DĂ©finissez lâoption
--start-point
sur le point de départ de la branche MR en utilisant une variable prédéfinie GitLab CI/CD. Consultez la documentation--start-point
pour un aperçu complet. (ex :--start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - DĂ©finissez lâoption
--start-point-hash
sur le hashgit
du point de départ de la branche MR en utilisant une variable prédéfinie GitLab CI/CD. Consultez la documentation--start-point-hash
pour un aperçu complet. (ex :--start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - Activez le drapeau
--start-point-clone-thresholds
pour cloner les Seuils du point de départ. Consultez la documentation--start-point-clone-thresholds
pour un aperçu complet. (ex :--start-point-clone-thresholds
) - Activez le drapeau
--start-point-reset
pour toujours rĂ©initialiser la Branche MR au point de dĂ©part. Cela empĂȘchera la dĂ©rive des donnĂ©es des benchmarks. Consultez la documentation--start-point-reset
pour un aperçu complet. (ex :--start-point-reset
)
- DĂ©finissez lâoption
- DĂ©finissez lâoption
--testbed
sur le nom du banc dâessai. Cela devrait probablement correspondre Ă la machine sĂ©lectionnĂ©e dansimage
. Consultez la documentation--testbed
pour plus de détails. (ex :--testbed debian:bullseye
) - Activez le drapeau
--err
pour échouer à la commande si une alerte est générée. Consultez la documentation--err
pour un aperçu complet. (ex :--err
) - DĂ©finissez lâoption
--adapter
sur Bencher Metric Format JSON (json
) qui est généré parbencher mock
. Consultez les adaptateurs de harnais de benchmark pour un aperçu complet. (ex :--adapter json
) - Spécifiez les arguments de la commande benchmark.
Consultez la commande benchmark pour un aperçu complet.
(ex :
bencher mock
)
Pour nettoyer la branche MR aprĂšs la fermeture de sa MR,
vous pouvez crĂ©er un travail distinct qui interroge lâĂ©tat de la MR en utilisant lâAPI GitLab.
Si lâĂ©tat est closed
, ce travail archivera la branche MR en utilisant la commande bencher archive
.
- Mettez Ă jour le fichier CI/CD de GitLab.
(ex:
.gitlab-ci.yml
) - Créez un travail CI/CD de GitLab.
(ex:
archive_mr_branch
) - Exécutez
if
le pipeline a été déclenché par unmerge_request_event
. Consultez la documentation desrules
CI/CD de GitLab et la documentation des variables prédéfinies CI/CD de GitLab pour un aperçu complet. (ex:rules: if: ...
) - DĂ©finissez lâ
image
dans laquelle le travail sâexĂ©cutera. Consultez la documentation de lâimage
CI/CD de GitLab pour un aperçu complet. (ex:image: debian:bullseye
) - Installez le Bencher CLI en utilisant le script de commodité.
(ex:
before_script: curl ...
) - VĂ©rifiez lâĂ©tat de la MR via lâAPI GitLab.
(ex:
before_script: MR_STATE=$(...)
) - Utilisez la sous-commande CLI
bencher archive
pour archiver la branche MR si lâĂ©tat de la MR estclosed
. (ex:bencher archive
) - DĂ©finissez lâoption
--project
sur le slug du projet. Consultez la documentation de lâoption--project
pour plus de détails. (ex:--project save-walter-white-1234abcd
) - DĂ©finissez lâoption
--token
sur la variable dâenvironnement masquĂ©eBENCHER_API_TOKEN
. Consultez la documentation de lâoption--token
pour plus de détails. (ex:--token "$BENCHER_API_TOKEN"
) - DĂ©finissez lâoption
--branch
sur le nom de la branche MR en utilisant une variable prédéfinie CI/CD de GitLab. (ex:--branch "$CI_COMMIT_REF_NAME"
)
đ° FĂ©licitations ! Vous avez appris Ă utiliser Bencher dans GitLab CI/CD ! đ