Como usar o Bencher no GitLab CI/CD
Dependendo do seu caso de uso, vocĆŖ pode configurar Benchmarking ContĆnuo no GitLab CI/CD para o seu:
Certifique-se de ter criado um token de API e defini-lo como uma variƔvel mascarada nomeada BENCHER_API_TOKEN
antes de continuar! Navegue para Seu RepositĆ³rio -> ConfiguraƧƵes -> CI/CD -> VariĆ”veis -> Expandir -> Adicionar variĆ”vel
. A chave da variƔvel deve ser BENCHER_API_TOKEN
e o valor da variƔvel deve ser o seu token de API. Marque as caixas de Proteger variƔvel
e Mascarar variƔvel
.
RamificaĆ§Ć£o Alvo
Um pilar do Benchmarking ContĆnuo e EstatĆstico Ć© ter uma linha de base histĆ³rica para sua ramificaĆ§Ć£o alvo. Essa linha de base histĆ³rica pode entĆ£o ser usada para detectar regressƵes de desempenho em Merge Requests.
- 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
. Veja a documentaĆ§Ć£o derules
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
image
na qual o trabalho serĆ” executado. Veja a documentaĆ§Ć£o deimage
do GitLab CI/CD para uma visĆ£o geral 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 seus benchmarks da ramificaĆ§Ć£omain
. Veja o subcomando CLIbencher run
para uma visĆ£o geral completa. (ex:bencher run
) - Defina a opĆ§Ć£o
--project
para o slug do Projeto. Veja a documentaĆ§Ć£o de--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 de--token
para mais detalhes. (ex:--token "$BENCHER_API_TOKEN"
) - Defina a opĆ§Ć£o
--branch
para o nome da RamificaĆ§Ć£o. Veja a documentaĆ§Ć£o de--branch
para uma visĆ£o geral completa. (ex:--branch main
) - Defina a opĆ§Ć£o
--testbed
para o nome do Testbed. Isso provavelmente deve coincidir com a mƔquina selecionada emimage
. Veja a documentaĆ§Ć£o de--testbed
para mais detalhes. (ex:--testbed debian:bullseye
) - Defina o Limite para a RamificaĆ§Ć£o
main
, Testbeddebian:bullseye
e Medidalatency
:- Defina a opĆ§Ć£o
--threshold-measure
para a Medidalatency
incorporada que Ć© gerada porbencher mock
. Veja a documentaĆ§Ć£o de--threshold-measure
para mais detalhes. (ex:--threshold-measure latency
) - Defina a opĆ§Ć£o
--threshold-test
para um teste t de Student (t_test
). Veja a documentaĆ§Ć£o de--threshold-test
para uma visĆ£o geral completa. (ex:--threshold-test t_test
) - Defina a opĆ§Ć£o
--threshold-max-sample-size
para o tamanho mƔximo da amostra de64
. Veja a documentaĆ§Ć£o de--threshold-max-sample-size
para mais detalhes. (ex:--threshold-max-sample-size 64
) - Defina a opĆ§Ć£o
--threshold-upper-boundary
para o Limite Superior de0.99
. Veja a documentaĆ§Ć£o de--threshold-upper-boundary
para mais detalhes. (ex:--threshold-upper-boundary 0.99
) - Defina a flag
--thresholds-reset
para que apenas o Limite especificado esteja ativo. Veja a documentaĆ§Ć£o de--thresholds-reset
para uma visĆ£o geral completa. (ex:--thresholds-reset
)
- Defina a opĆ§Ć£o
- Defina a flag
--err
para falhar o comando se um Alerta for gerado. Veja a documentaĆ§Ć£o de--err
para uma visĆ£o geral completa. (ex:--err
) - Defina a opĆ§Ć£o
--adapter
para Bencher Metric Format JSON (json
) que Ć© gerado porbencher mock
. Veja adapters de benchmark harness para uma visĆ£o geral completa. (ex:--adapter json
) - Especifique os argumentos do comando de benchmark.
Veja comando de benchmark para uma visĆ£o geral completa.
(ex:
bencher mock
)
SolicitaƧƵes de Mesclagem
Para capturar regressƵes de desempenho em SolicitaƧƵes de Mesclagem, vocĆŖ precisarĆ” executar seus benchmarks nos SMs. O exemplo abaixo deve ser usado apenas para branches dentro do mesmo repositĆ³rio.
- Atualize o arquivo GitLab CI/CD.
(ex:
.gitlab-ci.yml
) - Crie um trabalho no GitLab CI/CD.
(ex:
benchmark_mr_branch
) - Execute
if
o pipeline foi acionado por ummerge_request_event
. Veja a documentaĆ§Ć£o derules
do GitLab CI/CD e a documentaĆ§Ć£o de variĆ”veis prĆ©-definidas do GitLab CI/CD para uma visĆ£o completa. (ex:rules: if: ...
) - Defina a
image
na qual o trabalho serĆ” executado. Veja a documentaĆ§Ć£o deimage
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: ...
) - Utilize o subcomando CLI
bencher run
para executar seus benchmarks do branch da solicitaĆ§Ć£o de mesclagem. Veja o subcomando CLIbencher run
para uma visĆ£o completa. (ex:bencher run
) - Defina a opĆ§Ć£o
--project
para o slug do Projeto. Veja a documentaĆ§Ć£o de--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 de--token
para mais detalhes. (ex:--token "$BENCHER_API_TOKEN"
) - Defina a opĆ§Ć£o
--branch
para o nome do branch SM usando uma variĆ”vel prĆ©-definida do GitLab CI/CD. Veja a documentaĆ§Ć£o de--branch
para uma visĆ£o completa. (ex:--branch "$CI_COMMIT_REF_NAME"
) - Defina o Ponto de InĆcio para o Branch SM:
- Defina a opĆ§Ć£o
--start-point
para o ponto de inĆcio do Branch SM usando uma variĆ”vel prĆ©-definida do GitLab CI/CD. Veja a documentaĆ§Ć£o de--start-point
para uma visĆ£o completa. (ex:--start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - Defina a opĆ§Ć£o
--start-point-hash
para o hashgit
do ponto de inĆcio do Branch SM usando uma variĆ”vel prĆ©-definida do GitLab CI/CD. Veja a documentaĆ§Ć£o de--start-point-hash
para uma visĆ£o completa. (ex:--start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - Defina o flag
--start-point-clone-thresholds
para clonar os Limiares do ponto de inĆcio. Veja a documentaĆ§Ć£o de--start-point-clone-thresholds
para uma visĆ£o completa. (ex:--start-point-clone-thresholds
) - Defina o flag
--start-point-reset
para sempre redefinir o Branch SM para o ponto de inĆcio. Isso evitarĆ” a deriva de dados de benchmark. Veja a documentaĆ§Ć£o de--start-point-reset
para uma visĆ£o completa. (ex:--start-point-reset
)
- Defina a opĆ§Ć£o
- Defina a opĆ§Ć£o
--testbed
para o nome do Testbed. Isso provavelmente deverĆ” corresponder Ć mĆ”quina selecionada emimage
. Veja a documentaĆ§Ć£o de--testbed
para mais detalhes. (ex:--testbed debian:bullseye
) - Defina o flag
--err
para falhar o comando se um Alerta for gerado. Veja a documentaĆ§Ć£o de--err
para uma visĆ£o completa. (ex:--err
) - Defina a opĆ§Ć£o
--adapter
para Bencher Metric Format JSON (json
) que Ć© gerado porbencher mock
. Veja os adaptadores de harness de benchmark para uma visĆ£o completa. (ex:--adapter json
) - Especifique os argumentos do comando de benchmark.
Veja comando de benchmark para uma visĆ£o completa.
(ex:
bencher mock
)
Para limpar a ramificaĆ§Ć£o do MR apĆ³s o MR ser fechado,
vocĆŖ pode criar um trabalho separado que consulta o estado do MR usando a API do GitLab.
Se o estado for closed
, este trabalho irĆ” arquivar a ramificaĆ§Ć£o do MR usando o comando bencher archive
.
- Atualize o arquivo GitLab CI/CD.
(ex:
.gitlab-ci.yml
) - Crie um trabalho GitLab CI/CD.
(ex:
archive_mr_branch
) - Execute
if
o pipeline foi acionado por ummerge_request_event
. Consulte a documentaĆ§Ć£o derules
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
image
na qual o trabalho serĆ” executado. Consulte a documentaĆ§Ć£o deimage
do GitLab CI/CD para uma visĆ£o geral completa. (ex:image: debian:bullseye
) - Instale o Bencher CLI usando o script de conveniĆŖncia.
(ex:
before_script: curl ...
) - Verifique o estado do MR usando a API do GitLab.
(ex:
before_script: MR_STATE=$(...)
) - Use o subcomando
bencher archive
do CLI para arquivar a ramificaĆ§Ć£o do MR se o estado do MR forclosed
. (ex:bencher archive
) - Defina a opĆ§Ć£o
--project
para o slug do Projeto. Consulte a documentaĆ§Ć£o de--project
para mais detalhes. (ex:--project save-walter-white-1234abcd
) - Defina a opĆ§Ć£o
--token
para a variƔvel de ambiente mascaradaBENCHER_API_TOKEN
. Consulte a documentaĆ§Ć£o de--token
para mais detalhes. (ex:--token "$BENCHER_API_TOKEN"
) - Defina a opĆ§Ć£o
--branch
para o nome da ramificaĆ§Ć£o do MR usando uma variĆ”vel predefinida do GitLab CI/CD. (ex:--branch "$CI_COMMIT_REF_NAME"
)
š° ParabĆ©ns! VocĆŖ aprendeu como usar o Bencher no GitLab CI/CD! š