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.

.github/workflows/base_benchmarks.yml
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 save-walter-white-1234abcd \
--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
  1. Créez un fichier workflow GitHub Actions. (ex: .github/workflows/base_benchmarks.yml)
  2. Exécutez sur les événements push vers la branche main. Consultez la documentation GitHub Actions on et la documentation GitHub Actions push pour un aperçu complet. (ex: on: push: branches: main)
  3. Créez un job GitHub Actions. (ex: jobs: benchmark_base_branch)
  4. DĂ©finissez les autorisations pour le GITHUB_TOKEN sur write pour checks. (ex : permissions: checks: write)
  5. Définissez le type de machine sur laquelle le job sera exécuté. Consultez la documentation GitHub Actions runs-on pour un aperçu complet. (ex: runs-on: ubuntu-latest)
  6. Récupérez le code source de votre branche de base. (ex: uses: actions/checkout@v4)
  7. Installez le Bencher CLI en utilisant l’Action GitHub. (ex: uses: bencherdev/bencher@main)
  8. Utilisez la sous-commande CLI bencher run pour exécuter vos benchmarks de la branche main. Consultez la sous-commande CLI bencher run pour un aperçu complet. (ex: bencher run)
  9. DĂ©finissez l’option --project sur le slug du Projet. Consultez les documents --project pour plus de dĂ©tails. (ex: --project save-walter-white-1234abcd)
  10. DĂ©finissez l’option --token sur le secret Repository BENCHER_API_TOKEN. Consultez les documents --token pour plus de dĂ©tails. (ex: --token '${{ secrets.BENCHER_API_TOKEN }}')
  11. DĂ©finissez l’option --branch sur le nom de la branche de base. Consultez les documents --branch pour un aperçu complet. (ex: --branch main)
  12. RĂ©glez l’option --testbed sur le nom du Testbed. Cela devrait probablement correspondre Ă  la machine sĂ©lectionnĂ©e dans runs-on. Consultez les documents --tested pour plus de dĂ©tails. (ex: --testbed ubuntu-latest)
  13. DĂ©finissez le seuil pour la Branche main, le Testbed ubuntu-latest, et la Mesure latency:
    1. DĂ©finissez l’option --threshold-measure sur la Mesure intĂ©grĂ©e latency gĂ©nĂ©rĂ©e par bencher mock. Consultez les documents --threshold-measure pour plus de dĂ©tails. (ex: --threshold-measure latency)
    2. DĂ©finissez l’option --threshold-test sur un test t de Student (t_test). Consultez les documents --threshold-test pour un aperçu complet. (ex: --threshold-test t_test)
    3. DĂ©finissez l’option --threshold-max-sample-size sur la taille maximale de l’échantillon de 64. Consultez les documents --threshold-max-sample-size pour plus de dĂ©tails. (ex: --threshold-max-sample-size 64)
    4. DĂ©finissez l’option --threshold-upper-boundary sur la Limite SupĂ©rieure de 0.99. Consultez les documents --threshold-upper-boundary pour plus de dĂ©tails. (ex: --threshold-upper-boundary 0.99)
    5. RĂ©glez l’indicateur --thresholds-reset pour que seul le seuil spĂ©cifiĂ© soit actif. Consultez les documents --thresholds-reset pour un aperçu complet. (ex: --thresholds-reset)
  14. RĂ©glez l’indicateur --err pour Ă©chouer la commande si une Alerte est gĂ©nĂ©rĂ©e. Consultez les documents --err pour un aperçu complet. (ex: --err)
  15. DĂ©finissez l’option --adapter sur Bencher Metric Format JSON (json) qui est gĂ©nĂ©rĂ© par bencher mock. Consultez les adaptateurs de harnais de benchmark pour un aperçu complet. (ex: --adapter json)
  16. RĂ©glez l’option --github-actions sur le jeton d’authentification API GitHub pour publier les rĂ©sultats sous forme de commentaire de VĂ©rifications GitHub en utilisant la variable d’environnement GITHUB_TOKEN de GitHub Actions. Consultez les documents --github-actions pour plus de dĂ©tails. (ex: --github-actions '${{ secrets.GITHUB_TOKEN }}')
  17. 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.

.github/workflows/pr_benchmarks.yml
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 save-walter-white-1234abcd \
--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
  1. Créez un fichier workflow GitHub Actions. (ex : .github/workflows/pr_benchmarks.yml)

  2. 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 on et la documentation de GitHub Actions pull_request pour un aperçu complet. (ex : on: pull_request: types: [opened, reopened, edited, synchronize])

  3. Créez un job GitHub Actions. (ex : jobs: benchmark_pr_branch)

  4. ExĂ©cutez sur des Ă©vĂ©nements pull_request uniquement 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)

  5. DĂ©finissez les permissions pour le GITHUB_TOKEN sur write pour les pull-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)

  6. DĂ©finissez le type de machine sur laquelle le job s’exĂ©cutera. Voir la documentation runs-on de GitHub Actions pour un aperçu complet. (ex : runs-on: ubuntu-latest)

  7. Validez le code source de la branche PR. (ex : uses: actions/checkout@v4)

  8. Installez le Bencher CLI en utilisant l’Action GitHub. (ex : uses: bencherdev/bencher@main)

  9. Utilisez la sous-commande CLI bencher run pour exécuter vos benchmarks de branche de pull request. Voir la sous-commande CLI bencher run pour un aperçu complet. (ex : bencher run)

  10. DĂ©finissez l’option --project sur le slug du projet. Voir la documentation --project pour plus de dĂ©tails. (ex : --project save-walter-white-1234abcd)

  11. DĂ©finissez l’option --token sur le secret du dĂ©pĂŽt BENCHER_API_TOKEN. Voir la documentation --token pour plus de dĂ©tails. (ex : --token '${{ secrets.BENCHER_API_TOKEN }}')

  12. DĂ©finissez l’option --branch sur le nom de la branche PR en utilisant la variable d’environnement par dĂ©faut GITHUB_HEAD_REF de GitHub Actions. Voir la documentation --branch pour un aperçu complet. (ex : --branch "$GITHUB_HEAD_REF")

  13. DĂ©finissez le Point de DĂ©part pour la branche PR :

    1. DĂ©finissez l’option --start-point sur le point de dĂ©part de la branche PR en utilisant la variable d’environnement par dĂ©faut GITHUB_BASE_REF de GitHub Actions. Voir la documentation --start-point pour un aperçu complet. (ex : --start-point "$GITHUB_BASE_REF")
    2. DĂ©finissez l’option --start-point-hash sur le hash git du point de dĂ©part de la branche PR en utilisant l’évĂ©nement pull_request de GitHub Actions. Voir la documentation --start-point-hash pour un aperçu complet. (ex : --start-point-hash '${{ github.event.pull_request.base.sha }}')
    3. Définissez le drapeau --start-point-clone-thresholds pour cloner les Seuils à partir du point de départ. Voir la documentation --start-point-clone-thresholds pour un aperçu complet. (ex : --start-point-clone-thresholds)
    4. DĂ©finissez le drapeau --start-point-reset pour 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-reset pour un aperçu complet. (ex : --start-point-reset)
  14. DĂ©finissez l’option --testbed sur le nom du Banc d’Essai. Cela devrait probablement correspondre Ă  la machine sĂ©lectionnĂ©e dans runs-on. Voir la documentation --testbed pour plus de dĂ©tails. (ex : --testbed ubuntu-latest)

  15. Définissez le drapeau --err pour échouer la commande si une Alerte est générée. Voir la documentation --err pour un aperçu complet. (ex : --err)

  16. DĂ©finissez l’option --adapter sur le Format de MĂ©trique Bencher JSON (json) gĂ©nĂ©rĂ© par bencher mock. Voir les adaptateurs de harnais de benchmark pour un aperçu complet. (ex : --adapter json)

  17. DĂ©finissez l’option --github-actions sur 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’environnement GITHUB_TOKEN de GitHub Actions. Voir la documentation --github-actions pour plus de dĂ©tails. (ex : --github-actions '${{ secrets.GITHUB_TOKEN }}')

  18. 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.

.github/workflows/pr_benchmarks_closed.yml
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 save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch "$GITHUB_HEAD_REF"
  1. Créez un fichier workflow GitHub Actions. (ex: .github/workflows/pr_benchmarks_closed.yml)

  2. Exécutez sur les événements pull_request :

    • closed - Une pull request a Ă©tĂ© fermĂ©e.

    Consultez la documentation GitHub Actions on et la documentation GitHub Actions pull_request pour un aperçu complet. (ex: on: pull_request: types: [closed])

  3. Créez un job GitHub Actions. (ex: jobs: archive_pr_branch)

  4. ExĂ©cutez sur les Ă©vĂ©nements pull_request uniquement 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)

  5. DĂ©finissez le type de machine sur lequel le job s’exĂ©cutera. Voir la documentation runs-on GitHub Actions pour un aperçu complet. (ex: runs-on: ubuntu-latest)

  6. Validez le code source de la branche PR. (ex: uses: actions/checkout@v4)

  7. Installez le Bencher CLI en utilisant l’Action GitHub. (ex: uses: bencherdev/bencher@main)

  8. Utilisez la sous-commande CLI bencher archive pour archiver la branche PR. (ex: bencher archive)

  9. Configurez l’option --project sur le slug du projet. Consultez les documents --project pour plus de dĂ©tails. (ex: --project save-walter-white-1234abcd)

  10. Configurez l’option --token avec le secret du DĂ©pĂŽt BENCHER_API_TOKEN. Consultez les documents --token pour plus de dĂ©tails. (ex: --token '${{ secrets.BENCHER_API_TOKEN }}')

  11. Configurez l’option --branch sur le nom de la branche PR en utilisant la variable d’environnement par dĂ©faut GITHUB_HEAD_REF de 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.

.github/workflows/fork_pr_benchmarks_run.yml
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 }}
  1. Créez un premier fichier workflow GitHub Actions. (ex : .github/workflows/fork_pr_benchmarks_run.yml)

  2. Nommez ce workflow afin qu’il puisse ĂȘtre rĂ©fĂ©rencĂ© par le deuxiĂšme workflow. (ex : name: Run Benchmarks)

  3. 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 on et la documentation GitHub Actions pull_request pour un aperçu complet. (ex : on: pull_request: types: [opened, reopened, edited, synchronize])

  4. Créez un job GitHub Actions. (ex : jobs: benchmark_fork_pr_branch)

  5. DĂ©finissez le type de machine sur lequel le job s’exĂ©cutera. Voir la documentation GitHub Actions runs-on pour un aperçu complet. (ex : runs-on: ubuntu-latest)

  6. Récupérez le code source de la branche fork PR. (ex : uses: actions/checkout@v4)

  7. Exécutez vos benchmarks et enregistrez les résultats dans un fichier. (ex : /bin/echo '{ ... }' > benchmark_results.json)

  8. TĂ©lĂ©chargez le fichier de rĂ©sultats des benchmarks en tant qu’artifact. (ex : uses: actions/upload-artifact@v4)

  9. TĂ©lĂ©chargez l’objet d’évĂ©nement pull_request en tant qu’artifact. (ex : uses: actions/upload-artifact@v4)

.github/workflows/fork_pr_benchmarks_track.yml
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'
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_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 save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch "$PR_HEAD" \
--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"
  1. Créez un premier fichier de workflow GitHub Actions. (ex : .github/workflows/fork_pr_benchmarks_track.yml)
  2. Nommez ce workflow second workflow. (ex : name: Track Benchmarks with Bencher)
  3. EnchaĂźnez les deux workflows avec l’évĂ©nement workflow_run. (ex : on: workflow_run: ...)
  4. Créez un job GitHub Actions. (ex : jobs: track_fork_pr_branch)
  5. ExĂ©cutez ce job uniquement si la conclusion du prĂ©cĂ©dent workflow Ă©tait un succĂšs en utilisant l’évĂ©nement workflow_run de GitHub Actions. (ex : if: github.event.workflow_run.conclusion == 'success')
  6. DĂ©finissez le type de machine sur lequel le job s’exĂ©cutera. Consultez la documentation runs-on de GitHub Actions pour un aperçu complet. (ex : runs-on: ubuntu-latest)
  7. DĂ©finissez les rĂ©sultats des benchmarks et les noms des fichiers d’objets de l’évĂ©nement pull_request comme variables d’environnement. (ex : env: ...)
  8. TĂ©lĂ©chargez les rĂ©sultats des benchmarks mis en cache et l’évĂ©nement pull_request en utilisant l’Action GitHub action-download-artifact. (ex : uses: dawidd6/action-download-artifact@v6)
  9. Exportez les donnĂ©es nĂ©cessaires de l’évĂ©nement pull_request en tant que variables d’environnement. (ex : core.exportVariable(...))
  10. Installez le CLI Bencher en utilisant l’Action GitHub. (ex : uses: bencherdev/bencher@main)
  11. Utilisez la sous-commande CLI bencher run pour suivre les benchmarks de votre branche pull fork. Consultez la sous-commande CLI bencher run pour un aperçu complet. (ex : bencher run)
  12. 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)
  13. DĂ©finissez l’option --token sur le secret Repository BENCHER_API_TOKEN. Consultez la documentation --token pour plus de dĂ©tails. (ex : --token '${{ secrets.BENCHER_API_TOKEN }}')
  14. DĂ©finissez l’option --branch sur le nom de la branche PR fork en utilisant une variable d’environnement intermĂ©diaire. Consultez la documentation --branch pour un aperçu complet. (ex : --branch "$PR_HEAD")
  15. DĂ©finissez le Point de DĂ©part pour la branche PR fork :
    1. DĂ©finissez l’option --start-point sur le point de dĂ©part de la branche PR fork en utilisant une variable d’environnement intermĂ©diaire. Consultez la documentation --start-point pour un aperçu complet. (ex : --start-point "$PR_BASE")
    2. DĂ©finissez l’option --start-point-hash sur le hash git du point de dĂ©part de la branche PR fork en utilisant une variable d’environnement intermĂ©diaire. Consultez la documentation --start-point-hash pour un aperçu complet. (ex : --start-point-hash "$PR_BASE_SHA")
    3. Définissez le drapeau --start-point-clone-thresholds pour cloner les Seuils à partir du point de départ. Consultez la documentation --start-point-clone-thresholds pour un aperçu complet. (ex : --start-point-clone-thresholds)
    4. DĂ©finissez le drapeau --start-point-reset pour toujours rĂ©initialiser la branche PR fork au point de dĂ©part. Cela empĂȘchera la dĂ©rive des donnĂ©es de benchmark. Consultez la documentation --start-point-reset pour un aperçu complet. (ex : --start-point-reset)
  16. DĂ©finissez l’option --testbed sur le nom du Testbed. Cela devrait probablement correspondre Ă  la machine sĂ©lectionnĂ©e dans runs-on. Consultez la documentation --tested pour plus de dĂ©tails. (ex : --testbed ubuntu-latest)
  17. Définissez 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)
  18. DĂ©finissez l’option --adapter sur Bencher Metric Format JSON (json) qui est gĂ©nĂ©rĂ© par bencher mock. Consultez la documentation benchmark harness adapters pour un aperçu complet. (ex : --adapter json)
  19. DĂ©finissez l’option --github-actions sur le jeton d’authentification de l’API GitHub pour publier les rĂ©sultats en tant que commentaire sur le Pull Request en utilisant la variable d’environnement GITHUB_TOKEN de GitHub Actions. Consultez la documentation --github-actions pour plus de dĂ©tails. (ex : --github-actions '${{ secrets.GITHUB_TOKEN }}')
  20. DĂ©finissez l’option --ci-number sur le numĂ©ro de la pull request en utilisant une variable d’environnement intermĂ©diaire. Consultez la documentation --ci-number pour plus de dĂ©tails. (ex : --ci-number "$PR_NUMBER")
  21. DĂ©finissez l’option --file sur le chemin du fichier de rĂ©sultats des benchmarks. Consultez la documentation benchmark command 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.

.github/workflows/fork_pr_benchmarks_closed.yml
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 save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch "$GITHUB_HEAD_REF"
  1. Créez un fichier de workflow GitHub Actions. (ex : .github/workflows/fork_pr_benchmarks_closed.yml)

  2. Exécutez sur les événements pull_request_target :

    • closed - Une pull request a Ă©tĂ© fermĂ©e.

    Consultez la documentation on de GitHub Actions et la documentation pull_request_target de GitHub Actions pour un aperçu complet. (ex : on: pull_request_target: types: [closed])

  3. Créez un job GitHub Actions. (ex : jobs: archive_pr_branch)

  4. DĂ©finissez le type de machine sur laquelle le job s’exĂ©cutera. Consultez la documentation runs-on de GitHub Actions pour un aperçu complet. (ex : runs-on: ubuntu-latest)

  5. Récupérez le code source de la branche PR. (ex : uses: actions/checkout@v4)

  6. Installez le Bencher CLI en utilisant l’action GitHub. (ex : uses: bencherdev/bencher@main)

  7. Utilisez la sous-commande CLI bencher archive pour archiver la branche PR. (ex : bencher archive)

  8. DĂ©finissez l’option --project avec le slug du projet. Consultez la documentation de l’option --project pour plus de dĂ©tails. (ex : --project save-walter-white-1234abcd)

  9. DĂ©finissez l’option --token avec le secret de Repository BENCHER_API_TOKEN. Consultez la documentation de l’option --token pour plus de dĂ©tails. (ex : --token '${{ secrets.BENCHER_API_TOKEN }}')

  10. DĂ©finissez l’option --branch avec le nom de la branche PR en utilisant la variable d’environnement par dĂ©faut GITHUB_HEAD_REF de GitHub Actions. (ex : --branch "$GITHUB_HEAD_REF")



🐰 FĂ©licitations ! Vous avez appris comment utiliser Bencher dans GitHub Actions ! 🎉


Continuez : Vue d’ensemble du Benchmarking ➡

đŸ€– Ce document a Ă©tĂ© automatiquement gĂ©nĂ©rĂ© par OpenAI GPT-4. Il peut ne pas ĂȘtre prĂ©cis et peut contenir des erreurs. Si vous trouvez des erreurs, veuillez ouvrir une issue sur GitHub.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Mon, November 4, 2024 at 7:40:00 AM UTC