Cómo usar Bencher en GitLab CI/CD
Dependiendo de su caso de uso, puede configurar el Benchmarking Continuo en GitLab CI/CD para su:
🐰 Asegúrese de haber creado un token de API y configurarlo como una variable enmascarada llamada
BENCHER_API_TOKEN
antes de continuar. Navegue aSu Repo -> Configuración -> CI/CD -> Variables -> Expandir -> Agregar variable
. La clave de la variable debe serBENCHER_API_TOKEN
y el valor de la variable debe ser su token de API. Marque ambas casillasProteger variable
yEnmascarar variable
.
Rama Objetivo
Una piedra angular del Benchmarking Continuo Estadístico es tener una línea base histórica para su rama objetivo. Esta línea base histórica puede utilizarse para detectar regresiones de rendimiento en Solicitudes de Fusión.
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
- Cree un archivo de CI/CD de GitLab.
(ej:
.gitlab-ci.yml
) - Cree un trabajo de CI/CD de GitLab.
(ej:
benchmark_target_branch
) - Ejecute
if
el pipeline fue activado por unpush
hacia la ramamain
. Consulte la documentación derules
de CI/CD de GitLab y la documentación de variables predefinidas de CI/CD de GitLab para una visión completa. (ej:rules: - if: ...
) - Establezca la
image
en la que el trabajo se ejecutará. Consulte la documentación deimage
de CI/CD de GitLab para una visión completa. (ej:image: debian:bullseye
) - Instale el CLI de Bencher usando el script de conveniencia.
(ej:
before_script: ...
) - Utilice el subcomando CLI
bencher run
para ejecutar sus benchmarks de la ramamain
. Consulte el subcomando CLIbencher run
para una visión completa. (ej:bencher run
) - Establezca la opción
--project
al slug del Proyecto. Consulte los docs de--project
para más detalles. (ej:--project save-walter-white-1234abcd
) - Establezca la opción
--token
a la variable de entornoBENCHER_API_TOKEN
enmascarada. Consulte los docs de--token
para más detalles. (ej:--token "$BENCHER_API_TOKEN"
) - Establezca la opción
--branch
al nombre de la Rama. Consulte selección de rama para una visión completa. (ej:--branch main
) - Establezca la opción
--testbed
al nombre del Entorno de Pruebas. Esto probablemente debería coincidir con la máquina seleccionada enimage
. Consulte los docs de--testbed
para más detalles. (ej:--testbed debian:bullseye
) - Establezca la opción
--adapter
al adaptador del arnés de evaluación comparativa deseado. Consulte adaptadores de arneses de evaluación comparativa para una visión completa. (ej:--adapter json
) - Establezca la bandera
--err
para fallar el comando si se genera una Alerta. Consulte Umbral & Alertas para una visión completa. (ej:--err
) - Especifique los argumentos del comando de benchmark.
Consulte comando de benchmark para una visión completa.
(ej:
bencher mock
)
Solicitudes de merge (Merge Requests)
Para detectar regresiones de rendimiento en las Solicitudes de Merge, necesitarás ejecutar tus benchmarks en las MR. El siguiente ejemplo solo debe ser usado para ramas dentro del mismo repositorio.
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
- Crea o actualiza un archivo de GitLab CI/CD.
(ej:
.gitlab-ci.yml
) - Crea un trabajo de GitLab CI/CD.
(ej:
benchmark_mr_branch
) - Ejecuta el trabajo
si
el pipeline fue activado por unmerge_request_event
. Consulta la documentación derules
de GitLab CI/CD y la documentación de variables predefinidas de GitLab CI/CD para un panorama completo. (ej:rules: - if: ...
) - Define la
imagen
en la que se ejecutará el trabajo. Consulta la documentación deimage
de GitLab CI/CD para un panorama completo. (ej:image: debian:bullseye
) - Instala la CLI de Bencher usando el script de conveniencia.
(ej:
before_script: ...
) - Usa el subcomando de la CLI
bencher run
para ejecutar tus benchmarks en la rama de la solicitud de merge. Consulta el subcomando de la CLIbencher run
para un panorama completo. (ej:bencher run
) - Define la opción
--project
con el slug del Proyecto. Consulta la documentación de--project
para más detalles. (ej:--project save-walter-white-1234abcd
) - Define la opción
--token
con la variable de entorno enmascaradaBENCHER_API_TOKEN
. Consulta la documentación de--token
para más detalles. (ej:--token "$BENCHER_API_TOKEN"
) - Define la opción
--branch
con el nombre de la rama de la MR usando una variable predefinida de GitLab CI/CD. Consulta selección de ramas para un panorama completo. (ej:--branch "$CI_COMMIT_REF_NAME"
) - Define la opción
--branch-start-point
con el punto de inicio de la rama objetivo de la MR usando una variable predefinida de GitLab CI/CD. Consulta selección de ramas para un panorama completo. (ej:--branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - Define la opción
--branch-start-point-hash
con el hash del punto de inicio de la rama objetivo de la MR usando una variable predefinida de GitLab CI/CD. Consulta selección de ramas para un panorama completo. (ej:--branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - Define la bandera
--branch-reset
para siempre resetear la rama al punto de inicio. Esto prevendrá la deriva en los datos del benchmark. Consulta selección de ramas para un panorama completo. (ej:--branch-reset
) - Define la opción
--testbed
con el nombre del banco de pruebas. Esto probablemente deberá coincidir con la máquina seleccionada enimage
. Consulta la documentación de--testbed
para más detalles. (ej:--testbed debian:bullseye
) - Define la opción
--adapter
con el adaptador de harness de benchmark deseado. Consulta adaptadores de harness de benchmark para un panorama completo. (ej:--adapter json
) - Define la bandera
--err
para que el comando falle si se genera una Alerta. Consulta Umbrales y Alertas para un panorama completo. (ej:--err
) - Especifica los argumentos del comando del benchmark.
Consulta comando del benchmark para un panorama completo.
(ej:
bencher mock
)
🐰 ¡Felicidades! ¡Has aprendido cómo usar Bencher en GitLab CI/CD! 🎉