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 Fusión

Para detectar la regresión de rendimiento en las Solicitudes de Fusión, necesitarás ejecutar tus pruebas de referencia en las MRs. El siguiente ejemplo solo debe usarse 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" \
--testbed debian:bullseye \
--adapter json \
--err \
bencher mock
  1. Crear o actualizar un archivo de CI/CD de GitLab. (ej: .gitlab-ci.yml)
  2. Crear un trabajo de CI/CD de GitLab. (ej: benchmark_mr_branch)
  3. Ejecutar if el pipeline fue disparado por un merge_request_event. Consulta 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. Establecer la image en la que el trabajo se ejecutará. Consulta la documentación de image de CI/CD de GitLab para una visión completa. (ej: image: debian:bullseye)
  5. Instala el CLI de Bencher usando el script de conveniencia. (ej: before_script: ...)
  6. Usa el subcomando CLI bencher run para ejecutar tus pruebas de rendimiento de la rama de la solicitud de fusión. Consulta el subcomando CLI bencher run para una visión completa. (ej: bencher run)
  7. Establece la opción --project al slug del Proyecto. Consulta los docs de --project para más detalles. (ej: --project save-walter-white-1234abcd)
  8. Establece la opción --token a la variable de entorno BENCHER_API_TOKEN enmascarada. Consulta los docs de --token para más detalles. (ej: --token "$BENCHER_API_TOKEN")
  9. Establece la opción --branch al nombre de la rama MR usando una variable predefinida de CI/CD de GitLab. Consulta selección de rama para una visión completa. (ej: --branch "$CI_COMMIT_REF_NAME")
  10. Establece la opción --branch-start-point al punto de inicio de la Rama objetivo de MR usando una variable predefinida de CI/CD de GitLab. Consulta selección de rama para una visión completa. (ej: --branch-start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME")
  11. Establece la opción --branch-start-point-hash al hash del punto de inicio de la Rama objetivo de MR usando una variable predefinida de CI/CD de GitLab. Consulta selección de rama para una visión completa. (ej: --branch-start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA")
  12. Establece la opción --testbed al nombre del Entorno de Pruebas. Esto probablemente debería coincidir con la máquina seleccionada en image. Consulta los docs de --tested para más detalles. (ej: --testbed debian:bullseye)
  13. Establece la opción --adapter al adaptador deseado del banco de pruebas. Consulta adaptadores de banco de pruebas para una visión completa. (ej: --adapter json)
  14. Establece la bandera --err para fallar el comando si se genera una Alerta. Consulta Umbrales & Alertas para una visión completa. (ej: --err)
  15. Especificar los argumentos del comando de benchmark. Consulta comando de benchmark para una visión completa. (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