Cómo usar Bencher en GitLab CI/CD
Depending on your use case, you can set up Continuous Benchmarking in GitLab CI/CD for your:
Make sure you have created an API token
and set it as a masked variable named BENCHER_API_TOKEN
before continuing on!
Navigate to Your Repo -> Settings -> CI/CD -> Variables -> Expand -> Add variable
.
The variable key should be BENCHER_API_TOKEN
and the variable value should be your API token.
Check both the Protect variable
and Mask variable
boxes.
Rama Objetivo
Una piedra angular de 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.
- 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 disparado por unpush
a la ramamain
. Vea 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: ...
) - Configure la
image
en la que se ejecutará el trabajo. Vea la documentación deimage
de CI/CD de GitLab para una visión completa. (ej:image: debian:bullseye
) - Instale la CLI de Bencher usando el script de conveniencia.
(ej:
before_script: ...
) - Use el subcomando de CLI
bencher run
para ejecutar sus benchmarks de la ramamain
. Vea el subcomandobencher run
de la CLI para una visión completa. (ej:bencher run
) - Configure la opción
--project
al slug del proyecto. Vea los documentos de--project
para más detalles. (ej:--project save-walter-white-1234abcd
) - Configure la opción
--token
a la variable de entorno enmascaradaBENCHER_API_TOKEN
. Vea los documentos de--token
para más detalles. (ej:--token "$BENCHER_API_TOKEN"
) - Configure la opción
--branch
al nombre de la rama. Vea los documentos de--branch
para una visión completa. (ej:--branch main
) - Configure la opción
--testbed
al nombre del Testbed. Esto probablemente deba coincidir con la máquina seleccionada enimage
. Vea los documentos de--testbed
para más detalles. (ej:--testbed debian:bullseye
) - Configure el Umbral para la rama
main
, el Testbeddebian:bullseye
y la Medidalatency
:- Configure la opción
--threshold-measure
a la Medidalatency
incorporada que se genera porbencher mock
. Vea los documentos--threshold-measure
para más detalles. (ej:--threshold-measure latency
) - Configure la opción
--threshold-test
a una prueba t de Student (t_test
). Vea los documentos de--threshold-test
para una visión completa. (ej:--threshold-test t_test
) - Configure la opción
--threshold-max-sample-size
al tamaño de muestra máximo de64
. Vea los documentos de--threshold-max-sample-size
para más detalles. (ej:--threshold-max-sample-size 64
) - Configure la opción
--threshold-upper-boundary
al Límite Superior de0.99
. Vea los documentos de--threshold-upper-boundary
para más detalles. (ej:--threshold-upper-boundary 0.99
) - Configure la bandera
--thresholds-reset
para que solo el Umbral especificado esté activo. Vea los documentos de--thresholds-reset
para una visión completa. (ej:--thresholds-reset
)
- Configure la opción
- Configure la bandera
--err
para que el comando falle si se genera una Alerta. Vea los documentos de--err
para una visión completa. (ej:--err
) - Configure la opción
--adapter
a Bencher Metric Format JSON (json
) que se genera porbencher mock
. Vea adaptadores de benchmark harness para una visión completa. (ej:--adapter json
) - Especifique los argumentos del comando de benchmark.
Vea comando de benchmark para una visión completa.
(ej:
bencher mock
)
Solicitudes de Fusión
Para detectar regresiones de rendimiento en las Solicitudes de Fusión, necesitarás ejecutar tus pruebas de rendimiento en las MRs. El siguiente ejemplo solo debe usarse para ramas dentro del mismo repositorio.
- Actualiza el archivo CI/CD de GitLab.
(ej:
.gitlab-ci.yml
) - Crea un trabajo CI/CD en GitLab.
(ej:
benchmark_mr_branch
) - Ejecuta
if
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 una visión completa. (ej:rules: if: ...
) - Establece la
image
en la que se ejecutará el trabajo. Consulta la documentación deimage
de GitLab CI/CD para una visión completa. (ej:image: debian:bullseye
) - Instala la Bencher CLI utilizando el script de conveniencia.
(ej:
before_script: ...
) - Usa el subcomando CLI
bencher run
para ejecutar tus pruebas de rendimiento de la rama de la solicitud de fusión. Consulta el subcomando CLIbencher run
para una visión completa. (ej:bencher run
) - Configura la opción
--project
al slug del Proyecto. Consulta la documentación de la opción--project
para más detalles. (ej:--project save-walter-white-1234abcd
) - Configura la opción
--token
a la variable de entorno enmascaradaBENCHER_API_TOKEN
. Consulta la documentación de la opción--token
para más detalles. (ej:--token "$BENCHER_API_TOKEN"
) - Configura la opción
--branch
al nombre de la rama MR utilizando una variable predefinida de GitLab CI/CD. Consulta la documentación de la opción--branch
para una visión completa. (ej:--branch "$CI_COMMIT_REF_NAME"
) - Configura el Punto de Inicio para la Rama MR:
- Configura la opción
--start-point
al punto de inicio de la Rama MR utilizando una variable predefinida de GitLab CI/CD. Consulta la documentación de la opción--start-point
para una visión completa. (ej:--start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - Configura la opción
--start-point-hash
para el hashgit
del punto de inicio de la Rama MR utilizando una variable predefinida de GitLab CI/CD. Consulta la documentación de la opción--start-point-hash
para una visión completa. (ej:--start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - Activa el indicador
--start-point-clone-thresholds
para clonar los Umbrales desde el punto de inicio. Consulta la documentación de la opción--start-point-clone-thresholds
para una visión completa. (ej:--start-point-clone-thresholds
) - Activa el indicador
--start-point-reset
para siempre restablecer la Rama MR al punto de inicio. Esto evitará la deriva de datos de referencia. Consulta la documentación de la opción--start-point-reset
para una visión completa. (ej:--start-point-reset
)
- Configura la opción
- Configura la opción
--testbed
al nombre del Testbed. Esto probablemente debería coincidir con la máquina seleccionada enimage
. Consulta la documentación de la opción--tested
para más detalles. (ej:--testbed debian:bullseye
) - Activa el indicador
--err
para fallar el comando si se genera una Alerta. Consulta la documentación de la opción--err
para una visión completa. (ej:--err
) - Configura la opción
--adapter
al Formato Métrico de Bencher JSON (json
) que es generado porbencher mock
. Consulta los adaptadores de prueba de referencia para una visión completa. (ej:--adapter json
) - Especifica los argumentos del comando de referencia.
Consulta la documentación de comando de referencia para una visión completa.
(ej:
bencher mock
)
Para limpiar la rama MR después de que su MR esté cerrado,
puedes crear un trabajo separado que consulte el estado del MR utilizando la API de GitLab.
Si el estado es closed
, este trabajo archivará la rama MR utilizando el comando bencher archive
.
- Actualiza el archivo de GitLab CI/CD.
(ej:
.gitlab-ci.yml
) - Crea un trabajo de GitLab CI/CD.
(ej:
archive_mr_branch
) - Ejecútalo
si
el pipeline fue desencadenado por unmerge_request_event
. Consulta la documentación de reglas de GitLab CI/CD y variables predefinidas de GitLab CI/CD para una visión completa. (ej:rules: if: ...
) - Establece la
image
en la que se ejecutará el trabajo. Consulta la documentación de imagen de GitLab CI/CD para una visión completa. (ej:image: debian:bullseye
) - Instala la CLI de Bencher usando el script de conveniencia.
(ej:
before_script: curl ...
) - Verifica el estado del MR usando la API de GitLab.
(ej:
before_script: MR_STATE=$(...)
) - Utiliza el subcomando
bencher archive
para archivar la rama MR si el estado del MR esclosed
. (ej:bencher archive
) - Establece la opción
--project
al slug del Proyecto. Consulta la documentación de--project
para más detalles. (ej:--project save-walter-white-1234abcd
) - Establece la opción
--token
como la variable de entorno enmascaradaBENCHER_API_TOKEN
. Consulta la documentación de--token
para más detalles. (ej:--token "$BENCHER_API_TOKEN"
) - Establece la opción
--branch
al nombre de la rama MR utilizando una variable predefinida de GitLab CI/CD. (ej:--branch "$CI_COMMIT_REF_NAME"
)
🐰 ¡Felicidades! ¡Has aprendido cómo usar Bencher en GitLab CI/CD! 🎉