Como usar o Bencher no GitHub Actions
Dependendo do seu caso de uso, você pode configurar Benchmarking Contínuo no GitHub Actions para o seu:
Certifique-se de criar um token de API e configurá-lo como um segredo de Repositório chamado BENCHER_API_TOKEN antes de continuar! Navegue até Seu Repositório -> Configurações -> Segredos e variáveis -> Ações -> Novo segredo de repositório. Nomeie o segredo como BENCHER_API_TOKEN e defina o valor do segredo para o seu token de API.
No GitHub Actions, segredos não são passados para o runner quando um workflow é acionado a partir de um repositório bifurcado. Portanto, você precisará usar um branch do mesmo repositório ao adicionar qualquer um dos workflows abaixo ao seu repositório com um pull request. Se você tentar adicionar o Bencher com um pull request de um fork, então o segredo BENCHER_API_TOKEN não estará disponível. ${{ secrets.BENCHER_API_TOKEN }} será uma string vazia.
Ramificação Base
Um alicerce do Benchmarking Estatístico Contínuo é ter uma linha de base histórica para sua ramificação base. Essa linha de base histórica pode então ser usada para detectar regressões de desempenho nos 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- Crie um arquivo
workflowdo GitHub Actions. (ex:.github/workflows/base_benchmarks.yml) - Execute em eventos de
pushpara a ramificaçãomain. Veja a documentação deondo GitHub Actions e a documentação depushdo GitHub Actions para uma visão geral completa. (ex:on: push: branches: main) - Crie um
jobdo GitHub Actions. (ex:jobs: benchmark_base_branch) - Defina as permissões para o
GITHUB_TOKENcomowriteparachecks. (ex:permissions: checks: write) - Defina o tipo de máquina em que o job será executado.
Veja a documentação de
runs-ondo GitHub Actions para uma visão geral completa. (ex:runs-on: ubuntu-latest) - Faça o checkout do código-fonte da sua ramificação base.
(ex:
uses: actions/checkout@v4) - Instale o Bencher CLI usando a Ação do GitHub.
(ex:
uses: bencherdev/bencher@main) - Use o subcomando
bencher rundo CLI para executar os benchmarks da sua ramificaçãomain. Veja o subcomandobencher rundo CLI para uma visão geral completa. (ex:bencher run) - Configure a opção
--projectpara o slug do Projeto. Veja os documentos de--projectpara mais detalhes. (ex:--project project-abc4567-wxyz123456789) - Configure a opção
--tokenpara o segredo RepositorioBENCHER_API_TOKEN. Veja os documentos de--tokenpara mais detalhes. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') - Configure a opção
--branchpara o nome da Ramificação base. Veja os documentos de--branchpara uma visão geral completa. (ex:--branch main) - Configure a opção
--testbedpara o nome do Testbed. Isso deve provavelmente coincidir com a máquina selecionada emruns-on. Veja os documentos de--testedpara mais detalhes. (ex:--testbed ubuntu-latest) - Configure o Limite para a Ramificação
main, Testbedubuntu-latest, e Medidalatency:- Configure a opção
--threshold-measurepara a medidalatencyembutida que é gerada porbencher mock. Veja os documentos de--threshold-measurepara mais detalhes. (ex:--threshold-measure latency) - Configure a opção
--threshold-testpara um teste-t de Student (t_test). Veja os documentos de--threshold-testpara uma visão geral completa. (ex:--threshold-test t_test) - Configure a opção
--threshold-max-sample-sizepara o tamanho máximo da amostra de64. Veja os documentos de--threshold-max-sample-sizepara mais detalhes. (ex:--threshold-max-sample-size 64) - Configure a opção
--threshold-upper-boundarypara o Limite Superior de0.99. Veja os documentos de--threshold-upper-boundarypara mais detalhes. (ex:--threshold-upper-boundary 0.99) - Defina a flag
--thresholds-resetpara que somente o Limite especificado esteja ativo. Veja os documentos de--thresholds-resetpara uma visão geral completa. (ex:--thresholds-reset)
- Configure a opção
- Defina a flag
--errpara falhar o comando se um Alerta for gerado. Veja os documentos de--errpara uma visão geral completa. (ex:--err) - Configure a opção
--adapterpara o Bencher Metric Format JSON (json) que é gerado porbencher mock. Veja adapters do harness de benchmark para uma visão geral completa. (ex:--adapter json) - Configure a opção
--github-actionspara o token de autenticação da API do GitHub para publicar resultados como um comentário de Checks do GitHub usando a variável de ambienteGITHUB_TOKENdo GitHub Actions. Veja os documentos de--github-actionspara mais detalhes. (ex:--github-actions '${{ secrets.GITHUB_TOKEN }}') - Especifique os argumentos do comando de benchmark.
Veja comando de benchmark para uma visão geral completa.
(ex:
bencher mock)
Pull Requests
Para detectar regressões de desempenho em Pull Requests, você precisará executar seus benchmarks em PRs.
Se você espera ter apenas PRs de branches dentro do mesmo repositório,
então basta criar outro workflow para executar on eventos de pull_request do mesmo repositório.
⚠️ Esta solução só funciona se todos os PRs forem do mesmo repositório! Veja Pull Requests de Forks abaixo.
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-
Crie um arquivo
workflowdo GitHub Actions. (ex:.github/workflows/pr_benchmarks.yml) -
Execute em eventos de
pull_request:opened- Um pull request foi criado.reopened- Um pull request anteriormente fechado foi reaberto.edited- O título ou corpo de um pull request foi editado, ou a branch base de um pull request foi alterada.synchronize- A branch head de um pull request foi atualizada. Por exemplo, a branch head foi atualizada da branch base ou novos commits foram enviados para a branch head.
Veja a documentação
ondo GitHub Actions e a documentaçãopull_requestdo GitHub Actions para uma visão geral completa. (ex:on: pull_request: types: [opened, reopened, edited, synchronize]) -
Crie um
jobno GitHub Actions. (ex:jobs: benchmark_pr_branch) -
Execute em eventos de
pull_requestse, e somente se o pull request for do mesmo repositório. ⚠️ NÃO REMOVA ESTA LINHA! Para lidar com PRs de Forks veja Pull Requests de Forks abaixo. (ex:if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) -
Defina as permissões para o
GITHUB_TOKENcomowriteparapull-requests. Dependendo das suas configurações do GitHub, isso pode não ser necessário. Mas para todas as organizações e repositórios pessoais criados após 02 de fevereiro de 2023, este é o comportamento padrão. Veja a documentação do GitHub para uma visão geral completa. (ex:permissions: pull-requests: write) -
Defina o tipo de máquina em que o job será executado. Veja a documentação
runs-ondo GitHub Actions para uma visão geral completa. (ex:runs-on: ubuntu-latest) -
Faça o checkout do código fonte da branch do PR. (ex:
uses: actions/checkout@v4) -
Instale o Bencher CLI usando a GitHub Action. (ex:
uses: bencherdev/bencher@main) -
Use o subcomando CLI
bencher runpara executar seus benchmarks na branch do pull request. Veja o subcomando CLIbencher runpara uma visão geral completa. (ex:bencher run) -
Defina a opção
--projectpara o slug do Projeto. Veja a documentação--projectpara mais detalhes. (ex:--project project-abc4567-wxyz123456789) -
Defina a opção
--tokenpara o segredo RepositórioBENCHER_API_TOKEN. Veja a documentação--tokenpara mais detalhes. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') -
Defina a opção
--branchpara o nome da branch do PR usando a variável de ambiente padrãoGITHUB_HEAD_REFdo GitHub Actions. Veja a documentação--branchpara uma visão geral completa. (ex:--branch "$GITHUB_HEAD_REF") -
Defina o Ponto de Início para a Branch do PR:
- Defina a opção
--start-pointpara o ponto de início da Branch do PR usando a variável de ambiente padrãoGITHUB_BASE_REFdo GitHub Actions. Veja a documentação--start-pointpara uma visão geral completa. (ex:--start-point "$GITHUB_BASE_REF") - Defina a opção
--start-point-hashpara o hashgitdo ponto de início da Branch do PR usando o eventopull_requestdo GitHub Actions. Veja a documentação--start-point-hashpara uma visão geral completa. (ex:--start-point-hash '${{ github.event.pull_request.base.sha }}') - Defina o flag
--start-point-clone-thresholdspara clonar os Limiares do ponto de início. Veja a documentação--start-point-clone-thresholdspara uma visão geral completa. (ex:--start-point-clone-thresholds) - Defina o flag
--start-point-resetpara sempre redefinir a Branch do PR para o ponto de início. Isso evitará deriva nos dados de benchmark. Veja a documentação--start-point-resetpara uma visão geral completa. (ex:--start-point-reset)
- Defina a opção
-
Defina a opção
--testbedpara o nome do Testbed. Isso deve provavelmente corresponder à máquina selecionada emruns-on. Veja a documentação--testedpara mais detalhes. (ex:--testbed ubuntu-latest) -
Defina o flag
--errpara falhar o comando se um Alerta for gerado. Veja a documentação--errpara uma visão geral completa. (ex:--err) -
Defina a opção
--adapterpara Bencher Metric Format JSON (json) que é gerado porbencher mock. Veja adapters de benchmark harness para uma visão geral completa. (ex:--adapter json) -
Defina a opção
--github-actionspara o token de autenticação da API do GitHub para postar resultados como um comentário no Pull Request usando a variável de ambienteGITHUB_TOKENdo GitHub Actions. Veja a documentação--github-actionspara mais detalhes. (ex:--github-actions '${{ secrets.GITHUB_TOKEN }}') -
Especifique os argumentos do comando de benchmark. Veja comando de benchmark para uma visão geral completa. (ex:
bencher mock)
Para limpar o branch do PR depois que seu PR for fechado,
você pode criar um fluxo de trabalho separado para executar eventos on pull_request com o tipo closed.
Este fluxo de trabalho arquivará o branch do PR usando o comando 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"-
Crie um arquivo de
workflowdo GitHub Actions. (ex:.github/workflows/pr_benchmarks_closed.yml) -
Execute em eventos
pull_request:closed- Um pull request foi fechado.
Veja a documentação
ondo GitHub Actions e a documentaçãopull_requestdo GitHub Action para uma visão completa. (ex:on: pull_request: types: [closed]) -
Crie um
jobdo GitHub Actions. (ex:jobs: archive_pr_branch) -
Execute em eventos
pull_requestse e somente se o pull request for do mesmo repositório. ⚠️ NÃO REMOVA ESTA LINHA! Para lidar com PRs de Forks, veja Pull Requests de Forks abaixo. (ex:if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) -
Defina o tipo de máquina em que o job será executado. Veja a documentação
runs-ondo GitHub Actions para uma visão completa. (ex:runs-on: ubuntu-latest) -
Faça o checkout do código-fonte do branch do PR. (ex:
uses: actions/checkout@v4) -
Instale o Bencher CLI usando a Ação do GitHub. (ex:
uses: bencherdev/bencher@main) -
Use o subcomando
bencher archiveda CLI para arquivar o branch do PR. (ex:bencher archive) -
Defina a opção
--projectpara o identificador do Projeto. Veja os documentos--projectpara mais detalhes. (ex:--project project-abc4567-wxyz123456789) -
Defina a opção
--tokenpara o segredo RepositórioBENCHER_API_TOKEN. Veja os documentos--tokenpara mais detalhes. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') -
Defina a opção
--branchpara o nome do branch do PR usando a variável de ambiente padrãoGITHUB_HEAD_REFdo GitHub Actions. (ex:--branch "$GITHUB_HEAD_REF")
Pull Requests de Forks
Se você planeja aceitar pull requests de forks, como é frequentemente o caso em projetos de código aberto público, então você precisará lidar com as coisas de maneira um pouco diferente. Por razões de segurança, segredos como seu BENCHER_API_TOKEN e o GITHUB_TOKEN não estão disponíveis no GitHub Actions para PRs de fork. Ou seja, se um colaborador externo abrir um PR a partir de um fork, o exemplo acima não funcionará. Veja este artigo do GitHub Security Lab e esta postagem no blog sobre como prevenir requests maliciosos para uma visão completa.
Esta é a maneira segura e sugerida de adicionar Benchmarking Contínuo a pull requests de forks. Requer dois fluxos de trabalho separados. O primeiro fluxo de trabalho executa e armazena em cache os resultados do benchmark no contexto pull_request. Nenhum segredo, como seu BENCHER_API_TOKEN e o GITHUB_TOKEN, está disponível lá. Então, um segundo fluxo de trabalho baixa os resultados do benchmark em cache no contexto workflow_run e os envia para o Bencher. Isso funciona porque workflow_run é executado no contexto do branch padrão do repositório, onde segredos como seu BENCHER_API_TOKEN e o GITHUB_TOKEN estão disponíveis. O número do pull request, o branch head e o branch base usados no fluxo de trabalho inicial pull_request também devem ser explicitamente passados para o fluxo de trabalho workflow_run, pois não estão disponíveis lá. Esses fluxos de trabalho só serão executados se existirem no branch padrão. Veja usando dados do workflow que disparou a execução para uma visão completa.
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 }}-
Crie um primeiro arquivo de
workflowdo GitHub Actions. (ex:.github/workflows/fork_pr_benchmarks_run.yml) -
Nomeie esse workflow para que ele possa ser referenciado pelo segundo workflow. (ex:
name: Run Benchmarks) -
Execute em eventos de
pull_request:opened- Um pull request foi criado.reopened- Um pull request anteriormente fechado foi reaberto.edited- O título ou corpo de um pull request foi editado, ou o branch base de um pull request foi alterado.synchronize- O branch head de um pull request foi atualizado. Por exemplo, o branch head foi atualizado do branch base ou novos commits foram enviados para o branch head.
Consulte a documentação de
ondo GitHub Actions e a documentação depull_requestdo GitHub Actions para uma visão completa. (ex:on: pull_request: types: [opened, reopened, edited, synchronize]) -
Crie um
jobdo GitHub Actions. (ex:jobs: benchmark_fork_pr_branch) -
Defina o tipo de máquina em que o job será executado. Consulte a documentação de
runs-ondo GitHub Actions para uma visão completa. (ex:runs-on: ubuntu-latest) -
Faça o checkout do código-fonte do fork PR. (ex:
uses: actions/checkout@v4) -
Execute seus benchmarks e salve os resultados em um arquivo. (ex:
/bin/echo '{ ... }' > benchmark_results.json) -
Envie o arquivo de resultados de benchmark como um artefato. (ex:
uses: actions/upload-artifact@v4) -
Envie o objeto de evento
pull_requestcomo um artefato. (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"- Crie um primeiro arquivo de
workflowdo GitHub Actions. (ex:.github/workflows/fork_pr_benchmarks_track.yml) - Dê o nome de segundo workflow a este workflow.
(ex:
name: Track Benchmarks with Bencher) - Encadeie os dois workflows com
o evento
workflow_run. (ex:on: workflow_run: ...) - Crie um
jobdo GitHub Actions. (ex:jobs: track_fork_pr_branch) - Execute este job apenas se a conclusão do workflow anterior foi um sucesso usando
o evento
workflow_rundo GitHub Actions. (ex:if: github.event.workflow_run.conclusion == 'success') - Defina as permissões para o
GITHUB_TOKENcomowriteparapull-requests. Dependendo das suas configurações do GitHub, isso pode não ser necessário. Mas para todas as organizações e repositórios pessoais criados após 02 de fevereiro de 2023, esse é o comportamento padrão. Consulte a documentação do GitHub para uma visão completa. (ex:permissions: pull-requests: write) - Defina o tipo de máquina em que o job será executado.
Veja a documentação de
runs-ondo GitHub Actions para uma visão completa. (ex:runs-on: ubuntu-latest) - Defina os nomes dos arquivos dos resultados de benchmark e do evento
pull_requestcomo variáveis de ambiente. (ex:env: ...) - Baixe os resultados de benchmark em cache e o evento
pull_requestusando a açãoaction-download-artifactdo GitHub Action. (ex:uses: dawidd6/action-download-artifact@v6) - Exporte os dados necessários do evento
pull_requestcomo variáveis de ambiente intermediárias. (ex:core.exportVariable(...)) - Instale o Bencher CLI usando a ação do GitHub.
(ex:
uses: bencherdev/bencher@main) - Use o subcomando CLI
bencher runpara rastrear os benchmarks do branch do fork pull. Veja o subcomando CLIbencher runpara uma visão completa. (ex:bencher run) - Defina a opção
--projectpara o slug do Projeto. Veja os docs de--projectpara mais detalhes. (ex:--project project-abc4567-wxyz123456789) - Defina a opção
--tokenpara o segredo de RepositórioBENCHER_API_TOKEN. Veja os docs de--tokenpara mais detalhes. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') - Defina a opção
--branchpara o nome do branch do fork PR usando uma variável de ambiente intermediária. Veja os docs de--branchpara uma visão completa. (ex:--branch "$PR_HEAD") - Defina a opção
--hashpara o hashgitdo branch do fork PR usando uma variável de ambiente intermediária. Veja os docs de--hashpara uma visão completa. (ex:--hash "$PR_HEAD_SHA") - Defina o Ponto de Início para o Branch do fork PR:
- Defina a opção
--start-pointpara o ponto de início do Branch do fork PR usando uma variável de ambiente intermediária. Veja os docs de--start-pointpara uma visão completa. (ex:--start-point "$PR_BASE") - Defina a opção
--start-point-hashpara o hashgitdo ponto de início do Branch do fork PR usando uma variável de ambiente intermediária. Veja os docs de--start-point-hashpara uma visão completa. (ex:--start-point-hash "$PR_BASE_SHA") - Defina a flag
--start-point-clone-thresholdspara clonar os Limiares a partir do ponto de início. Veja os docs de--start-point-clone-thresholdspara uma visão completa. (ex:--start-point-clone-thresholds) - Defina a flag
--start-point-resetpara sempre redefinir o Branch do fork PR para o ponto de início. Isso evitará o desvio de dados de benchmark. Veja os docs de--start-point-resetpara uma visão completa. (ex:--start-point-reset)
- Defina a opção
- Defina a opção
--testbedpara o nome do Testbed. Isso provavelmente deve corresponder à máquina selecionada emruns-on. Veja os docs de--testedpara mais detalhes. (ex:--testbed ubuntu-latest) - Defina a flag
--errpara falhar no comando se um Alerta for gerado. Veja os docs de--errpara uma visão completa. (ex:--err) - Defina a opção
--adapterpara Formato de Métrica Bencher JSON (json) que é gerado porbencher mock. Veja adaptadores de benchmark harness para uma visão completa. (ex:--adapter json) - Defina a opção
--github-actionspara o token de autenticação da API do GitHub para postar resultados como um comentário no Pull Request usando a variável de ambienteGITHUB_TOKENdo GitHub Actions. Veja os docs de--github-actionspara mais detalhes. (ex:--github-actions '${{ secrets.GITHUB_TOKEN }}') - Defina a opção
--ci-numberpara o número do pull request usando uma variável de ambiente intermediária. Veja os docs de--ci-numberpara mais detalhes. (ex:--ci-number "$PR_NUMBER") - Defina a opção
--filepara o caminho do arquivo de resultados de benchmark. Veja comando de benchmark para uma visão completa. (ex:--file "$BENCHMARK_RESULTS")
Para limpar o branch de PR do fork após seu PR ser fechado,
você pode criar um fluxo de trabalho separado para executar em eventos on pull_request_target com o tipo closed.
Este fluxo de trabalho arquivará o branch de PR do fork usando o comando 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"-
Crie um arquivo de
workflowdo GitHub Actions. (ex:.github/workflows/fork_pr_benchmarks_closed.yml) -
Execute em eventos
pull_request_target:closed- Um pull request foi fechado.
Consulte a documentação do
ondo GitHub Actions e a documentação dopull_request_targetdo GitHub Actions para uma visão geral completa. (ex:on: pull_request_target: types: [closed]) -
Crie um
jobdo GitHub Actions. (ex:jobs: archive_pr_branch) -
Defina o tipo de máquina na qual o job será executado. Consulte a documentação do
runs-ondo GitHub Actions para uma visão geral completa. (ex:runs-on: ubuntu-latest) -
Faça checkout do código fonte do branch de PR. (ex:
uses: actions/checkout@v4) -
Instale o Bencher CLI usando a Ação do GitHub. (ex:
uses: bencherdev/bencher@main) -
Use o subcomando
bencher archivedo CLI para arquivar o branch de PR. (ex:bencher archive) -
Defina a opção
--projectpara o slug do Projeto. Consulte a documentação de--projectpara mais detalhes. (ex:--project project-abc4567-wxyz123456789) -
Defina a opção
--tokenpara o segredo de RepositórioBENCHER_API_TOKEN. Consulte a documentação de--tokenpara mais detalhes. (ex:--token '${{ secrets.BENCHER_API_TOKEN }}') -
Defina a opção
--branchpara o nome do branch de PR usando a variável de ambiente padrãoGITHUB_HEAD_REFdo GitHub Actions. (ex:--branch "$GITHUB_HEAD_REF")
🐰 Parabéns! Você aprendeu como usar o Bencher no GitHub Actions! 🎉