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 a Su Repo -> Configuración -> CI/CD -> Variables -> Expandir -> Agregar variable. La clave de la variable debe ser BENCHER_API_TOKEN y el valor de la variable debe ser su token de API. Marque ambas casillas Proteger variable y Enmascarar 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
  1. Cree un archivo de CI/CD de GitLab. (ej: .gitlab-ci.yml)
  2. Cree un trabajo de CI/CD de GitLab. (ej: benchmark_target_branch)
  3. Ejecute if el pipeline fue activado por un push hacia la rama main. Consulte la documentación de rules 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: ...)
  4. Establezca la image en la que el trabajo se ejecutará. Consulte la documentación de image de CI/CD de GitLab para una visión completa. (ej: image: debian:bullseye)
  5. Instale el CLI de Bencher usando el script de conveniencia. (ej: before_script: ...)
  6. Utilice el subcomando CLI bencher run para ejecutar sus benchmarks de la rama main. Consulte el subcomando CLI bencher run para una visión completa. (ej: bencher run)
  7. Establezca la opción --project al slug del Proyecto. Consulte los docs de --project para más detalles. (ej: --project save-walter-white-1234abcd)
  8. Establezca la opción --token a la variable de entorno BENCHER_API_TOKEN enmascarada. Consulte los docs de --token para más detalles. (ej: --token "$BENCHER_API_TOKEN")
  9. Establezca la opción --branch al nombre de la Rama. Consulte selección de rama para una visión completa. (ej: --branch main)
  10. Establezca la opción --testbed al nombre del Entorno de Pruebas. Esto probablemente debería coincidir con la máquina seleccionada en image. Consulte los docs de --testbed para más detalles. (ej: --testbed debian:bullseye)
  11. 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)
  12. Establezca la bandera --err para fallar el comando si se genera una Alerta. Consulte Umbral & Alertas para una visión completa. (ej: --err)
  13. 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
  1. Crea o actualiza un archivo de GitLab CI/CD. (ej: .gitlab-ci.yml)
  2. Crea un trabajo de GitLab CI/CD. (ej: benchmark_mr_branch)
  3. Ejecuta el trabajo si el pipeline fue activado por un merge_request_event. Consulta la documentación de rules de GitLab CI/CD y la documentación de variables predefinidas de GitLab CI/CD para un panorama completo. (ej: rules: - if: ...)
  4. Define la imagen en la que se ejecutará el trabajo. Consulta la documentación de image de GitLab CI/CD para un panorama completo. (ej: image: debian:bullseye)
  5. Instala la CLI de Bencher usando el script de conveniencia. (ej: before_script: ...)
  6. 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 CLI bencher run para un panorama completo. (ej: bencher run)
  7. 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)
  8. Define la opción --token con la variable de entorno enmascarada BENCHER_API_TOKEN. Consulta la documentación de --token para más detalles. (ej: --token "$BENCHER_API_TOKEN")
  9. 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")
  10. 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")
  11. 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")
  12. 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)
  13. Define la opción --testbed con el nombre del banco de pruebas. Esto probablemente deberá coincidir con la máquina seleccionada en image. Consulta la documentación de --testbed para más detalles. (ej: --testbed debian:bullseye)
  14. 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)
  15. Define la bandera --err para que el comando falle si se genera una Alerta. Consulta Umbrales y Alertas para un panorama completo. (ej: --err)
  16. 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! 🎉


Continúa: Visión General del Benchmarking ➡

🤖 Este documento fue generado automáticamente por OpenAI GPT-4. Puede que no sea exacto y contenga errores. Si encuentra algún error, abra un problema en GitHub.


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