Como usar o Bencher no GitLab CI/CD
Conforme o seu caso de uso, você pode configurar o Benchmarking Contínuo no GitLab CI/CD para o seu:
🐰 Certifique-se de ter criado um token de API e definido como uma variável mascarada chamada
BENCHER_API_TOKEN
antes de continuar! Navegue atéSeu Repositório -> Configurações -> CI/CD -> Variáveis -> Expandir -> Adicionar variável
. A chave da variável deve serBENCHER_API_TOKEN
e o valor da variável deve ser o seu token de API. Marque as caixasProteger variável
eMascarar variável
.
Ramificação Alvo
Uma pedra angular do Benchmarking Contínuo Estatístico é ter uma base histórica para a sua ramificação alvo. Esta base histórica pode então ser usada para detectar regressões de desempenho em Solicitações de Merge.
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
- Crie um arquivo GitLab CI/CD.
(ex.:
.gitlab-ci.yml
) - Crie um trabalho GitLab CI/CD.
(ex.:
benchmark_target_branch
) - Execute
if
o pipeline foi acionado por umpush
para a ramificaçãomain
. Consulte a documentação deregras
do GitLab CI/CD e a documentação de variáveis predefinidas do GitLab CI/CD para uma visão geral completa. (ex.:rules: - if: ...
) - Defina a
imagem
na qual o trabalho será executado. Consulte a documentação deimagem
do GitLab CI/CD para uma visão geral completa. (ex.:image: debian:bullseye
) - Instale o CLI do Bencher usando o script de conveniência.
(ex.:
before_script: ...
) - Use o subcomando CLI
bencher run
para rodar os benchmarks da sua ramificaçãomain
. Consulte o subcomando CLIbencher run
para uma visão geral completa. (ex.:bencher run
) - Defina a opção
--project
para o slug do Projeto. Consulte os docs da opção--project
para mais detalhes. (ex.:--project save-walter-white-1234abcd
) - Defina a opção
--token
para a variável de ambienteBENCHER_API_TOKEN
mascarada. Consulte os docs da opção--token
para mais detalhes. (ex.:--token "$BENCHER_API_TOKEN"
) - Defina a opção
--branch
para o nome da Ramificação. Veja seleção de ramificação para uma visão geral completa. (ex.:--branch main
) - Defina a opção
--testbed
para o nome do Testbed. Isso provavelmente deve corresponder à máquina selecionada emimagem
. Veja os docs da opção--tested
para mais detalhes. (ex.:--testbed debian:bullseye
) - Defina a opção
--adapter
para o adaptador de suporte de benchmark desejado. Veja adaptadores de suporte de benchmark para uma visão geral completa. (ex.:--adapter json
) - Defina a bandeira
--err
para falhar o comando se um Alerta for gerado. Veja Limite & Alertas para uma visão geral completa. (ex.:--err
) - Especifique os argumentos do comando de benchmark.
Veja comando de benchmark para uma visão geral completa.
(ex.:
bencher mock
)
Merge Requests
Para capturar regressões de desempenho em Merge Requests, você precisará executar seus benchmarks em MRs. O exemplo abaixo deve ser usado apenas para branches dentro do mesmo repositório.
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
- Crie ou atualize um arquivo GitLab CI/CD.
(ex:
.gitlab-ci.yml
) - Crie um CI/CD job do GitLab.
(ex:
benchmark_mr_branch
) - Execute
if
o pipeline foi acionado por ummerge_request_event
. Veja a documentação das regras do GitLab CI/CD e a documentação das variáveis predefinidas do GitLab CI/CD para uma visão completa. (ex:rules: - if: ...
) - Defina a
image
em que o job será executado. Veja a documentação dasimagem
do GitLab CI/CD para uma visão completa. (ex:image: debian:bullseye
) - Instale o Bencher CLI usando o script de conveniência.
(ex:
before_script: ...
) - Use o subcomando CLI
bencher run
para executar os benchmarks do seu branch de merge request. Veja o subcomandobencher run
CLI para uma visão completa. (ex:bencher run
) - Defina a opção
--project
para o slug do Projeto. Veja a documentação da opção--project
para mais detalhes. (ex:--project save-walter-white-1234abcd
) - Defina a opção
--token
para a variável de ambiente mascaradaBENCHER_API_TOKEN
. Veja a documentação da opção--token
para mais detalhes. (ex:--token "$BENCHER_API_TOKEN"
) - Defina a opção
--branch
para o nome do branch do MR usando uma variável predefinida do GitLab CI/CD. Veja seleção de branch para uma visão completa. (ex:--branch "$CI_COMMIT_REF_NAME"
) - Defina a opção
--branch-start-point
para o ponto de início do Branch de destino do MR usando uma variável predefinida do GitLab CI/CD. Veja seleção de branch para uma visão completa. (ex:--branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - Defina a opção
--branch-start-point-hash
para o hash do ponto de início do Branch de destino do MR usando uma variável predefinida do GitLab CI/CD. Veja seleção de branch para uma visão completa. (ex:--branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - Defina a flag
--branch-reset
para sempre resetar o Branch para o ponto de início. Isso evitará desvio de dados de benchmark. Veja seleção de branch para uma visão completa. (ex:--branch-reset
) - Defina a opção
--testbed
para o nome do Testbed. Isso provavelmente deve coincidir com a máquina selecionada emimage
. Veja a documentação da opção--testbed
para mais detalhes. (ex:--testbed debian:bullseye
) - Defina a opção
--adapter
para o adaptador de harness de benchmark desejado. Veja adaptadores de harness de benchmark para uma visão completa. (ex:--adapter json
) - Defina a flag
--err
para falhar o comando se um Alerta for gerado. Veja Threshold & Alerts para uma visão completa. (ex:--err
) - Especifique os argumentos do comando de benchmark.
Veja comando de benchmark para uma visão completa.
(ex:
bencher mock
)
🐰 Parabéns! Você aprendeu como usar o Bencher no GitLab CI/CD! 🎉