Comment utiliser Bencher dans GitHub Actions
Depending on your use case, you can set up Continuous Benchmarking in GitHub Actions for your:
Assurez-vous dâavoir créé un jeton API
et de lâavoir dĂ©fini comme un secret de RĂ©fĂ©rentiel nommĂ© BENCHER_API_TOKEN avant de continuer !
Allez à Votre Répo -> ParamÚtres -> Secrets et variables -> Actions -> Nouveau secret de référentiel.
Nommez le secret BENCHER_API_TOKEN et définissez la valeur secrÚte sur votre jeton API.
Dans GitHub Actions,
les secrets ne sont pas transmis au runner lorsquâun workflow est dĂ©clenchĂ© depuis un dĂ©pĂŽt forkĂ©.
Par consĂ©quent, vous devrez utiliser une branche du mĂȘme dĂ©pĂŽt
lors de lâajout de lâun des workflows ci-dessous Ă votre dĂ©pĂŽt avec une pull request.
Si vous essayez dâajouter Bencher avec une pull request Ă partir dâun fork,
alors le secret BENCHER_API_TOKEN ne sera pas disponible.
${{ secrets.BENCHER_API_TOKEN }} sera une chaĂźne vide.
Branche de Base
Un pilier du Benchmarking Statistique Continu est dâavoir une base de rĂ©fĂ©rence historique pour votre branche de base. Cette base de rĂ©fĂ©rence historique peut alors ĂȘtre utilisĂ©e pour dĂ©tecter les rĂ©gressions de performance dans les Pull Requests.
on: push: branches: main
jobs: benchmark_base_branch: name: Continuous Benchmarking with Bencher permissions: checks: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: bencherdev/bencher@main - name: Track base branch benchmarks with Bencher run: | bencher run \ --project project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch main \ --testbed ubuntu-latest \ --threshold-measure latency \ --threshold-test t_test \ --threshold-max-sample-size 64 \ --threshold-upper-boundary 0.99 \ --thresholds-reset \ --err \ --adapter json \ --github-actions '${{ secrets.GITHUB_TOKEN }}' \ bencher mock- Créez un fichier
workflowGitHub Actions. (ex:.github/workflows/base_benchmarks.yml) - Exécutez sur les événements
pushvers la branchemain. Consultez la documentation GitHub Actionsonet la documentation GitHub Actionspushpour un aperçu complet. (ex:on: push: branches: main) - Créez un
jobGitHub Actions. (ex:jobs: benchmark_base_branch) - Définissez les autorisations pour le
GITHUB_TOKENsurwritepourchecks. (ex :permissions: checks: write) - Définissez le type de machine sur laquelle le job sera exécuté.
Consultez la documentation GitHub Actions
runs-onpour un aperçu complet. (ex:runs-on: ubuntu-latest) - Récupérez le code source de votre branche de base.
(ex:
uses: actions/checkout@v4) - Installez le Bencher CLI en utilisant lâAction GitHub.
(ex:
uses: bencherdev/bencher@main) - Utilisez la sous-commande CLI
bencher runpour exĂ©cuter vos benchmarks de la branchemain. Consultez la sous-commande CLIbencher runpour un aperçu complet. (ex:bencher run) - DĂ©finissez lâoption
--projectsur le slug du Projet. Consultez les documents--projectpour plus de dĂ©tails. (ex:--project project-abc4567-wxyz123456789) - DĂ©finissez lâoption
--tokensur le secret RepositoryBENCHER_API_TOKEN. Consultez les documents--tokenpour plus de dĂ©tails. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') - DĂ©finissez lâoption
--branchsur le nom de la branche de base. Consultez les documents--branchpour un aperçu complet. (ex:--branch main) - RĂ©glez lâoption
--testbedsur le nom du Testbed. Cela devrait probablement correspondre à la machine sélectionnée dansruns-on. Consultez les documents--testedpour plus de détails. (ex:--testbed ubuntu-latest) - Définissez le seuil pour la Branche
main, le Testbedubuntu-latest, et la Mesurelatency:- DĂ©finissez lâoption
--threshold-measuresur la Mesure intĂ©grĂ©elatencygĂ©nĂ©rĂ©e parbencher mock. Consultez les documents--threshold-measurepour plus de dĂ©tails. (ex:--threshold-measure latency) - DĂ©finissez lâoption
--threshold-testsur un test t de Student (t_test). Consultez les documents--threshold-testpour un aperçu complet. (ex:--threshold-test t_test) - DĂ©finissez lâoption
--threshold-max-sample-sizesur la taille maximale de lâĂ©chantillon de64. Consultez les documents--threshold-max-sample-sizepour plus de dĂ©tails. (ex:--threshold-max-sample-size 64) - DĂ©finissez lâoption
--threshold-upper-boundarysur la Limite SupĂ©rieure de0.99. Consultez les documents--threshold-upper-boundarypour plus de dĂ©tails. (ex:--threshold-upper-boundary 0.99) - RĂ©glez lâindicateur
--thresholds-resetpour que seul le seuil spécifié soit actif. Consultez les documents--thresholds-resetpour un aperçu complet. (ex:--thresholds-reset)
- DĂ©finissez lâoption
- RĂ©glez lâindicateur
--errpour Ă©chouer la commande si une Alerte est gĂ©nĂ©rĂ©e. Consultez les documents--errpour un aperçu complet. (ex:--err) - DĂ©finissez lâoption
--adaptersur 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) - RĂ©glez lâoption
--github-actionssur le jeton dâauthentification API GitHub pour publier les rĂ©sultats sous forme de commentaire de VĂ©rifications GitHub en utilisant la variable dâenvironnementGITHUB_TOKENde GitHub Actions. Consultez les documents--github-actionspour plus de dĂ©tails. (ex:--github-actions '${{ secrets.GITHUB_TOKEN }}') - SpĂ©cifiez les arguments de la commande de benchmark.
Consultez la commande de benchmark pour un aperçu complet.
(ex:
bencher mock)
Pull Requests
Afin de détecter une régression de performance dans les Pull Requests, vous devrez exécuter vos benchmarks sur les PRs.
Si vous vous attendez uniquement Ă recevoir des PRs Ă partir de branches au sein du mĂȘme dĂ©pĂŽt,
alors vous pouvez simplement crĂ©er un autre workflow pour fonctionner avec des Ă©vĂ©nements on pull_request du mĂȘme dĂ©pĂŽt.
â ïž Cette solution ne fonctionne que si toutes les PRs proviennent du mĂȘme dĂ©pĂŽt ! Voir Pull Requests depuis des Forks ci-dessous.
on: pull_request: types: [opened, reopened, edited, synchronize]
jobs: benchmark_pr_branch: name: Continuous Benchmarking PRs with Bencher # DO NOT REMOVE: For handling Fork PRs see Pull Requests from Forks if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository permissions: pull-requests: write runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: bencherdev/bencher@main - name: Track PR Benchmarks with Bencher run: | bencher run \ --project project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$GITHUB_HEAD_REF" \ --start-point "$GITHUB_BASE_REF" \ --start-point-hash '${{ github.event.pull_request.base.sha }}' \ --start-point-clone-thresholds \ --start-point-reset \ --testbed ubuntu-latest \ --err \ --adapter json \ --github-actions '${{ secrets.GITHUB_TOKEN }}' \ bencher mock-
Créez un fichier
workflowGitHub Actions. (ex :.github/workflows/pr_benchmarks.yml) -
Exécutez sur des événements
pull_request:opened- Une pull request a Ă©tĂ© créée.reopened- Une pull request prĂ©cĂ©demment fermĂ©e a Ă©tĂ© rouverte.edited- Le titre ou le corps dâune pull request a Ă©tĂ© modifiĂ©, ou la branche de base dâune pull request a Ă©tĂ© changĂ©e.synchronize- La branche head dâune pull request a Ă©tĂ© mise Ă jour. Par exemple, la branche head a Ă©tĂ© mise Ă jour Ă partir de la branche de base ou de nouveaux commits ont Ă©tĂ© poussĂ©s Ă la branche head.
Consultez la documentation de GitHub Actions
onet la documentation de GitHub Actionspull_requestpour un aperçu complet. (ex :on: pull_request: types: [opened, reopened, edited, synchronize]) -
Créez un
jobGitHub Actions. (ex :jobs: benchmark_pr_branch) -
Exécutez sur des événements
pull_requestuniquement si la pull request vient du mĂȘme dĂ©pĂŽt. â ïž NE SUPPRIMEZ PAS CETTE LIGNE ! Pour gĂ©rer les PRs de Forks, voir Pull Requests depuis des Forks ci-dessous. (ex :if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) -
Définissez les permissions pour le
GITHUB_TOKENsurwritepour lespull-requests. Selon vos paramĂštres GitHub, cela peut ne pas ĂȘtre nĂ©cessaire. Mais pour toutes les organisations et dĂ©pĂŽts personnels créés aprĂšs le 02 fĂ©vrier 2023, câest le comportement par dĂ©faut. Voir la documentation GitHub pour un aperçu complet. (ex :permissions: pull-requests: write) -
DĂ©finissez le type de machine sur laquelle le job sâexĂ©cutera. Voir la documentation
runs-onde GitHub Actions pour un aperçu complet. (ex :runs-on: ubuntu-latest) -
Validez le code source de la branche PR. (ex :
uses: actions/checkout@v4) -
Installez le Bencher CLI en utilisant lâAction GitHub. (ex :
uses: bencherdev/bencher@main) -
Utilisez la sous-commande CLI
bencher runpour exécuter vos benchmarks de branche de pull request. Voir la sous-commande CLIbencher runpour un aperçu complet. (ex :bencher run) -
DĂ©finissez lâoption
--projectsur le slug du projet. Voir la documentation--projectpour plus de détails. (ex :--project project-abc4567-wxyz123456789) -
DĂ©finissez lâoption
--tokensur le secret du dépÎtBENCHER_API_TOKEN. Voir la documentation--tokenpour plus de détails. (ex :--token '${{ secrets.BENCHER_API_TOKEN }}') -
DĂ©finissez lâoption
--branchsur le nom de la branche PR en utilisant la variable dâenvironnement par dĂ©fautGITHUB_HEAD_REFde GitHub Actions. Voir la documentation--branchpour un aperçu complet. (ex :--branch "$GITHUB_HEAD_REF") -
Définissez le Point de Départ pour la branche PR :
- DĂ©finissez lâoption
--start-pointsur le point de dĂ©part de la branche PR en utilisant la variable dâenvironnement par dĂ©fautGITHUB_BASE_REFde GitHub Actions. Voir la documentation--start-pointpour un aperçu complet. (ex :--start-point "$GITHUB_BASE_REF") - DĂ©finissez lâoption
--start-point-hashsur le hashgitdu point de dĂ©part de la branche PR en utilisant lâĂ©vĂ©nementpull_requestde GitHub Actions. Voir la documentation--start-point-hashpour un aperçu complet. (ex :--start-point-hash '${{ github.event.pull_request.base.sha }}') - DĂ©finissez le drapeau
--start-point-clone-thresholdspour cloner les Seuils à partir du point de départ. Voir la documentation--start-point-clone-thresholdspour un aperçu complet. (ex :--start-point-clone-thresholds) - Définissez le drapeau
--start-point-resetpour toujours rĂ©initialiser la branche PR au point de dĂ©part. Cela empĂȘchera la dĂ©rive des donnĂ©es de benchmark. Voir la documentation--start-point-resetpour un aperçu complet. (ex :--start-point-reset)
- DĂ©finissez lâoption
-
DĂ©finissez lâoption
--testbedsur le nom du Banc dâEssai. Cela devrait probablement correspondre Ă la machine sĂ©lectionnĂ©e dansruns-on. Voir la documentation--testbedpour plus de dĂ©tails. (ex :--testbed ubuntu-latest) -
Définissez le drapeau
--errpour échouer la commande si une Alerte est générée. Voir la documentation--errpour un aperçu complet. (ex :--err) -
DĂ©finissez lâoption
--adaptersur le Format de Métrique Bencher JSON (json) généré parbencher mock. Voir les adaptateurs de harnais de benchmark pour un aperçu complet. (ex :--adapter json) -
DĂ©finissez lâoption
--github-actionssur le token dâauthentification de lâAPI GitHub pour poster les rĂ©sultats en tant que commentaire sur la Pull Request en utilisant la variable dâenvironnementGITHUB_TOKENde GitHub Actions. Voir la documentation--github-actionspour plus de dĂ©tails. (ex :--github-actions '${{ secrets.GITHUB_TOKEN }}') -
Spécifiez les arguments de commande de benchmark. Voir la commande de benchmark pour un aperçu complet. (ex :
bencher mock)
Pour nettoyer la branche PR aprĂšs la fermeture de la PR,
vous pouvez crĂ©er un flux de travail sĂ©parĂ© pour sâexĂ©cuter on des Ă©vĂ©nements pull_request avec le type closed.
Ce flux de travail archivera la branche PR en utilisant la commande bencher archive.
on: pull_request: types: [closed]
jobs: archive_pr_branch: name: Archive closed PR branch with Bencher # DO NOT REMOVE: For handling Fork PRs see Pull Requests from Forks if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: bencherdev/bencher@main - name: Archive closed PR branch with Bencher run: | bencher archive \ --project project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$GITHUB_HEAD_REF"-
Créez un fichier
workflowGitHub Actions. (ex:.github/workflows/pr_benchmarks_closed.yml) -
Exécutez sur les événements
pull_request:closed- Une pull request a été fermée.
Consultez la documentation GitHub Actions
onet la documentation GitHub Actionspull_requestpour un aperçu complet. (ex:on: pull_request: types: [closed]) -
Créez un
jobGitHub Actions. (ex:jobs: archive_pr_branch) -
Exécutez sur les événements
pull_requestuniquement si la pull request provient du mĂȘme dĂ©pĂŽt. â ïž NE PAS SUPPRIMER CETTE LIGNE ! Pour gĂ©rer les PRs de fork, voir Pull Requests de Forks ci-dessous. (ex:if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) -
DĂ©finissez le type de machine sur lequel le job sâexĂ©cutera. Voir la documentation
runs-onGitHub Actions pour un aperçu complet. (ex:runs-on: ubuntu-latest) -
Validez le code source de la branche PR. (ex:
uses: actions/checkout@v4) -
Installez le Bencher CLI en utilisant lâAction GitHub. (ex:
uses: bencherdev/bencher@main) -
Utilisez la sous-commande CLI
bencher archivepour archiver la branche PR. (ex:bencher archive) -
Configurez lâoption
--projectsur le slug du projet. Consultez les documents--projectpour plus de détails. (ex:--project project-abc4567-wxyz123456789) -
Configurez lâoption
--tokenavec le secret du DépÎtBENCHER_API_TOKEN. Consultez les documents--tokenpour plus de détails. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') -
Configurez lâoption
--branchsur le nom de la branche PR en utilisant la variable dâenvironnement par dĂ©fautGITHUB_HEAD_REFde GitHub Actions. (ex:--branch "$GITHUB_HEAD_REF")
Demandes de Tirage depuis des Fourches
Si vous envisagez dâaccepter des demandes de tirage depuis des fourches, comme câest souvent le cas dans les projets open source publics, alors vous devrez gĂ©rer les choses un peu diffĂ©remment. Pour des raisons de sĂ©curitĂ©, des secrets tels que votre BENCHER_API_TOKEN et le GITHUB_TOKEN ne sont pas disponibles dans les GitHub Actions pour les PRs de fourches. Ainsi, si un contributeur externe ouvre une PR depuis une fourche, lâexemple ci-dessus ne fonctionnera pas. Consultez cette analyse de GitHub Security Lab et cet article de blog sur la prĂ©vention des pwn requests pour un aperçu complet.
Voici la maniĂšre sĂ»re et suggĂ©rĂ©e pour ajouter le benchmarking continu aux demandes de tirage de fourches. Cela nĂ©cessite deux workflows distincts. Le premier workflow exĂ©cute et met en cache les rĂ©sultats du benchmark dans le contexte pull_request. Aucun secret tel que votre BENCHER_API_TOKEN et le GITHUB_TOKEN nây est disponible. Ensuite, un second workflow tĂ©lĂ©charge les rĂ©sultats des benchmarks mis en cache dans le contexte workflow_run et les tĂ©lĂ©charge vers Bencher. Cela fonctionne car workflow_run sâexĂ©cute dans le contexte de la branche par dĂ©faut du dĂ©pĂŽt, oĂč des secrets tels que votre BENCHER_API_TOKEN et le GITHUB_TOKEN sont disponibles. Le numĂ©ro de la demande de tirage, la branche principale et la branche de base utilisĂ©es dans le workflow initial pull_request doivent Ă©galement ĂȘtre explicitement passĂ©s dans le workflow workflow_run car ils ne sont pas disponibles lĂ -bas. Ces workflows ne sâexĂ©cuteront que sâils existent sur la branche par dĂ©faut. Voir utilisation des donnĂ©es du workflow dĂ©clencheur pour un aperçu complet.
name: Run Benchmarks
on: pull_request: types: [opened, reopened, edited, synchronize]
jobs: benchmark_fork_pr_branch: name: Run Fork PR Benchmarks runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Mock Benchmarking run: | /bin/echo '{ "bencher::mock_0": { "latency": { "value": 1.0 } } }' > benchmark_results.json - name: Upload Benchmark Results uses: actions/upload-artifact@v4 with: name: benchmark_results.json path: ./benchmark_results.json - name: Upload GitHub Pull Request Event uses: actions/upload-artifact@v4 with: name: event.json path: ${{ github.event_path }}-
Créez un premier fichier
workflowGitHub Actions. (ex :.github/workflows/fork_pr_benchmarks_run.yml) -
Nommez ce workflow afin quâil puisse ĂȘtre rĂ©fĂ©rencĂ© par le deuxiĂšme workflow. (ex :
name: Run Benchmarks) -
Exécutez sur les événements
pull_request:opened- Une pull request a Ă©tĂ© créée.reopened- Une pull request prĂ©cĂ©demment fermĂ©e a Ă©tĂ© rĂ©ouverte.edited- Le titre ou le corps dâune pull request a Ă©tĂ© modifiĂ©, ou la branche de base dâune pull request a Ă©tĂ© changĂ©e.synchronize- La branche head dâune pull request a Ă©tĂ© mise Ă jour. Par exemple, la branche head a Ă©tĂ© mise Ă jour Ă partir de la branche de base ou de nouveaux commits ont Ă©tĂ© poussĂ©s vers la branche head.
Voir la documentation GitHub Actions
onet la documentation GitHub Actionspull_requestpour un aperçu complet. (ex :on: pull_request: types: [opened, reopened, edited, synchronize]) -
Créez un
jobGitHub Actions. (ex :jobs: benchmark_fork_pr_branch) -
DĂ©finissez le type de machine sur lequel le job sâexĂ©cutera. Voir la documentation GitHub Actions
runs-onpour un aperçu complet. (ex :runs-on: ubuntu-latest) -
Récupérez le code source de la branche fork PR. (ex :
uses: actions/checkout@v4) -
Exécutez vos benchmarks et enregistrez les résultats dans un fichier. (ex :
/bin/echo '{ ... }' > benchmark_results.json) -
TĂ©lĂ©chargez le fichier de rĂ©sultats des benchmarks en tant quâartifact. (ex :
uses: actions/upload-artifact@v4) -
TĂ©lĂ©chargez lâobjet dâĂ©vĂ©nement
pull_requesten tant quâartifact. (ex :uses: actions/upload-artifact@v4)
name: Track Benchmarks with Bencher
on: workflow_run: workflows: [Run Benchmarks] types: [completed]
jobs: track_fork_pr_branch: if: github.event.workflow_run.conclusion == 'success' permissions: pull-requests: write runs-on: ubuntu-latest env: BENCHMARK_RESULTS: benchmark_results.json PR_EVENT: event.json steps: - name: Download Benchmark Results uses: dawidd6/action-download-artifact@v6 with: name: ${{ env.BENCHMARK_RESULTS }} run_id: ${{ github.event.workflow_run.id }} - name: Download PR Event uses: dawidd6/action-download-artifact@v6 with: name: ${{ env.PR_EVENT }} run_id: ${{ github.event.workflow_run.id }} - name: Export PR Event Data uses: actions/github-script@v6 with: script: | let fs = require('fs'); let prEvent = JSON.parse(fs.readFileSync(process.env.PR_EVENT, {encoding: 'utf8'})); core.exportVariable("PR_HEAD", prEvent.pull_request.head.ref); core.exportVariable("PR_HEAD_SHA", prEvent.pull_request.head.sha); core.exportVariable("PR_BASE", prEvent.pull_request.base.ref); core.exportVariable("PR_BASE_SHA", prEvent.pull_request.base.sha); core.exportVariable("PR_NUMBER", prEvent.number); - uses: bencherdev/bencher@main - name: Track Benchmarks with Bencher run: | bencher run \ --project project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$PR_HEAD" \ --hash "$PR_HEAD_SHA" \ --start-point "$PR_BASE" \ --start-point-hash "$PR_BASE_SHA" \ --start-point-clone-thresholds \ --start-point-reset \ --testbed ubuntu-latest \ --err \ --adapter json \ --github-actions '${{ secrets.GITHUB_TOKEN }}' \ --ci-number "$PR_NUMBER" \ --file "$BENCHMARK_RESULTS"- Créez un premier fichier
workflowGitHub Actions. (ex:.github/workflows/fork_pr_benchmarks_track.yml) - Nommez ce workflow deuxiĂšme workflow.
(ex:
name: Track Benchmarks with Bencher) - Chainez les deux workflows avec
lâĂ©vĂ©nement
workflow_run. (ex:on: workflow_run: ...) - Créez un
jobpour GitHub Actions. (ex:jobs: track_fork_pr_branch) - Exécutez ce job uniquement si la conclusion du workflow précédent était un succÚs en utilisant
lâĂ©vĂ©nement
workflow_runde GitHub Actions. (ex:if: github.event.workflow_run.conclusion == 'success') - Définissez les permissions pour le
GITHUB_TOKENsurwritepourpull-requests. Selon vos paramĂštres GitHub, cela peut ne pas ĂȘtre nĂ©cessaire. Mais pour toutes les organisations et les dĂ©pĂŽts personnels créés aprĂšs le 02 fĂ©vrier 2023, ceci est le comportement par dĂ©faut. Consultez la documentation GitHub pour un aperçu complet. (ex:permissions: pull-requests: write) - DĂ©finissez le type de machine sur lequel le job sera exĂ©cutĂ©.
Consultez la documentation
runs-onde GitHub Actions pour un aperçu complet. (ex:runs-on: ubuntu-latest) - DĂ©finissez les noms des fichiers de rĂ©sultats de benchmark et de lâobjet
pull_requestcomme variables dâenvironnement. (ex:env: ...) - TĂ©lĂ©chargez les rĂ©sultats de benchmark mis en cache et lâĂ©vĂ©nement
pull_requesten utilisant lâAction GitHubaction-download-artifact. (ex:uses: dawidd6/action-download-artifact@v6) - Exportez les donnĂ©es nĂ©cessaires de lâĂ©vĂ©nement
pull_requesten tant que variables dâenvironnement intermĂ©diaires. (ex:core.exportVariable(...)) - Installez le Bencher CLI en utilisant lâAction GitHub.
(ex:
uses: bencherdev/bencher@main) - Utilisez la sous-commande CLI
bencher runpour suivre vos benchmarks de branche de pull request forkĂ©e. Consultez la sous-commande CLIbencher runpour un aperçu complet. (ex:bencher run) - DĂ©finissez lâoption
--projectsur le slug du Projet. Consultez les documents--projectpour plus de dĂ©tails. (ex:--project project-abc4567-wxyz123456789) - DĂ©finissez lâoption
--tokensur le secret RepositoryBENCHER_API_TOKEN. Consultez les documents--tokenpour plus de dĂ©tails. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') - DĂ©finissez lâoption
--branchsur le nom de la branche PR forkĂ©e en utilisant une variable dâenvironnement intermĂ©diaire. Consultez les documents--branchpour un aperçu complet. (ex:--branch "$PR_HEAD") - DĂ©finissez lâoption
--hashsur le hashgitde la branche PR forkĂ©e en utilisant une variable dâenvironnement intermĂ©diaire. Consultez les documents--hashpour un aperçu complet. (ex:--hash "$PR_HEAD_SHA") - DĂ©finissez le point de dĂ©part pour la branche PR forkĂ©e :
- DĂ©finissez lâoption
--start-pointsur le point de dĂ©part de la branche PR forkĂ©e en utilisant une variable dâenvironnement intermĂ©diaire. Consultez les documents--start-pointpour un aperçu complet. (ex:--start-point "$PR_BASE") - DĂ©finissez lâoption
--start-point-hashsur le hashgitdu point de dĂ©part de la branche PR forkĂ©e en utilisant une variable dâenvironnement intermĂ©diaire. Consultez les documents--start-point-hashpour un aperçu complet. (ex:--start-point-hash "$PR_BASE_SHA") - DĂ©finissez lâoption
--start-point-clone-thresholdspour cloner les seuils Ă partir du point de dĂ©part. Consultez les documents--start-point-clone-thresholdspour un aperçu complet. (ex:--start-point-clone-thresholds) - DĂ©finissez lâoption
--start-point-resetpour toujours rĂ©initialiser la branche PR forkĂ©e au point de dĂ©part. Cela empĂȘchera la dĂ©rive des donnĂ©es de benchmark. Consultez les documents--start-point-resetpour un aperçu complet. (ex:--start-point-reset)
- DĂ©finissez lâoption
- DĂ©finissez lâoption
--testbedsur le nom de lâenvironnement de test. Cela devrait probablement correspondre Ă la machine sĂ©lectionnĂ©e dansruns-on. Consultez les documents--testedpour plus de dĂ©tails. (ex:--testbed ubuntu-latest) - DĂ©finissez le drapeau
--errpour Ă©chouer la commande si une alerte est gĂ©nĂ©rĂ©e. Consultez les documents--errpour un aperçu complet. (ex:--err) - DĂ©finissez lâoption
--adaptersur le format JSON du Bencher Metric Format (json) gĂ©nĂ©rĂ© parbencher mock. Consultez les adapters de harness de benchmark pour un aperçu complet. (ex:--adapter json) - DĂ©finissez lâoption
--github-actionssur le jeton dâauthentification de lâAPI GitHub pour publier les rĂ©sultats sous forme de commentaire sur la Pull Request en utilisant la variable dâenvironnementGITHUB_TOKENde GitHub Actions. Consultez les documents--github-actionspour plus de dĂ©tails. (ex:--github-actions '${{ secrets.GITHUB_TOKEN }}') - DĂ©finissez lâoption
--ci-numbersur le numĂ©ro de pull request en utilisant une variable dâenvironnement intermĂ©diaire. Consultez les documents--ci-numberpour plus de dĂ©tails. (ex:--ci-number "$PR_NUMBER") - DĂ©finissez lâoption
--filesur le chemin du fichier des résultats de benchmark. Consultez les commandes de benchmark pour un aperçu complet. (ex:--file "$BENCHMARK_RESULTS")
Pour nettoyer la branche de PR fork aprĂšs la fermeture de sa PR,
vous pouvez crĂ©er un flux de travail sĂ©parĂ© pour sâexĂ©cuter lors des Ă©vĂ©nements on pull_request_target de type closed.
Ce flux de travail archivera la branche de PR fork en utilisant la commande bencher archive.
on: pull_request_target: types: [closed]
jobs: archive_fork_pr_branch: name: Archive closed fork PR branch with Bencher runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: bencherdev/bencher@main - name: Archive closed fork PR branch with Bencher run: | bencher archive \ --project project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$GITHUB_HEAD_REF"-
Créez un fichier de
workflowGitHub Actions. (ex :.github/workflows/fork_pr_benchmarks_closed.yml) -
Exécutez sur les événements
pull_request_target:closed- Une pull request a été fermée.
Consultez la documentation
onde GitHub Actions et la documentationpull_request_targetde GitHub Actions pour un aperçu complet. (ex :on: pull_request_target: types: [closed]) -
Créez un
jobGitHub Actions. (ex :jobs: archive_pr_branch) -
DĂ©finissez le type de machine sur laquelle le job sâexĂ©cutera. Consultez la documentation
runs-onde GitHub Actions pour un aperçu complet. (ex :runs-on: ubuntu-latest) -
Récupérez le code source de la branche PR. (ex :
uses: actions/checkout@v4) -
Installez le Bencher CLI en utilisant lâaction GitHub. (ex :
uses: bencherdev/bencher@main) -
Utilisez la sous-commande CLI
bencher archivepour archiver la branche PR. (ex :bencher archive) -
DĂ©finissez lâoption
--projectavec le slug du projet. Consultez la documentation de lâoption--projectpour plus de dĂ©tails. (ex :--project project-abc4567-wxyz123456789) -
DĂ©finissez lâoption
--tokenavec le secret de RepositoryBENCHER_API_TOKEN. Consultez la documentation de lâoption--tokenpour plus de dĂ©tails. (ex :--token '${{ secrets.BENCHER_API_TOKEN }}') -
DĂ©finissez lâoption
--branchavec le nom de la branche PR en utilisant la variable dâenvironnement par dĂ©fautGITHUB_HEAD_REFde GitHub Actions. (ex :--branch "$GITHUB_HEAD_REF")
đ° FĂ©licitations ! Vous avez appris comment utiliser Bencher dans GitHub Actions ! đ